【发布时间】:2016-12-05 19:07:19
【问题描述】:
我有一个使用来自 opencv 的视频编写器的工作 python 脚本。
来源https://gist.github.com/stanchiang/b4e4890160a054a9c1d65f9152172600
如果我接收一个文件,无论我是简单地将视频帧传递给编写器(有效地复制文件)还是我尝试编辑帧,文件总是更大。我希望它不比原版大(因为如果你阅读我的脚本,我会模糊很多东西)。
在检查了他们的元数据后,ffprobe -v quiet -print_format json -show_format -show_streams inputFile.mp4 我注意到新文件的比特率比以前高 5.5 倍以上。
来源https://www.diffchecker.com/8r2syeln
由于比特率是文件大小的一个重要决定因素,我想知道是否
- 我可以通过视频编写器硬编码新文件所需的比特率
- 是否出于某种原因需要大幅提高比特率
【问题讨论】:
-
您可能想切换到 FFmpeg,因为那里对所有视频参数的控制非常好,而且根据我的经验,输出的比特率不会从输入改变。
-
不能一直切换对吧?该脚本使用 opencv 算法逐帧编辑视频。有没有办法可以使用 ffmpeg 逐帧写入新视频?
-
@stanley 否。您方法的唯一方法是使用 OpenCV 通过生成所有帧来完全编写视频,然后在完成后使用 FFMPEG 通过更改比特率来压缩视频.但是,可以使用管道直接将 RGB 数据发送到 FFMPEG,但不使用 OpenCV。
-
@rayryeng 如果我可以将 rgb 数据发送到 ffmpeg,那么是否有办法将我的 opencv 编辑帧转换为 rgb 数据以供 ffmpeg 使用?这段代码看起来如何?
标签: python opencv video-processing