>백엔드 개발 >파이썬 튜토리얼 >Python을 사용하여 MP4 및 GIF 형식을 변환하는 것은 매우 쉽습니다!

Python을 사용하여 MP4 및 GIF 형식을 변환하는 것은 매우 쉽습니다!

王林
王林앞으로
2023-04-12 19:58:141997검색

저번에 공식 계정에 글을 썼을 때, 공식 계정에 영상 파일을 넣는 것이 너무 번거로웠는데, 영상으로 올릴 때 플랫폼에서 검토를 해야 했어요. GIF만큼 직접적이지는 않았습니다.

그래서 mp4를 gif로 변환하는 도구를 찾고 싶었습니다. 온라인 검색 후 다양한 온라인 도구가 있지만 그 중 일부는 광고가 필요하고 다른 도구는 먼저 QR 코드를 스캔해야 합니다. 외국 사이트가 더 좋은데, 트릭이 별로 없어요.

이런 문제는 확실히 파이썬이 처리할 수 있을 것 같아요. 결국 전능한 파이썬은 아이를 낳지 않는 것 빼고는 다 할 수 있어요. 이런 식으로 나중에 나에게도 편리하고 다른 사람들도 사용할 수 있는 온라인 도구로 만들겠습니다.

mp4를 gif로 변환하는 원리는 실제로 매우 간단합니다. 즉, mp4 파일의 프레임을 읽은 다음 이를 gif로 병합하는 것입니다. 두 개의 라이브러리 cv2 및 PIL을 사용하면 쉽게 수행할 수 있습니다.

import glob

import cv2
from PIL import Image


def convert_mp4_to_jpgs(input_file):
# 先将mp4文件的所有帧读取出保存为图片
video_capture = cv2.VideoCapture(input_file)
still_reading, image = video_capture.read()
frame_count = 0
while still_reading:
cv2.imwrite(f"output/frame_{frame_count:03d}.jpg", image)
# read next image
still_reading, image = video_capture.read()
frame_count += 1


def convert_images_to_gif(output_file):
# 读取目录下图片,用Pillow模块的Image和所有图片合并
# 成一张gif
images = glob.glob(f"output/*.jpg")
images.sort()
frames = [Image.open(image) for image in images]
frame_one = frames[0]
frame_one.save(output_file, format="GIF", append_images=frames[1:],
 save_all=True, duration=40, loop=0)


def convert_mp4_to_gif(input_file, output_file):
convert_mp4_to_jpgs(input_file)
convert_images_to_gif(output_file)


if __name__ == "__main__":
convert_mp4_to_gif("demo.mp4", "output.gif")

실행이 완료된 후 gif 파일의 크기가 급격히 증가한 것으로 나타났습니다.

Python을 사용하여 MP4 및 GIF 형식을 변환하는 것은 매우 쉽습니다!

프레임 수를 줄여 gif 크기를 최적화할 수 있습니다. 동영상의 프레임 수는 총 60개입니다. 30개 프레임만 촬영하면 크기가 절반으로 줄어듭니다.

frame_one.save(output_file, format="GIF", append_images=[f for i, f in enumerate(frames[1:]) if i % 2 == 0],
 save_all=True, duration=40, loop=0)

구현 로직은 열거 기능을 사용하여 짝수 사진을 필터링하여 합성하는 것입니다. 3.9M ~ 2M.

이 코드를 작성한 후, 단 두 줄의 코드로 수행할 수 있는 또 다른 멋진 라이브러리인 moviepy가 있다는 것을 발견했습니다.

def mp4_to_gif2():
clip = VideoFileClip("demo.mp4")
clip.write_gif("output2.gif")

moviepy는 구현 세부 사항을 매우 간단한 방법으로 캡슐화한 다음 많은 기능을 제공합니다. 개발자가 직접 구성할 수 있는 매개변수입니다. 하지만 moviepy를 사용하여 변환한 파일은 9M이므로 매개변수를 사용하여 최적화하고 조정할 수 있다고 생각합니다.

Python을 사용하여 MP4 및 GIF 형식을 변환하는 것은 매우 쉽습니다!

Python 생태계에는 온갖 종류의 바퀴가 있다는 것을 인정해야 합니다. 할 수 없는 것은 없고 찾을 수 없는 것만 있습니다.

물론, gif를 다시 MP4 형식으로 변환할 수도 있습니다. 예를 들어 재미있는 gif를 보면 mp4로 변환하여 짧은 비디오 플랫폼에 올리면 인기를 얻을 수도 있습니다.

def convert_gif_to_mp4():
import moviepy.editor as mp
clip = mp.VideoFileClip("demo.gif")
clip.write_videofile("output.mp4")

마지막으로 운영에 대해 조금 아시는 분이라면 도구로 만들어 온라인에 걸어두어 팬들의 관심을 끄는 유물이 된다면 좋지 않을까요?

위 내용은 Python을 사용하여 MP4 및 GIF 형식을 변환하는 것은 매우 쉽습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제