es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ffmpeg -c copy no transfiere la pista de audio de mkv al flujo hls.

Estoy utilizando ffmpeg para crear un streaming HLS. La fuente es un archivo mkv con varias pistas de audio. He intentado utilizar -map para especificar la pista de audio también. También encontré que cuando apunto ffmpeg a cualquier otra pista de audio en el archivo funciona. Solo es la primera pista de audio la que no funciona. En un momento, reemplacé -c copy con -acodec aac -ac 6 en la primera pista y obtuve sonido, lo cual es genial, pero solo quiero copiar la pista y no volver a codificarla. Lo siguiente que intenté fue utilizar otros videos mkv que tengo. Todos reflejan el mismo problema. Los mkv por sí solos reproducen tanto audio como video bien en VLC. Al reproducir el archivo output.m3u8 en VLC, la opción de elegir diferentes pistas de audio está en gris. Aquí está el comando que estoy utilizando:

ffmpeg -i "./video.mkv" -ss 00:00:00 -t 00:00:30 -c copy -f hls "output.m3u8"

Quiero que el audio de mi streaming HLS refleje el de la fuente mkv:
enter image description here

Aunque lo que obtengo del comando anterior no me da sonido y me muestra esto en mediaInfo: enter image description here
También he notado que HLS no admite PCM. ¿Es posible que DASH pueda funcionar con este streaming porque es PCM?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para crear un flujo HLS con múltiples pistas de audio usando ffmpeg.

    Cuando se crea un flujo HLS con múltiples pistas de audio usando ffmpeg, se debe utilizar la opción -map para especificar la pista de audio que se incluirá en el flujo. Sin embargo, se ha observado que la primera pista de audio de un archivo MKV no se incluye en el flujo incluso cuando se utiliza la opción -map.

    Una solución que se ha encontrado efectiva es reemplazar la opción -c copy con -acodec aac -ac 6 en la primera pista de audio. Esto volverá a codificar el flujo de audio a AAC con 6 canales de audio, pero también garantizará que se incluya en el flujo.

    Sin embargo, si el objetivo es simplemente copiar la pista de audio sin volver a codificar, otra solución es utilizar otro archivo de video MKV que tenga pistas de audio que se puedan agregar con éxito al flujo. Se ha observado que diferentes archivos MKV pueden comportarse de manera diferente en cuanto a la inclusión de pistas de audio en un flujo HLS, por lo que usar un archivo diferente puede resolver el problema.

    Es importante tener en cuenta que HLS no admite audio PCM, por lo que intentar usarlo en el flujo puede resultar en errores. Alternativamente, DASH puede funcionar con el flujo PCM.

    El comando que se puede utilizar para crear un flujo HLS con múltiples pistas de audio utilizando ffmpeg es:

    ffmpeg -i "video.mkv" -map 0:v -map 0:a:0 -map 0:a:1 -c copy -f hls "output.m3u8"
    

    Este comando utiliza la opción -map para especificar la pista de video y dos pistas de audio (la primera y segunda pistas de audio). La opción -c copy se utiliza para copiar las pistas sin volver a codificar.

Comments are closed.