ffmpeg zum Konvertieren von .avi in ​​.mp4 führt zu einem Fehler: Tag für Codec dvvideo in Stream Nr. 0 konnte nicht gefunden werden, Codec derzeit nicht im Container unterstützt

Ich versuche, .avi-Dateien mit ffmpeg so verlustfrei wie möglich in .mp4 zu konvertieren.

Ich habe diesen Befehl versucht:

 ffmpeg -i filename.avi -c:v copy -c:a copy -y filename.mp4

und diese Ausgabe erhalten:

 configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-shared --disable-static --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libvmaf --enable-vulkan --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-libdavs2 --enable-ffnvcodec --enable-cuda-llvm --enable-libglslang --enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp
  libavutil      57.  0.100 / 57.  0.100
  libavcodec     59.  1.101 / 59.  1.101
  libavformat    59.  3.100 / 59.  3.100
  libavdevice    59.  0.100 / 59.  0.100
  libavfilter     8.  0.102 /  8.  0.102
  libswscale      6.  0.100 /  6.  0.100
  libswresample   4.  0.100 /  4.  0.100
  libpostproc    56.  0.100 / 56.  0.100
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, avi, from 'Filename.avi':
  Metadata:
    TAPE            : Filename
    TCOD            : 653986667
  Duration: 00:01:54.01, start: 0.000000, bitrate: 30411 kb/s
  Stream #0:0: Video: dvvideo (dvsd / 0x64737664), yuv411p, 720x480 [SAR 8:9 DAR 4:3], 28779 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn
  Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s
[mp4 @ 000001d0ca8a1480] Could not find tag for codec dvvideo in stream #0, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:1 --
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
    Last message repeated 1 times

Es gibt eine .mp4-Datei mit einer Fehlermeldung aus, dass die Datei nicht abgespielt werden kann, und dem Fehlercode 0xc10100be.

Kann jemand interpretieren, was passiert? Welchen Befehl würdest du hier empfehlen?

Vielen Dank!

Antworten (1)

Sie versuchen, einen Codec (dvvideo) in einen Container (mp4) einzufügen, der ihn nicht unterstützt (zumindest in ffmpeg). Siehe Unterschied zwischen Codec und Container . Verwenden Sie besser einen von mp4 unterstützten Codec, sagen Sie H.265 mit libx265, und versuchen Sie es mit der Konvertierung. Weitere Optionen, die Sie möglicherweise anwenden möchten, finden Sie in den Dokumenten . Hier ist die umfangreiche Liste der von mp4 unterstützten Codecs , aber möglicherweise werden nicht alle von ffmpeg unterstützt. Hier sind einige beliebte Codecs . Außerdem ist pcm_s16le ein rohes Audioformat, konvertieren Sie es in aac. Versuchen

ffmpeg -i filename.avi -c:v libx265 -x265-params lossless=1 -c:a libfdk_aac -b:a 128k -y filename.mp4

Es verfügt über eine verlustfreie H.265-Codierung und verwendet libfdk_aac, das von besserer Qualität als das native ist.

Vielen Dank für diese hilfreichen Informationen!
Herzlich willkommen @stars.in.the.sky, Wenn diese Lösung für Sie funktioniert, können Sie die Antwort als akzeptiert markieren.