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