我正在尝试使用ffmpeg将一些不同的视频格式转换为flv。但似乎只有一些视频可以通过。
ffmpeg -i /var/www/tmp/91640.avi -ar 22050 -ab 32 -f flv /var/www/videos/91640.flv
这里有一些调试信息:
Seems stream 0 codec frame rate differs from container frame rate: 23.98 (65535/2733) -> 23.98 (5000000/208541)
Input #0, avi, from '/var/www/tmp/91640.avi':
Duration: 00:01:12.82, start: 0.000000, bitrate: 5022 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 1280x528 [PAR 1:1 DAR 80:33], 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
WARNING: The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s
Output #0, flv, to '/var/www/videos/91640.flv':
Stream #0.0: Video: flv, yuv420p, 1280x528 [PAR 1:1 DAR 80:33], q=2-31, 200 kb/s, 90k tbn, 23.98 tbc
Stream #0.1: Audio: adpcm_swf, 22050 Hz, 5.1, s16, 0 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Error while opening codec for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height
另外,如果我尝试抓住一帧广告将其转换为jpeg我也会收到错误
ffmpeg -i /var/www/tmp/91640.avi -an -ss 00:00:03 -t 00:00:01 -r 1 -y /var/www/videos/91640.jpg
调试信息
...
[mpeg4 @ 0x1d7d810]Invalid and inefficient vfw-avi packed B frames detected
av_interleaved_write_frame(): I/O error occurred
Usually that means that input file is truncated and/or corrupted.
我认为图片因为视频转换失败而失败,但不确定
任何想法出了什么问题?
答案 0 :(得分:1)
从您的控制台输出:
警告:bitrate参数设置得太低。它需要bit / s作为参数,而不是kbits / s
使用32k
,而不只是32
。
编码器adpcm_swf
ony支持单声道或立体声,因此添加-ac 2
作为输出选项。如果您使用的是recent ffmpeg
build,则控制台输出会建议这样做。
-vframes 1
进行单张图像输出而不是-t 00:00:01 -r 1
使用-vframes 1
。
我建议使用flv
和adpcm_swf
,而不是使用编码器libx264
和libmp3lame
:
ffmpeg -i input -vcodec libx264 -preset medium -crf 23 -acodec libmp3lame -ar 44100 -q:a 5 output.flv
-preset
- 控制编码速度与压缩比。使用你有耐心的最慢预设:超快,超快,非常快,更快,更快,中等,慢,慢,更快。
-crf
- 恒定比率因子。较低的值是较高的质量。该编码器的范围为0-51。 0是无损的,18是大致“视觉无损”,23是默认,51是最差的质量。使用仍然具有可接受质量的最高值。
-q:a
- libmp3lame
的音频质量。此编码器的范围是0-9。值越低,质量越高。