2012-04-14 17 views
0

Ich mache eine Anwendung, die Videos in WebM oder MP4 konvertieren muss, funktioniert es gut mit allen Videos, die ich ausprobiert habe, aber es scheitert, wenn ich eine FLV-Datei ohne Audio verwenden Kanäle.Encoder FLV Video ohne Audio mit ffmpeg

$ 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 

Wenn ich übergeben Sie die Option -an, es funktioniert, aber ich kann das nicht tun, weil dann alle Videos nicht Audio haben würde.

Irgendwelche Ideen?

+1

Ich verstehe die Frage nicht - wollen Sie die transcodierten Dateien Audio haben oder nicht? Außerdem scheint FFmpeg zu behaupten, dass die FLV-Datei in Ihrem Beispiel kein Audio hat. –

+0

Ich möchte, dass die transcodierten Dateien Audio haben, wenn das Original Audio hat, und keinen Fehler geben, wenn das Original kein Audio hat. Ja, der FLV im Beispiel hat kein Audio. –

Antwort

1

Dies ist extrem ungewöhnlich. Wenn die Quelldatei keinen Audiostream enthält, sollte FFmpeg nicht versuchen, einen Audiostream zu transkodieren.

Woher haben Sie diese Version von FFmpeg erhalten? Hast du es selbst kompiliert? Die Version sieht etwas veraltet aus. Und diese Linie vom Ausgang sitzt nicht gut mit mir:

WARNING: library configuration mismatch 

Außerdem ist es möglich, dass es etwas seltsam über diese FLV-Dateien (Ausgabe von Red5, wenn die Metadaten korrekt ist). Vielleicht gibt es aus irgendeinem Grund ein NULL-Audio-Tag. Wären Sie in der Lage, eine kleine Probe für das Studium zur Verfügung zu stellen?

+0

Ich habe ffmpeg aus den Ubuntu-Repositories benutzt, habe es selbst kompiliert und das Problem behoben! Danke für die Hilfe :) –