FFMPEG 段错误解决方案

FFMPEG 段错误解决方案

我正在尝试使用 FFMPEG 将一堆电影转换为 h.264 mp4。这些电影来自各种便携式摄像机,例如 Flip Mino HD 和 Kodak ZI8。我在处理来自 ZI8 的视频时遇到的一个问题是它似乎导致 FFMPEG 出现段错误。

这是我的命令:

ffmpeg -i 'XmasSailor720p60fps.MOV' -threads 2 -acodec libfaac -ab 96kb -vcodec libx264 -vpre hq -b 500kb -s 484x272 XmasSailor.mp4

输出如下:

FFmpeg version SVN-r20668, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  built on Dec  2 2009 18:37:34 with gcc 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
  configuration: --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared
  libavutil     50. 5. 1 / 50. 5. 1
  libavcodec    52.42. 0 / 52.42. 0
  libavformat   52.39. 2 / 52.39. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0. 7. 2 /  0. 7. 2
  libpostproc   51. 2. 0 / 51. 2. 0

Seems stream 0 codec frame rate differs from container frame rate: 59.94 (60000/1001) -> 29.97 (30000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'XmasSailor720p60fps.MOV':
  Duration: 00:00:05.37, start: 0.000000, bitrate: 12021 kb/s
    Stream #0.0(eng): Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 11994 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s
  Metadata
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    comment         : KODAK Zi8 Pocket Video Camera
    comment-eng     : KODAK Zi8 Pocket Video Camera
[libx264 @ 0x99e1020]using SAR=1/1
[libx264 @ 0x99e1020]using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0x99e1020]profile High, level 2.1
Output #0, mp4, to 'XmasSailor.mp4':
    Stream #0.0(eng): Video: libx264, yuv420p, 484x272 [PAR 1:1 DAR 121:68], q=10-51, 500 kb/s, 30k tbn, 29.97 tbc
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 96 kb/s
  Metadata
    comment         : Encoded with the Statusfirm Video Transcoder
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
[h264 @ 0x99de950]B picture before any references, skipping
[h264 @ 0x99de950]decode_slice_header error
[h264 @ 0x99de950]no frame!
Error while decoding stream #0.0
[h264 @ 0x99de950]B picture before any references, skipping
[h264 @ 0x99de950]decode_slice_header error
[h264 @ 0x99de950]no frame!
Error while decoding stream #0.0
frame=   20 fps=  0 q=13797729.0 size=       0kB time=0.66 bitrate=   0.6kbits/s    
frame=   39 fps= 37 q=13797729.0 size=       0kB time=1.30 bitrate=   0.3kbits/s    
frame=   48 fps= 30 q=33.0 size=      11kB time=0.10 bitrate= 903.0kbits/s    
frame=   58 fps= 27 q=31.0 size=      22kB time=0.43 bitrate= 421.0kbits/s    
frame=   67 fps= 25 q=29.0 size=      41kB time=0.73 bitrate= 462.6kbits/s    
frame=   75 fps= 23 q=29.0 size=      59kB time=1.00 bitrate= 486.7kbits/s    
frame=   83 fps= 22 q=29.0 size=      81kB time=1.27 bitrate= 521.9kbits/s    
frame=   90 fps= 21 q=29.0 size=      97kB time=1.50 bitrate= 530.1kbits/s    
frame=   98 fps= 20 q=29.0 size=     114kB time=1.77 bitrate= 526.9kbits/s    
frame=  106 fps= 20 q=29.0 size=     134kB time=2.04 bitrate= 537.7kbits/s    
frame=  114 fps= 19 q=29.0 size=     150kB time=2.30 bitrate= 533.7kbits/s    
frame=  122 fps= 19 q=29.0 size=     172kB time=2.57 bitrate= 547.8kbits/s    
frame=  130 fps= 19 q=29.0 size=     193kB time=2.84 bitrate= 557.5kbits/s    
frame=  136 fps= 18 q=29.0 size=     211kB time=3.04 bitrate= 570.0kbits/s    
frame=  144 fps= 18 q=29.0 size=     242kB time=3.30 bitrate= 599.5kbits/s    
frame=  152 fps= 17 q=30.0 size=     261kB time=3.57 bitrate= 598.6kbits/s    
frame=  157 fps= 15 q=-1.0 Lsize=     368kB time=5.21 bitrate= 579.3kbits/s    
video:302kB audio:61kB global headers:0kB muxing overhead 1.416371%
[libx264 @ 0x99e1020]frame I:1     Avg QP:27.22  size:  8720
[libx264 @ 0x99e1020]frame P:48    Avg QP:25.15  size:  3759
[libx264 @ 0x99e1020]frame B:108   Avg QP:30.10  size:  1105
[libx264 @ 0x99e1020]consecutive B-frames:  0.6% 11.5% 28.8% 59.0%
[libx264 @ 0x99e1020]mb I  I16..4: 28.5% 47.6% 23.9%
[libx264 @ 0x99e1020]mb P  I16..4:  0.8%  1.3%  0.5%  P16..4: 50.6% 17.7% 13.1%  0.0%  0.0%    skip:15.9%
[libx264 @ 0x99e1020]mb B  I16..4:  0.2%  0.3%  0.1%  B16..8: 44.0%  1.2%  2.6%  direct: 5.1%  skip:46.5%  L0:45.5% L1:51.0% BI: 3.5%
[libx264 @ 0x99e1020]final ratefactor: 23.51
[libx264 @ 0x99e1020]8x8 transform intra:49.9% inter:67.9%
[libx264 @ 0x99e1020]direct mvs  spatial:98.1% temporal:1.9%
[libx264 @ 0x99e1020]coded y,uvDC,uvAC intra: 54.7% 76.1% 41.4% inter: 17.1% 24.4% 7.8%
[libx264 @ 0x99e1020]i16 v,h,dc,p: 18% 52%  5% 25%
[libx264 @ 0x99e1020]i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 22%  9%  7% 10% 10%  9%  8% 13%
[libx264 @ 0x99e1020]i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 18%  8%  8% 10% 13% 10%  9% 12%
[libx264 @ 0x99e1020]Weighted P-Frames: Y:10.4%
[libx264 @ 0x99e1020]ref P L0: 60.2% 15.3% 11.0%  7.6%  5.2%  0.7%
[libx264 @ 0x99e1020]ref B L0: 72.6% 15.6% 11.8%
[libx264 @ 0x99e1020]kb/s:471.17
Segmentation fault

我想知道是否有其他人遇到过类似的问题。我无法通过 Google 找到任何有用的信息。

我的另一个问题是,是否有人知道有哪家公司为 FFMPEG 提供付费支持。

感谢您的时间。

答案1

我刚刚遇到了与 libx264 编码类似的问题,通过对此事的检查,我得到了以下几点。

  1. 使用 gcc >= 4.2
  2. 确保您的 ffmpeg 是针对相同的 libx264 版本进行编译的

从你的输出可以明显看出,#1 已经失败了,因此请像这样检查 #2 (路径可能需要修改)

ldd /usr/bin/ffmpeg | grep x264

进而...

cat /usr/include/x264.h | grep X264_BUILD

来源

对我来说,这已经检查过了,我只需要不进行 2 遍编码。尝试不使用线程选项,这可能会解决问题。我在旧的 Red Hat 机器上遇到了麻烦,但我的 Gentoo 桌面一点问题都没有,我称之为源包管理器的胜利!

相关内容