python flv转mp4(python mp4转gif)

python flv转mp4,原文标题:这两个Python库,轻而易举就能实现MP4与GIF格式互转,太好用了。mp4转gif的原理其实很简单,就是将mp4文件的帧

python flv转mp4,原文标题:这两个Python库,轻而易举就能实现MP4与GIF格式互转,太好用了。

mp4转gif的原理其实很简单,就是将mp4文件的帧读出来,然后合并成一张gif图。用cv2和PIL这两个库就可以轻松搞定 。

import globimport cv2from PIL import Imagedef 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 = 1def 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 flv转mp4(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)

实现逻辑是用enumerate函数过滤取偶数张图片来合成,最小大小从3.9M压缩到2M。

写完这个代码后,发现还有另一个牛逼的库moviepy,2行代码就可以搞定;

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

moviepy把实现细节已经封装非常简约了,然后提供了一大堆参数可以让开发者自行配置。但使用moviepy转的文件有9M,我相信可以用参数来优化调整。

python flv转mp4(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")

原文:https://developer.51cto.com/article/703676.html

本文《python flv转mp4(python mp4转gif)》由网赚联盟( wangzhuan.org.cn )整理或原创,感谢您的阅读。

随机文章

SEO教程
搜素引擎算法
关键词排名优化
网站内容优化
SEO小小课堂网
站长导航
搜素引擎算法
关键词排名优化

百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:Python资源站,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/600992.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注