3

我有一个 MP4 文件,它可以在每个使用 HTML5 或 Flash 后备(使用 mediaelement.js)的浏览器上播放。我还有一系列额外的视频文件,我想“匹配”一个持续播放的文件,但我无法匹配 ffmpeg 设置,因此它会生成一个类似的文件。我使用 ffprobe 并在成功播放的文件上得到以下结果:

ffprobe version N-53616-g7a2edcf Copyright (c) 2007-2013 the FFmpeg developers
built on May 29 2013 01:21:08 with gcc 4.7.3 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
enable-libxvid --enable-zlib
 libavutil      52. 34.100 / 52. 34.100
 libavcodec     55. 12.102 / 55. 12.102
 libavformat    55.  7.100 / 55.  7.100
 libavdevice    55.  1.101 / 55.  1.101
 libavfilter     3. 72.100 /  3. 72.100
 libswscale      2.  3.100 /  2.  3.100
 libswresample   0. 17.102 /  0. 17.102
 libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MyFile.mp4':
 Metadata:
  major_brand     : M4V
  minor_version   : 1
  compatible_brands: M4V mp42isom
  creation_time   : 2013-05-29 16:08:29
Duration: 00:01:58.10, start: 0.000000, bitrate: 1155 kb/s
 Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 854x480 [SAR 1:1 DAR 427:240], 995 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
Metadata:
  creation_time   : 2013-05-29 16:08:29
  handler_name    : Mainconcept MP4 Video Media Handler
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 157 kb/s
Metadata:
  creation_time   : 2013-05-29 16:08:29
  handler_name    : Mainconcept MP4 Sound Media Handler

按照我在网上找到的一些指南,我正在使用以下 ffmpeg 设置:

ffmpeg -i {input file name} -y -acodec aac -ac 2 -strict experimental -ab 64k -s 320x240 -vcodec libx264 -pix_fmt yuv420p -preset slow -profile:v baseline -level 30 -maxrate 300k -bufsize 600k -b:v 300k -f mp4 -threads 0 -movflags +faststart {output file name}

该命令产生以下输出:

ffmpeg -i "testin.mp4" -y -acodec aac -ac 2 -strict experimental -ab 64k -s 320x240 -vcodec libx264 -pix_fmt yuv420p -preset slow-profile:v baseline -level 30 -maxrate 300k -bufsize 600k -b:v 300k -f mp4 -threads 0 -movflags +faststart testout.mp4

ffmpeg version N-53616-g7a2edcf Copyright (c) 2000-2013 the FFmpeg developers  built on May 29 2013 01:21:08 with gcc 4.7.3 (GCC)  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 34.100 / 52. 34.100
  libavcodec     55. 12.102 / 55. 12.102
  libavformat    55.  7.100 / 55.  7.100
  libavdevice    55.  1.101 / 55.  1.101
  libavfilter     3. 72.100 /  3. 72.100
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'testin.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    creation_time   : 2013-10-01 17:11:42
  Duration: 00:04:33.75, start: 0.000000, bitrate: 725 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 596 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
    Metadata:
      creation_time   : 2013-10-01 17:11:42
      handler_name    : ?Mainconcept Video Media Handler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
    Metadata:
      creation_time   : 2013-10-01 17:11:42
      handler_name    : #Mainconcept MP4 Sound Media Handler
[libx264 @ 0000000000358160] using SAR=1/1
[libx264 @ 0000000000358160] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2AVX
[libx264 @ 0000000000358160] profile Constrained Baseline, level 3.0
[libx264 @ 0000000000358160] 264 - core 133 r2334 a3ac64b - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=0 ref=5 deblock=1:0:0 analyse=0x1:0x111 me=umh subme=8 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=cbr mbtree=1 bitrate=300 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=300 vbv_bufsize=600 nal_hrd=none ip_ratio=1.40 aq=1:1.00

Output #0, mp4, to 'testout.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    encoder         : Lavf55.7.100
   Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=-1--1, 300 kb/s, 30k tbn, 29.97 tbc
    Metadata:
      creation_time   : 2013-10-01 17:11:42
      handler_name    : ?Mainconcept Video Media Handler
    Stream #0:1(eng): Audio: aac ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 64 kb/s
    Metadata:
      creation_time   : 2013-10-01 17:11:42
      handler_name    : #Mainconcept MP4 Sound Media Handler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #0:1 -> #0:1 (aac -> aac)
