FFmpeg生成空文件


2

我在OSX Lion上遇到ffmpeg问题。我试图转换mpeg文件,输出始终是一个大小为400kb左右的文件..

命令是:

 ffmpeg -i out_poem_big.mpg -s 1280x720 -vpre medium outvideo.mp4

这是日志:

FFmpeg version 0.6.3, Copyright (c) 2000-2010 the FFmpeg developers
  built on Feb 21 2012 21:57:04 with gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
  configuration: --disable-debug --prefix=/usr/local/Cellar/ffmpeg/0.6.3 --enable-shared --enable-pthreads --enable-nonfree --enable-gpl --disable-indev=jack --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libfaad
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.11. 0 /  0.11. 0

Seems stream 0 codec frame rate differs from container frame rate: 59.94 (60000/1001) -> 29.97 (60000/2002)
Input #0, mpeg, from 'out_poem_big.mpg':
  Duration: 00:08:35.61, start: 1.000000, bitrate: 14823 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 104857 kb/s, 28.90 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x1c0]: Audio: mp2, 44100 Hz, 2 channels, s16, 128 kb/s
File 'outvideo.mp4' already exists. Overwrite ? [y/N] y
[libx264 @ 0x7fb7ca033600]using SAR=1/1
[libx264 @ 0x7fb7ca033600]using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x7fb7ca033600]profile High, level 3.1
[libx264 @ 0x7fb7ca033600]264 - core 120 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=200 ratetol=20.0 qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 ip_ratio=1.41 aq=1:1.00
Output #0, mp4, to 'outvideo.mp4':
  Metadata:
    encoder         : Lavf52.64.2
    Stream #0.0: Video: libx264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], q=10-51, 200 kb/s, 60k tbn, 29.97 tbc
    Stream #0.1: Audio: libfaac, 44100 Hz, 2 channels, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
Input Stream #0.0 frame size changed to 1920x1080, yuv420p

我尝试了各种各样的vcodec,输出也是最好的,也试过-sameq但没有运气。

ffmpeg是通过自制软件安装的


它只是这个文件或ffmpeg吗?你是否介意发布一个类似的文件,你在公共场所遇到困难我们要测试?
fideli

我们可以看到文件/usr.local/share/ffmpeg/libx264-medium.ffpreset - 您正在使用的参数模板?也许它设置自己的视频大小或需要可被64像素左右整除的尺寸?
ZaB

@ZaB视频大小很好,看看输出流#0.0。你可以看到,比特率太低了。此外,ffpresets不管怎么说都不应该使用。
slhck

Answers:


4

我想指出一些事情:

  • 升级你的FFmpeg版本。它非常过时了。运行brew update然后brew upgrade执行此操作。FFmpeg 0.9引入了一种指定编码预设的新方法,而您当前使用的方法只是遗留的。

  • 不要使用sameq。它并不意味着相同的质量。它基本上意味着,使用输入视频中使用的相同数学选项,这实际上大大降低了质量。


你的问题在哪里......

让我们来看看手头的问题。输出视频的比特率为~200 kBit / s,但输入为14823 kBit / s。这就是它看起来如此糟糕的原因。它现在取决于你想做什么。如果您只想将容器更改为MP4,请使用-vcodec copy并完成它。

如果要更改帧大小,请使用以下内容:

ffmpeg -i out_poem_big.mpg -c:v libx264 -preset slow -crf 22 -s 1280x720 -c:a libfaac -b:a 128K outvideo.mp4

那是什么意思?

  • 这里最重要的方面是-crf 22恒定速率因子。降低质量,使质量更高,质量更差。请参阅此答案,以获得更详尽的解释

    如果您需要恒定的输出比特率,请替换-crf 22-b:v 1M,例如。请注意,由于x264处理它的方式,恒定比特率导致质量更差。

  • -c:v用来代替-vcodec。它的意思相同,但这是默认格式,我更愿意坚持这一点。此外,我们明确要求,libx264因为所有其他编码器可能会降低文件大小的质量(如MPEG-4 Part II -c:v mpeg4)。

  • -preset slow 将使用较慢的编码变体和更高的比特效率优化。

  • 我指定了音频编解码器和音频比特率。根据您要使用的内容进行相应更改。

  • 有关FFmpeg编码的更多说明,请参阅以下答案:


问题是,当我酿造ffmpeg升级时,我的ffmpeg已经升级了......这是否意味着只要我使用brew,我就会被0.6.3卡住?
stpn

brew update以前做过吗?如果这不起作用,请将其卸载brew remove ffmpeg x264并重新安装。
slhck

只是这样做,它一直安装0.6.3 ...?
stpn

这不应该发生。现在是0.10。我明天会调查一下。
slhck

1
确定,所以它可能不是最好的解决办法,但我这样做:$ cd (tilda)brew --prefix(tilda) $ git checkout fb01c6e /usr/local/Library/Formula/ffmpeg.rb $ brew uninstall ffmpeg $ brew install ffmpeg 不得不$ brew install x264为好。有一些链接问题,但他们已经解决了$ sudo brew link ffmpeg
12
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.