FFmpeg MKV a MP4 remux mientras convierte todas las pistas de audio a AAC

FFmpeg MKV a MP4 remux mientras convierte todas las pistas de audio a AAC

Tenía un comando ffmpeg que remutaría exitosamente un mkv a un mp4 compatible con iTunes. Sin embargo, solo tomó la primera transmisión de audio independientemente del idioma. Quiero remuxar todas las transmisiones de audio, o al menos la transmisión en inglés. También necesito conservar 5.1.

Esto es lo que tengo hasta ahora:

ffmpeg -i "input.mkv" -y -f mp4 -vcodec copy -acodec libvo_aacenc -ac 6 "output.mp4"

Lo que arroja el siguiente error:

Error al abrir el codificador para el flujo de salida n.º 0:1; tal vez parámetros incorrectos como bit_rate, rate, ancho o alto

Aquí está el resultado completo:

C:\Program Files\ffmpeg\bin>"C:\Program Files\ffmpeg\bin\ffmpeg.exe" -i "E:\movies\A film.mkv" -y -f mp4 -vcodec copy -acodec libvo_aacenc -ac 6 "E:\iTunes\Automatically Add to iTunes\A film.mp4"
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov 25 2012 12:21:26 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runtime-cpudetect --enab
le-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libop
encore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libop
enjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheo
ra --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-lib
vpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52.  9.100 / 52.  9.100
  libavcodec     54. 77.100 / 54. 77.100
  libavformat    54. 37.100 / 54. 37.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 23.102 /  3. 23.102
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 17.101 /  0. 17.101
  libpostproc    52.  2.100 / 52.  2.100
Input #0, matroska,webm, from 'E:\movies\Pitch Perfect.mkv':
  Duration: 01:52:07.11, start: 0.000000, bitrate: 9765 kb/s
    Stream #0:0(eng): Video: h264 (High), yuv420p, 1920x1040, SAR 1:1 DAR 24:13, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
    Stream #0:2(eng): Subtitle: subrip
[libvo_aacenc @ 037dfb00] Unable to set encoding parameters
Output #0, mp4, to 'E:\iTunes\Automatically Add to iTunes\Pitch Perfect.mp4':
    Stream #0:0(eng): Video: h264, yuv420p, 1920x1040 [SAR 1:1 DAR 24:13], q=2-31, 23.98fps, 90k tbn, 1k tbc (default)
    Stream #0:1(eng): Audio: aac, 48000 Hz, 5.1, s16, 128 kb/s (default)
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (dca -> libvo_aacenc)
Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height

Respuesta1

[libvo_aacenc @ 037dfb00] Unable to set encoding parameters

libvo_aacencProbablemente no pueda codificar 5.1 canales y sea un codificador deficiente en general. Puede usar aac(con -strict experimental), libfaaco libfdk_aac(si su ffmpeg estaba configurado para admitirlo) para preservar sus canales. Si debe usarlo, libvo_aacencpuede agregar -ac 2o usar un filtro de audio para cambiar la salida a dos canales.

Probablemente sea más fácil declarar una "calidad" para su audio, como -q:a 100por libfaaco -vbr 5para libfdk_aac; de lo contrario, puede elegir la tasa de bits de audio con -b:a, pero tenga en cuenta que la tasa de bits se compartirá entre todos los canales, así que asígnele un valor más alto que el que usaría para un estéreo. producción. libvo_aacencsolo acepta -b:a.

De forma predeterminada, ffmpeg elegirá la "mejor" secuencia de video, audio y subtítulos de su entrada, lo que dará como resultado una salida con potencialmente una secuencia de video, una secuencia de audio y una secuencia de subtítulos. Agregue -map 0, como mencionó slhck, para anular este valor predeterminado e incluir todas las transmisiones desde la entrada 0(la primera entrada). Verselección de flujoen la documentación de ffmpeg para obtener más información y una explicación de "mejor".

Ver también:

información relacionada