我有很多不同格式的视频文件(主要是 avi)。例如,一些相关行来自ffprobe
:
Duration: 02:27:14.70, start: 0.000000, bitrate: 664 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 608x256 [PAR 1:1 DAR 19:8], 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0.1: Audio: mp3, 44100 Hz, stereo, s16, 96 kb/s
Duration: 00:20:51.84, start: 0.000000, bitrate: 3286 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 640x480 [PAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s
Duration: 01:26:01.84, start: 0.000000, bitrate: 845 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 704x544 [PAR 1:1 DAR 22:17], 25 fps, 25 tbr, 25 tbn, 30k tbc
Stream #0.1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s
Duration: 01:42:25.68, start: 0.000000, bitrate: 952 kb/s
Stream #0.0: Video: h264 (High), yuv420p, 600x244 [PAR 1:1 DAR 150:61], 25 fps, 25 tbr, 25 tbn, 50 tbc
Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 112 kb/s
如您所见,比特率、视频大小、编解码器各不相同。想要编写一个脚本(bash,perl),将它们转换为带有ffmpeg
.
通过谷歌搜索,我发现了许多不同的 ffmpeg 配置文件,但所有配置文件都是“静态的”,例如将视频转换为相同的分辨率,这可能不是正确的方法,因为我有许多不同的视频分辨率和许多不同的比特率。(这也适用于音频)。
我能够编写脚本 - 但需要一个基本问题的帮助。
我需要有关如何根据ffmpeg
上述ffprobe
结果计算参数值的算法帮助。例如,当有 704x544 和 845kb/s 的视频以及另一个尺寸较小的 640x480 但比特率为 3200kb/s 的视频时 - 如何计算ffmpeg
脚本中的“正确值”?
为所需设备转码视频的正确算法/逻辑是什么?(在我的情况下是 iPhone)
如果有人关心,我已经用“非自由”编解码器重新编译了 ffmpeg,并且也有 mencoder(来自 mplayer 包)。
第二:在 avi 容器中已经有许多 mpeg4 格式的视频。如何确定“最快”的转换配置文件?意味着一个配置文件,其中ffmpeg
只会进行不太可能的计算,因此可能会保持原样:mpeg4 格式、大小、比特率和“仅”会改变容器格式。这可能吗?
我读了很多ffmpeg
SO 问题,但没有找到答案 - 也许我错过了一些东西。有人可以指点我一些好的文件吗?