Press [q] to stop, [?] for help
frame=  283 fps=0.0 q=21.0 size=     329kB time=00:00:09.30 bitrate= 289.9kbits/
frame=  565 fps=564 q=20.0 size=     760kB time=00:00:18.64 bitrate= 333.7kbits/
frame=  846 fps=564 q=21.0 size=    1179kB time=00:00:28.20 bitrate= 342.5kbits/
frame= 1123 fps=561 q=22.0 size=    1603kB time=00:00:37.33 bitrate= 351.7kbits/
frame= 1376 fps=550 q=25.0 size=    1986kB time=00:00:45.69 bitrate= 356.1kbits/
frame= 1651 fps=550 q=22.0 size=    2377kB time=00:00:55.01 bitrate= 353.9kbits/
frame= 1914 fps=546 q=24.0 size=    2776kB time=00:01:03.70 bitrate= 357.0kbits/
frame= 2181 fps=545 q=24.0 size=    3163kB time=00:01:12.70 bitrate= 356.4kbits/
frame= 2443 fps=543 q=24.0 size=    3566kB time=00:01:21.38 bitrate= 358.9kbits/
frame= 2702 fps=540 q=24.0 size=    3939kB time=00:01:30.04 bitrate= 358.4kbits/
frame= 2965 fps=539 q=24.0 size=    4338kB time=00:01:38.73 bitrate= 359.9kbits/
frame= 3236 fps=539 q=23.0 size=    4731kB time=00:01:48.03 bitrate= 358.7kbits/
frame= 3505 fps=539 q=24.0 size=    5130kB time=00:01:56.75 bitrate= 360.0kbits/
frame= 3765 fps=537 q=26.0 size=    5521kB time=00:02:05.41 bitrate= 360.6kbits/
frame= 4036 fps=538 q=24.0 size=    5905kB time=00:02:14.59 bitrate= 359.4kbits/
frame= 4326 fps=540 q=24.0 size=    6343kB time=00:02:24.10 bitrate= 360.6kbits/
frame= 4606 fps=542 q=27.0 size=    6783kB time=00:02:33.49 bitrate= 362.0kbits/
frame= 4886 fps=543 q=24.0 size=    7168kB time=00:02:42.81 bitrate= 360.7kbits/
frame= 5166 fps=544 q=27.0 size=    7616kB time=00:02:52.13 bitrate= 362.5kbits/
frame= 5456 fps=545 q=24.0 size=    8020kB time=00:03:01.84 bitrate= 361.3kbits/
frame= 5736 fps=546 q=27.0 size=    8458kB time=00:03:11.18 bitrate= 362.4kbits/
frame= 6001 fps=545 q=30.0 size=    8849kB time=00:03:20.17 bitrate= 362.1kbits/
frame= 6264 fps=544 q=27.0 size=    9233kB time=00:03:28.85 bitrate= 362.2kbits/
frame= 6526 fps=544 q=26.0 size=    9611kB time=00:03:37.55 bitrate= 361.9kbits/
frame= 6793 fps=543 q=26.0 size=   10006kB time=00:03:46.51 bitrate= 361.9kbits/
frame= 7076 fps=544 q=24.0 size=   10410kB time=00:03:55.86 bitrate= 361.6kbits/
frame= 7355 fps=544 q=25.0 size=   10835kB time=00:04:05.20 bitrate= 362.0kbits/
frame= 7615 fps=543 q=27.0 size=   11236kB time=00:04:13.88 bitrate= 362.5kbits/
frame= 7883 fps=543 q=25.0 size=   11625kB time=00:04:22.89 bitrate= 362.3kbits/
frame= 8166 fps=544 q=21.0 size=   12040kB time=00:04:32.31 bitrate= 362.2kbits/
Starting second pass: moving header on top of the file
frame= 8203 fps=540 q=-1.0 Lsize=   12417kB time=00:04:33.74 bitrate= 371.6kbits/s
video:10035kB audio:2150kB subtitle:0 global headers:0kB muxing overhead 1.901929%
[libx264 @ 0000000000358160] frame I:41    Avg QP:14.13  size: 18349
[libx264 @ 0000000000358160] frame P:8162  Avg QP:17.24  size:  1167
[libx264 @ 0000000000358160] mb I  I16..4: 24.8%  0.0% 75.2%
[libx264 @ 0000000000358160] mb P  I16..4:  0.4%  0.0%  0.3%  P16..4: 29.1%  6.4%  3.2%  0.0%  0.0%    skip:60.7%
[libx264 @ 0000000000358160] coded y,uvDC,uvAC intra: 66.1% 74.1% 53.1% inter: 15.3% 20.2% 4.0%
[libx264 @ 0000000000358160] i16 v,h,dc,p: 23% 21% 11% 45%
[libx264 @ 0000000000358160] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21% 25% 14%  6%  7% 7%  7%  6%  7%
[libx264 @ 0000000000358160] i8c dc,h,v,p: 43% 28% 19% 10%
[libx264 @ 0000000000358160] ref P L0: 78.4% 12.6%  4.9%  2.4%  1.7%
[libx264 @ 0000000000358160] kb/s:300.33

上述咒语的一个问题是,在 iPad 和 iPhone 以及一些 Android 平板电脑上,您听到的只是没有视频的音频。但是上面列出的文件(ffprobe 的内容)没有这个问题,它可以在 iPad、iPhone、Android 平板电脑上播放。我研究了“音频,没有视频”的原因,并且建议到处都是。但是,ffprobe 中列出的文件可以播放,所以如果我可以匹配 ffprobe 描述的所有其他视频的设置,它们也应该可以一致地播放。我的挑战是使用 ffmpeg 匹配 ffprobe 设置,我在 ffprobe 中看到的内容与 ffmpeg 中的相应设置之间似乎没有一对一的匹配(一个不错的实用程序是让 ffprobe 输出可以用于创建类似格式的文件)。

我浏览了 ffprobe 文档,但找不到任何可以生成可用作 ffmpeg 输入的格式的内容。建议?

4

1 回答 1

5

这最终通过反复试验解决,而不是找到可以帮助我将 ffprobe(或 MediaInfo)输出映射到 ffmpeg 参数的资源。似乎适用于支持 mp4 视频的浏览器和设备的最终咒语是:

ffmpeg -i {输入文件名} -codec:v libx264 -profile:v main -preset slow -b:v 300k -maxrate 300k -bufsize 600k -vf scale=320:-1 -threads 0 -acodec aac -ac 2 -严格实验 -ab 64k -y {输出文件名}

我需要在某个时候更彻底地浏览 ffmpeg 文档,因为有一堆旋钮和杠杆可以推动和拉入该软件,但现在,这可以解决眼前的问题(我很想找到一个工具将使用 ffprobe 输出创建一个 ffmpeg 命令,该命令将生成一个类似类型的文件)。

于 2013-11-08T17:08:02.417 回答