ffmpeg:无法削减avi电影

时间:2011-01-31 11:27:30

标签: ffmpeg

我正在使用ffmpeg剪切视频文件:

ffmpeg -<InputFile> -ss 00:00:00 -t 00:00:30 <OutputFile>

不同的文件格式可以排除* .avi格式。对于avi电影,ffmpeg显示视频被截断,但输出文件包含完整视频(不截断)。 有没有人知道问题排查的可能方法?

这里转换avi文件的命令输出:

FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers
  built on Feb  1 2011 02:54:36 with gcc 4.4.5
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
  libavutil     50.36. 0 / 50.36. 0
  libavcore      0.16. 1 /  0.16. 1
  libavcodec    52.108. 0 / 52.108. 0
  libavformat   52.93. 0 / 52.93. 0
  libavdevice   52. 2. 3 / 52. 2. 3
  libavfilter    1.74. 0 /  1.74. 0
  libswscale     0.12. 0 /  0.12. 0
  libpostproc   51. 2. 0 / 51. 2. 0
[mpeg4 @ 0x91e7e10] Invalid and inefficient vfw-avi packed B frames detected

Seems stream 0 codec frame rate differs from container frame rate: 30000.00 (30000/1) -> 25.00 (25/1)
Input #0, avi, from '/home/mightymeeting/Videos/tam-19.avi':
  Duration: 00:04:43.32, start: 0.000000, bitrate: 564 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 352x208 [PAR 1:1 DAR 22:13], 25 fps, 25 tbr, 25 tbn, 30k tbc
    Stream #0.1: Audio: mp3, 32000 Hz, 2 channels, s16, 80 kb/s
[buffer @ 0x91e6ed0] w:352 h:208 pixfmt:yuv420p
Output #0, avi, to 'out.avi':
  Metadata:
    ISFT            : Lavf52.93.0
    Stream #0.0: Video: mpeg4, yuv420p, 352x208 [PAR 1:1 DAR 22:13], q=2-31, 200 kb/s, 25 tbn, 25 tbc
    Stream #0.1: Audio: mp2, 32000 Hz, 2 channels, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
[mpeg4 @ 0x91e7e10] Invalid and inefficient vfw-avi packed B frames detected
frame= 7082 fps=999 q=2.0 Lsize=    7513kB time=30.02 bitrate=2049.8kbits/s dup=0 drop=1    
video:7079kB audio:235kB global headers:0kB muxing overhead 2.718192%

1 个答案:

答案 0 :(得分:0)

听起来这可能是一个DivX文件。尝试

ffmpeg -i INPUT.avi -c copy -ss 00:00:00 -t 00:00:30 -bsf:v mpeg4_unpack_bframes OUTPUT.avi

来自documentation

  

DivX风格的打包B帧不是有效的MPEG-4,只是一个   破坏的Video for Windows子系统的解决方法。他们使用更多   空间,可能会导致轻微的AV同步问题,需要更多的CPU电源   解码(除非播放器有一些解码图像队列来补偿   每个数据包样式为2,0,2,0帧)并且如果被复制到a中会导致麻烦   标准容器如mp4或mpeg-ps / ts,因为MPEG-4解码器可能   无法解码它们,因为它们不是有效的MPEG-4。