前回、公式アカウントで記事を書いたときに、公式アカウントに動画ファイルを入れるのが面倒で、非常に小さな動画を動画としてプラットフォームにアップロードする際に審査が必要になるという問題が発生しました。再生すると GIF ほど単純ではありませんでした。
そこで、mp4 を gif に変換するツールを見つけたいと思いました。ネットで検索すると、オンラインツールはたくさんありますが、広告が必要なものや、最初にQRコードをスキャンする必要があるものなど、方法はさまざまです。海外のウェブサイトのほうが優れていますが、それほどトリックはありません。
この種の問題は Python で間違いなく処理できると思いますが、結局のところ、全能の Python は子供を持たないこと以外は何でもできます。このようにして、後でオンラインツールにして、自分にとって便利で、他の人も使用できるようにします。
mp4 を gif に変換する原理は実際には非常に簡単です。つまり、mp4 ファイルのフレームを読み取り、それらを gif に結合します。 cv2 と PIL の 2 つのライブラリを使用すると、これを簡単に実行できます。
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")
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)
def mp4_to_gif2(): clip = VideoFileClip("demo.mp4") clip.write_gif("output2.gif")
def convert_gif_to_mp4(): import moviepy.editor as mp clip = mp.VideoFileClip("demo.gif") clip.write_videofile("output.mp4")
以上がPython を使用して MP4 および GIF 形式を変換するのは非常に簡単です。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。