2012-04-14 109 views
0

我正在制作一个需要将视频转换为webm或mp4的应用程序,它适用于我尝试过的所有视频,但如果我在没有音频的情况下使用flv文件通道。使用ffmpeg编码没有音频的flv视频

$ ffmpeg -i 0986229665-339108519108-86498841039-6078455325.flv out.webm 
ffmpeg version 0.7.3-4:0.7.3-0ubuntu0.11.10.1, Copyright (c) 2000-2011 the Libav developers 
    built on Jan 4 2012 16:08:51 with gcc 4.6.1 
    configuration: --extra-version='4:0.7.3-0ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static 
    WARNING: library configuration mismatch 
    avutil  configuration: --extra-version='4:0.7.3ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --enable-shared --disable-static 
    avcodec  configuration: --extra-version='4:0.7.3ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --enable-shared --disable-static 
    libavutil 51. 7. 0/51. 7. 0 
    libavcodec 53. 6. 0/53. 6. 0 
    libavformat 53. 3. 0/53. 3. 0 
    libavdevice 53. 0. 0/53. 0. 0 
    libavfilter 2. 4. 0/2. 4. 0 
    libswscale 2. 0. 0/2. 0. 0 
    libpostproc 52. 0. 0/52. 0. 0 
[flv @ 0x2184560] Could not find codec parameters (Audio: [0][0][0][0]/0x0000, 0 channels) 
[flv @ 0x2184560] Estimating duration from bitrate, this may be inaccurate 
Input #0, flv, from '0986229665-339108519108-86498841039-6078455325.flv': 
    Metadata: 
    audiocodecid : -1 
    server   : Red5 Server 1.0.0 RC1 $Rev: 4193 $ 
    duration  : 3 
    canSeekToEnd : true 
    videocodecid : 2 
    Duration: 00:00:03.02, start: 0.000000, bitrate: N/A 
    Stream #0.0: Video: flv, yuv420p, 640x362, 1k tbr, 1k tbn, 1k tbc 
    Stream #0.1: Audio: [0][0][0][0]/0x0000, 0 channels 
Incompatible sample format '(null)' for codec 'libvorbis', auto-selecting format 's16' 
[buffer @ 0x21852c0] w:640 h:362 pixfmt:yuv420p 
[libvpx @ 0x2184040] v0.9.6 
[libvorbis @ 0x2185ee0] oggvorbis_encode_init: init_encoder failed 
Output #0, webm, to 'out.webm': 
    Stream #0.0: Video: libvpx, yuv420p, 640x362, q=2-31, 200 kb/s, 90k tbn, 1k tbc 
    Stream #0.1: Audio: libvorbis, 0 channels, s16, 64 kb/s 
Stream mapping: 
    Stream #0.0 -> #0.0 
    Stream #0.1 -> #0.1 
Error while opening encoder for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height 

如果我通过-an选项,它的工作原理,但我不能这样做,因为那样的话所有的影片不会有音频。

任何想法?

+1

我不明白这个问题 - 你想转码文件有音频吗?此外,FFmpeg似乎声称您的示例中的FLV文件没有音频。 – 2012-04-14 15:31:10

+0

如果原始文件有音频,我希望转码后的文件具有音频,并且如果原件没有音频,则不会发出错误。是的,示例中的FLV没有音频。 – 2012-04-14 16:09:30

回答

1

这是非常不寻常的。如果源文件没有音频流,则FFmpeg不应尝试对音频流进行转码。

你从哪里获得FFmpeg的这个版本?你自己编译了吗?该版本看起来有点过时。而这条线从输出不跟我坐好:

WARNING: library configuration mismatch 

而且,它可能是有一些奇怪那些FLV文件(由Red5的输出,如果元数据是正确的)。由于某种原因,可能有一个NULL音频标签。你可以做一个小样本供学习吗?

+0

我使用的是ubuntu版本库中的ffmpeg,编译它自己修复了这个问题!谢谢您的帮助 :) – 2012-04-15 12:48:48