在 ffmpeg 中分割 AVI 时解决“流 0 编解码器帧速率与容器帧速率不同”问题

在 ffmpeg 中分割 AVI 时解决“流 0 编解码器帧速率与容器帧速率不同”问题

我需要分割视频文件,同时将它们转换为 mp4 以供网站使用。我在分割 AVI 文件时遇到了麻烦(flv 和 mp4 工作正常)。

例子:

> ffmpeg -i original-1.avi -ss 00:03:00 -t 00:00:20 -acodec 复制 -vcodec libx264 -vpre hq -s 416x240 -y 1.mp4

似乎流 0 编解码器帧速率与容器帧速率不同:30000.00(30000/1)-> 25.00(25/1)
输入 #0,avi,来自‘original-1.avi’:
  元数据:
    ISFT : Nandub v1.0rc2
    INAM : Rammstein - 链接 2-3-4
    ISBJ : Rammstein - 链接 2-3-4
    艾特里:
    ICOP : 由 Hermit 编码 (DivX 5.0.3) 15.04.06
    国际医学与医学医学学会联合会:
  时长:00:03:34.48,开始:0.000000,比特率:1630 kb/s
    流 #0.0:视频:mpeg4、yuv420p、704x406 [PAR 1:1 DAR 352:203]、25 fps、25 tbr、25 tbn、30k tbc
    流 #0.1:音频:mp3、48000 Hz、2 通道、s16、160 kb/s
[libx264 @ 0x804215810]使用 SAR=1/1
[libx264 @ 0x804215810]使用 CPU 功能:MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
[libx264 @ 0x804215810]配置文件高,级别 1.3
[libx264 @ 0x804215810]264 - 核心 110 - H.264/MPEG-4 AVC 编解码器 - Copyleft 2003-2010 - http://www.videolan.org/x264.html - 选项:cabac=1 ref=4 deblock=1:0:0 analyze=0x3:0x113 me=umh subme=8 psy=1 psy_rd=1.00:0.00 hybrid_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2threads=1sliced_threads=0 nr=0 decimate=1 interlaced=0 constrained_intra=0 bframes=3 b_pyramid=0 b_adapt=2 b_bias=0 direct=3 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
输出 #0,mp4,到‘1.mp4’:
  元数据:
    编码器:Lavf52.64.2
    流 #0.0:视频:libx264、yuv420p、416x240 [PAR 1:1 DAR 26:15]、q=10-51、200 kb/s、25 tbn、25 tbc
    流 #0.1:音频:libmp3lame,48000 Hz,2 通道,160 kb/s
流映射:
  流 #0.0 -> #0.0
  流 #0.1 -> #0.1
按 [q] 停止编码
[mpeg4 @ 0x804214410]检测到无效且低效的 vfw-avi 打包 B 帧
帧= 0 fps= 0 q=0.0 大小= 0kB 时间=10000000000.00 比特率= 0.0kbits/s 帧= 0 fps= 0 q=0.0 大小= 0kB 时间=10000000000.00 比特率= 0.0kbits/s 帧= 0 fps= 0 q=0.0 大小= 0kB 时间=10000000000.00 比特率= 0.0kbits/s 帧= 0 fps= 0 q=0.0 大小= 0kB 时间=10000000000.00 比特率= 0.0kbits/s 帧= 0 fps= 0 q=0.0 大小= 0kB 时间=10000000000.00 比特率= 0.0kbits/s 帧= 0 fps= 0 q=0.0 大小= 0kB 时间=10000000000.00 比特率= 0.0kbits/s 帧= 0 fps= 0 q=0.0 大小= 0kB 时间=10000000000.00 比特率= 0.0kbits/s 帧= 0 fps= 0 q=0.0 大小= 0kB 时间=10000000000.00 比特率= 0.0kbits/s 帧= 0 fps= 0 q=0.0 大小= 0kB 时间=10000000000.00 比特率= 0.0kbits/s    
帧= 8 fps= 1 q=405.0 大小= 0kB 时间=0.74 比特率= 0.5kbits/s    
帧= 50 fps= 5 q=37.0 大小= 13kB 时间=0.32 比特率= 338.7kbits/s    
帧= 65 fps= 6 q=35.0 大小= 38kB 时间=0.92 比特率= 334.9kbits/s    
帧= 68 fps= 6 q=35.0 大小= 43kB 时间=1.04 比特率= 342.6kbits/s    
帧= 76 fps= 6 q=35.0 大小= 56kB 时间=1.36 比特率= 340.3kbits/s    
帧= 92 fps= 7 q=35.0 大小= 85kB 时间=2.00 比特率= 349.6kbits/s    
帧= 112 fps= 8 q=34.0 大小= 118kB 时间=2.80 比特率= 346.2kbits/s    
帧= 132 fps= 9 q=35.0 大小= 158kB 时间=3.60 比特率= 359.8kbits/s    
帧= 151 fps= 10 q=31.0 大小= 193kB 时间=4.36 比特率= 363.3kbits/s    
帧= 168 fps= 11 q=34.0 大小= 223kB 时间=5.04 比特率= 362.3kbits/s    
帧= 187 fps= 12 q=34.0 大小= 258kB 时间=5.80 比特率= 3

答案1

您的问题不清楚,我不确定命令输出是否完整。

尝试在输入前强制使用 -r。

这看起来像是输入文件的问题,而不是 ffmpeg 的问题。

另外,为什么在处理之前要解码 3 分钟?

如果您不确定您的命令在这里实际上起什么作用,这里有一个简短的介绍。

https://trac.ffmpeg.org/wiki/Seeking%20with%20FFmpeg

相关内容