FFMPEG transcodifica/mezcla flujo de audio > 2 flujos de salida de audio falla

IMPORTANTE OBLIGATORIO: COMPRIMIR/ADJUNTAR REGISTROS DE CONVERSIÓN para Informes de Errores (ver abajo)


Tipo de Solicitud:
ERROR
Versión y Tipo de MCEBuddy (32bit o 64bit):
2.4.7 x64
Sistema Operativo y Tipo (32bit o 64bit):
Windows 10 x64
Resumen del problema o sugerencia:
Tengo varios archivos MKV con una única pista de audio DTS. Estoy usando el codificador H264_NVENC y por tanto debo utilizar ffmpeg para esta función —específicamente para transcodificar/mezclar la única pista de audio DTS 5.1 a dos pistas de salida: AAC 2.0 y AC3 5.1.
He configurado profiles.conf con la configuración de audio ffmpeg adecuada para lograrlo:
ffmpeg-audio=-filter_complex "[0:a]asplit[2ch][6ch];[2ch]pan=stereo|FL=FC+0.6FL+0.2BL|FR=FC+0.6FR+0.2BR[aac]" -map [aac] -map [6ch] -c:a:0 libfdk_aac -cutoff 18000 -metadata:s:a:0 title="Stereo" -disposition:a:0 default -c:a:1 ac3 -metadata:s:a:1 title="Surround" -disposition:a:1 none

El registro de depuración muestra el siguiente detalle sobre el fallo de conversión:
[AVFilterGraph @ 0000028a2c3d62e0] Unable to parse graph description substring: “Â -map”

Los valores del filtro complejo deben estar entre comillas, lo cual parece ser la causa del fallo.

Pasos para reproducir el error:
Configurar una tarea de conversión para convertir (vía ffmpeg) un archivo .MKV de origen con una única fuente de audio 5.1 (no-AC3) a MP4, transcodificando/mezclando a dos pistas de audio de salida. Ejemplo de ajustes en profiles.conf (refiérase a la sección “ffmpeg-audio=”):

[TV MP4 Video HQ NVENC]
Description=Perfil alto, buena calidad 1 pasada MP4 (H.264/Audio) NVENC (Calidad Constante).
order=ffmpeg
ffmpeg-general=-threads 0
ffmpeg-video=-vcodec nvenc_h264 -profile:v main -level:v 4.0 -preset hq -rc vbr -qmin 10 -qmax 51 -refs 4 -bf 4 -g 300 -b:v 2500k -maxrate 3000k -bufsize 6000k -map 0:v -sws_flags lanczos -map_chapters -1 -map_metadata -1 -movflags +faststart -metadata:s:v title="" -sn
ffmpeg-audio=-filter_complex "[0:a]asplit[2ch][6ch];[2ch]pan=stereo|FL=FC+0.6FL+0.2BL|FR=FC+0.6FR+0.2BR[aac]" -map [aac] -map [6ch] -c:a:0 libfdk_aac -cutoff 18000 -metadata:s:a:0 title="Stereo" -disposition:a:0 default -c:a:1 ac3 -metadata:s:a:1 title="Surround" -disposition:a:1 none
ffmpeg-audioac3=-map 0:a -c:a:1 copy -metadata:s:a:1 title="Surround" -disposition:a:1 none -map 0:a -c:a:0 libfdk_aac -ab 128k -ar 48000 -ac 2 -cutoff 18000 -metadata:s:a:0 title="Stereo" -disposition:a:0 default
ffmpeg-ext=.mp4
ffmpeg-audiodelay=skip
PreConversionCommercialRemover=true

He adjuntado el registro de depuración de conversión y la salida mediainfo de un archivo MKV de ejemplo que muestra la única pista de audio DTS (Salvation - S01E02 - Another Trip around the Sun.mkv.txt)

Capturas de pantalla:
Salvation - S01E02 - Another Trip around the Sun.mkv-TV MP4 VBR Clip-2017-07-23T17-50-20.0727306-07-00.log.zip (677.7 KB)
Salvation - S01E02 - Another Trip around the Sun.mkv.txt (6.1 KB)

Tomé tu perfil y lo repliqué; aquí no hay tal problema, funciona bien:

2017-07-24T16:20:13 MCEBuddy.AppWrapper.FFmpeg → Stream #0:0#0:0 (h264 (native) → h264 (nvenc_h264))
2017-07-24T16:20:13 MCEBuddy.AppWrapper.FFmpeg → Stream #0:1#0:1 (ac3 (native) → aac (libfdk_aac))
2017-07-24T16:20:13 MCEBuddy.AppWrapper.FFmpeg → Stream #0:1#0:2 (copy)

