• 问题反馈可发送邮件到stubbornhuang@qq.com

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 工资「喂饱肚子」,副业「养活灵魂」!

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

python – 减少opencv-python保存的视频文件大小

Python 发布于2025-02-17 阅读 1,173次 0次评论 0次点赞 本文共1151个字,阅读需要3分钟。

1 减少opencv-python输出MP4视频时的文件大小

几乎每个人都经常使用以下代码将经过某些处理的视频帧保存为MP4

video_writer_cap = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (width, height))
video_writer_cap = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*'xvid'), fps, (width, height))

上述代码可以正确的将视频帧保存为mp4视频,但是其视频编码并不是h264,所以保存之后的视频往往很大,所以我们尝试使用以下代码进行替代

video_writer_cap = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*'avc1'), fps, (width, height))

这种方法保存后的视频编码是h264,并且大幅减少了输出视频大小,但是这还不是最优解。

1.1 使用moviepy减少输出MP4视频时的文件大小

最近一次偶然的机会,我使用了moviepy这个库将一个视频的编码转换为MP4,发现moviepy输出的视频比

video_writer_cap = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*'avc1'), fps, (width, height))

这种方式更小,并且质量上并没有任何区别,使用的是以下代码

from moviepy.editor import VideoFileClip

def convert_to_h264(input_video_path):
    if not os.path.exists(input_video_path):
        raise Exception(f'{input_video_path} is not exist')

    # 在output_video_path修改名称,文件名加上moviepy_前缀
    new_output_video_path = input_video_path.replace('.mp4', '_h264.mp4')

    # Load the input video
    video_clip = VideoFileClip(input_video_path)

    # Write the output video with H.264 encoding
    video_clip.write_videofile(new_output_video_path, codec='libx264')

原因可能是opencv内部的h264编码实现并没有采用ffmpeg的标准实现?

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:python – 减少opencv-python保存的视频文件大小

原文链接:https://www.stubbornhuang.com/3123/

发布于:2025年02月17日 19:08:08

修改于:2025年02月17日 19:08:08

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
Python - 发送bark消息到服务器
Python
下一篇
Python - 修复cupy.cuda.compile_with_cache deprecated错误
Python
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号