2012-09-12 50 views
2

我有许多不同格式的视频文件(主要是avi)。例如,一些相关的线从ffprobe将任何视频转换为iPhone - 转码逻辑/算法?

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)什么可以将它们转换为iPhone的ffmpeg

随着谷歌搜索,我发现了许多不同的ffmpeg配置文件,但所有的配置文件是“静态”,例如,将视频转换为相同的分辨率,这可能不是正确的方式,因为我有许多不同的视频分辨率与许多不同的比特率。 (这也适用于音频)。

我可以写脚本 - 但需要一个基本问题的帮助。

我需要帮助算法如何计算ffmpeg参数从上述ffprobe结果的值。例如。当有视频704x544和845kb/s和另一个较小的尺寸为640x480但3200kb/s比特率的视频 - 如何在脚本中计算ffmpeg的“正确值”?

什么是正确的算法/逻辑转码为所需的设备的视频?(在我的情况下iPhone)

如果有人照顾,我ffmpeg重新编译与“非自由”的编解码器,并mencoder(从mplayer包)也。

第二:在avi容器中有很多视频已经是mpeg4格式。如何确定“最快”的转换配置文件?意思是一个配置文件,其中ffmpeg将只执行较少可能的计算,因此可能会保持不变:格式mpeg4,大小,比特率​​和“only”将更改容器格式。这可能吗?

我读了很多ffmpeg SO问题,但没有找到答案 - 也许我错过了什么。有人能指点我一些好文件吗?

回答

0

您是否尝试过使用gstreamer?如果是这样,你可以运行命令行gst-launch来自动解码任何输入文件,然后调整为你需要的任何格式,然后重新编码并重新复制到一个mov文件中。确切的行取决于音频的存在/不存在,以及用于编写.mov文件的具体编解码器。

一个例子重新编码XYZ - > ABC.mov,没有音响,为320×240大小调整和H263编码:

gst-launch filesrc location=XYZ ! decodebin2 ! ffmpegcolorspace ! videoscale add-borders=true ! video/x-raw-yuv, width=320, height=240 ! ffmpegcolorspace ! ffenc_h263 ! qtmux ! filesink location=ABC.mov 
+1

关于什么的我问的是excatly一下:__then调整到你need__任何格式。当你有10000个文件时,不可能手动测试它们 - 需要一些逻辑(算法)如何确定给定文件的BEST格式。无论如何谢谢你的回答。 ;) – cajwine