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_aacenc
Probablemente no pueda codificar 5.1 canales y sea un codificador deficiente en general. Puede usar aac
(con -strict experimental
), libfaac
o libfdk_aac
(si su ffmpeg estaba configurado para admitirlo) para preservar sus canales. Si debe usarlo, libvo_aacenc
puede agregar -ac 2
o 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 100
por libfaac
o -vbr 5
para 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_aacenc
solo 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: