ffmpeg para convertir .avi a .mp4 da como resultado un error: no se pudo encontrar la etiqueta para el códec dvvideo en la transmisión n.º 0, el códec no es compatible actualmente en el contenedor

Estoy tratando de convertir archivos .avi a .mp4 usando ffmpeg, con la menor pérdida posible.

Probé este comando:

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

y recibió este resultado:

 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

Genera un archivo .mp4 con un mensaje de error que indica que el archivo no se puede reproducir y el código de error 0xc10100be.

¿Alguien puede interpretar lo que está pasando? ¿Qué comando recomendarías aquí?

¡Muchas gracias!

Respuestas (1)

Está intentando incluir un códec (dvvideo) en un contenedor (mp4), que no lo admite (al menos en ffmpeg). Vea la diferencia entre códec y contenedor . Es mejor que use un códec compatible con mp4, digamos H.265 usando libx265 e intente convertir. Consulte los documentos para conocer las opciones adicionales que puede aplicar. Aquí está la extensa lista de códecs compatibles con mp4, pero es posible que ffmpeg no admita todos ellos. Estos son algunos códecs populares . Además, pcm_s16le es un formato de audio sin procesar, conviértalo a aac. Intentar

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

Tiene codificación sin pérdidas H.265 y utiliza libfdk_aac, que es de mejor calidad que la nativa.

¡Muchas gracias por esta útil información!
Muy bienvenido @stars.in.the.sky. Si esta solución funciona para usted, puede marcar la respuesta como aceptada.