Creo que tu problema es que tu editor de archivos no está guardando el profiles.conf con la codificación de caracteres correcta (UTF-8) o que está convirtiendo algunos de tus caracteres en caracteres extendidos unicode al guardarlo.

En esencia, tienes un problema con el editor de archivos.

He verificado que mi archivo profiles.conf está en UTF-8.

Con tu prueba, ¿estabas utilizando un archivo de origen con una única pista de audio de 6 canales que no fuera AC3 (por ejemplo, DTS, DTS-HD, etc.)? El registro que has proporcionado sugiere que tu fuente tenía una pista de audio AC3. En ese caso, tu prueba hizo referencia a la configuración “ffmpeg-audioac3=” del perfil en lugar de la configuración “ffmpeg-audio=”, que es donde reside mi problema actual.

Como referencia, ejecutar ffmpeg mediante CLI genera los siguientes mapeos de flujo, utilizando correctamente los filtros especificados en profiles.conf (es decir, ffmpeg-audio=-filter_complex “[0:a]asplit[2ch][6ch];[2ch]pan=stereo|FL=FC+0.6FL+0.2BL|FR=FC+0.6FR+0.2BR[aac]” -map [aac] -map [6ch] -c:a:0 libfdk_aac -cutoff 18000 -metadata:s:a:0 title=“Stereo” -disposition:a:0 default -c:a:1 ac3 -metadata:s:a:1 title=“Surround” -disposition:a:1 none)

Stream #0:1 (dca) -> asplit (graph 0)
Stream #0:0 -> #0:0 (h264 (native) -> h264 (nvenc_h264))
pan (graph 0) -> Stream #0:1 (libfdk_aac)
asplit:output1 (graph 0) -> Stream #0:2 (ac3)

Dado que tienes un perfil muy específico y avanzado, supongo que no querrás que MCEBuddy toque tus configuraciones. Te recomiendo explorar el uso de estas 3 opciones en tu perfil

ffmpeg-VideoOptimized=true
ffmpeg-AudioOptimized=true
ffmpeg-UsingHardwareEncoding=true

Consulta la documentación para ver cómo funcionan.

Bueno, probé con un archivo de audio AAC multicanal como prueba (un cambio: pasé de nvenc a codificador por software), y ahora obtengo un error distinto que parece relacionado con la configuración del codificador, pero aún no puedo replicar tu error original, que a mí me parece un problema de unicode. En mi prueba, el archivo profiles.conf se guardó en formato UTF16LE.

Esto es lo que obtengo:

2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → Stream mapping:
2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → Stream #0:0 (aac) → asplit (graph 0)
2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → Stream #0:2#0:0 (h264 (native) → h264 (libx264))
2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → pan (graph 0) → Stream #0:1 (libfdk_aac)
2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → asplit:output1 (graph 0) → Stream #0:2 (ac3)
2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

EDIT: Usé un archivo de audio de dos pistas sin AC3; lo intentaré de nuevo con un archivo de audio multicanal de una sola pista sin AC3.

Tienes un carácter no ASCII en tu comando original, escondido en alguna parte. Límpialo y el error desaparecerá.

Con un archivo de audio de varios canales y una sola pista, no puedo replicar el mismo error. Este error probablemente se deba a un problema de perfil; en mi video de muestra, el video era la pista 1 y el audio la pista 0:

Entrada:

2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Stream #0:00x100: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, 5.1, fltp, 159 kb/s
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Stream #0:1[0x101]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc

Salida:

2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Stream mapping:
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Stream #0:0 (aac) → asplit (graph 0)
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Stream #0:1#0:0 (h264 (native) → h264 (libx264))
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → pan (graph 0) → Stream #0:1 (libfdk_aac)
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → asplit:output1 (graph 0) → Stream #0:2 (ac3)
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

Si sigues obteniendo el mismo error que en tu publicación original, revisa la codificación de tu archivo.

Como se sugirió, he agregado “ffmpeg-AudioOptimized=true” a mis perfiles. Mis tareas de conversión que hacen referencia a “ffmpeg-audio=”, es decir, cualquier fuente de audio que no sea AC3, ahora están funcionando.

Las pruebas adicionales de esta mañana revelan que el problema original persiste para las tareas de conversión (flujos multimedia de origen AC3) que hacen referencia a “ffmpeg-audioac3=”

Tienes un carácter extendido no ASCII en tu línea de comandos. Usa una herramienta en línea como UberToolz : Clean TEXT Data para limpiar los caracteres no ASCII y funcionará correctamente.