Warum kann ich ogg-Dateien abspielen, aber nicht in mkv oder mp4 mit FFMPEG konvertieren?

1058
erik

Ich möchte ein ogg- Video in mp4 oder mkv konvertieren, aber es werden unterschiedliche Fehler angezeigt .

Ich habe zwei Streams (von derselben Quelle), die ich aufgenommen habe. Sie befinden sich in einem ogg-Container.

Wenn ich versuche, sie zu konvertieren in MKV mit ffmpeg -i stream.ogg -c copy -map 0 stream.mkv, diese Fehlermeldung angezeigt:

ffmpeg version 0.10.7 Copyright (c) 2000-2013 the FFmpeg developers built on May 14 2013 21:35:02 with gcc 4.7.2 20120921 (Red Hat 4.7.2-2) configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib --mandir=/usr/share/man --arch=i686 --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables' --enable-bzlib --disable-crystalhd --enable-gnutls --enable-libass --enable-libcdio --enable-libcelt --enable-libdc1394 --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib --cpu=i686 --enable-runtime-cpudetect libavutil 51. 35.100 / 51. 35.100 libavcodec 53. 61.100 / 53. 61.100 libavformat 53. 32.100 / 53. 32.100 libavdevice 53. 4.100 / 53. 4.100 libavfilter 2. 61.100 / 2. 61.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 6.100 / 0. 6.100 libpostproc 52. 0.100 / 52. 0.100 [ogg @ 0x8685b00] Estimating duration from bitrate, this may be inaccurate Input #0, ogg, from 'stream.ogg': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: theora, yuv420p, 640x480 [SAR 1:1 DAR 4:3], 8 fps, 8 tbr, 8 tbn, 8 tbc Stream #0:1: Audio: flac, 48000 Hz, 1 channels, s16 Metadata: ENCODER : Lavf53.32.100 Output #0, matroska, to '/dev/shm/stream.mkv': Metadata: encoder : Lavf53.32.100 Stream #0:0: Video: theora (theo / 0x6F656874), yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=2-31, 8 fps, 1k tbn, 8 tbc Stream #0:1: Audio: flac ([172][241][0][0] / 0xF1AC), 48000 Hz, 1 channels Metadata: ENCODER : Lavf53.32.100 Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help [matroska @ 0x8835880] Application provided invalid, non monotonically increasing dts to muxer in stream 1: 1440 >= 1440 av_interleaved_write_frame(): Invalid argument 

Und wenn ich versuche, sie zu konvertieren in MP4 mit ffmpeg -i stream.ogg -c copy -map 0 stream.mp4, diese Fehlermeldung angezeigt:

track 0: could not find tag, codec not currently supported in container Could not write header for output file #0 (incorrect codec parameters ?) 

Die Dateien können mit mplayer und ffplay abgespielt werden. Sie enthalten einen Video- und einen Audiostrom:

$ ffmpeg -i stream.ogg [ogg @ 0x85a9b00] Estimating duration from bitrate, this may be inaccurate Input #0, ogg, from 'stream.ogg': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: theora, yuv420p, 640x480 [SAR 1:1 DAR 4:3], 8 fps, 8 tbr, 8 tbn, 8 tbc Stream #0:1: Audio: flac, 48000 Hz, 1 channels, s16 Metadata: ENCODER : Lavf53.32.100 

Wenn ich die Dateien mit VLC wiedergebe, erhalte ich zwei Warnungen und zwei Fehler (in Rot), aber die Dateien werden abgespielt:

TagLib: Vorbis::File::read() - Could not find the Vorbis comment header. TagLib: Vorbis::File::read() - Could not find the Vorbis comment header. [0xb71029c0] ogg demux error: Got invalid packet, read 62187 of 63676: OggS [0xb6d00618] main input error: Invalid PCR value in ES_OUT_SET_(GROUP_)PCR ! 

Was ist das Problem mit den Dateien? Gibt es eine Möglichkeit, die Dateien zu konvertieren, z. B. dass Sie ffmpeg anweisen, die Fehler zu ignorieren? Es wäre kein Problem, die ersten oder letzten Sekunden des Videos zu überspringen, wenn dies das Problem lösen würde.

0
Bitte kürzen Sie die Ausgabe nicht ab. Veröffentlichen Sie das vollständige ffmpeg-Protokoll des ersten Befehls. Der zweite funktioniert nicht, da MP4-Container Theora-Video nicht unterstützen und Sie nur den Video-Bitstream kopieren, wenn Sie "-c copy" verwenden. slhck vor 10 Jahren 0
@ slhck ♦ Ok, ich habe jetzt den Rest der Ausgabe hinzugefügt. Hilft es? erik vor 10 Jahren 0

1 Antwort auf die Frage

2
erik

Und die Antwort lautet:

  • mp4-container unterstützen kein theora-video (danke slhck)
  • Mit einem neuen nächtlichen Build funktioniert es einfach

Für die Zukunft: Versuchen Sie immer den nächtlichen Build, wenn es nicht funktioniert.