
Estoy intentando crear un servidor HLS/DASH en vivo simulado usando el equivalente de la siguiente cadena:
tsplay -loop multi_resolution.ts | shaka_packager | nginx
El problema es crear el archivo "multi_solving.ts": debe contener un único programa con 1 PID de audio y 3 de vídeo, uno para 720p, 480p y 360p. ¿Por qué? Porque así es como shaka_packager necesita que sea.
Creo que estoy confundido acerca de cómo asignar las transmisiones transcodificadas al archivo de salida. Aquí el comando que no funciona con el que he estado luchando:
ffmpeg -i "big_buck_bunny_1080p.mov" -threads 16 \
-c:a aac -ac 2 -b:a:0 128k \
-c:v libx264 -pix_fmt yuv420p -profile:v high -level 4.0 -preset veryslow -tune film \
-vsync cfr -x264-params "nal-hrd=cbr" \
-b:v:1 5000k -minrate 2000k -maxrate 2000k -bufsize 4000k -g 30 -s 1280x720 \
-c:v libx264 -pix_fmt yuv420p -profile:v high -level 4.0 -preset veryslow -tune film \
-vsync cfr -x264-params "nal-hrd=cbr" \
-b:v:2 1500k -minrate 1000k -maxrate 1000k -bufsize 2000k -g 30 -s 854x480 \
-c:v libx264 -pix_fmt yuv420p -profile:v high -level 4.0 -preset veryslow -tune film \
-vsync cfr -x264-params "nal-hrd=cbr" \
-b:v:3 500k -minrate 500k -maxrate 500k -bufsize 1000k -g 30 -s 640x360 \
-program program_num=1:title=multi_p30:st=0:st=1:st=2:st=3 \
-f mpegts "big_buck_bunny_720_480_360.ts"
Probé cada una de las codificaciones de forma aislada y se ven bien. Sospecho que el problema está en la gestión/mapeo de mi transmisión.
¿Ayuda?
Respuesta1
Para insertar múltiples flujos en una salida, cada flujo de entrada debe asignarse expresamente. Las opciones de codificación, por sí solas, no crean una asignación de secuencia en la salida. Está la cuestión de la selección automática de transmisiones, que no se aplica aquí, pero puedes leer sobre ello enhttps://ffmpeg.org/ffmpeg.html#Stream-selection
Entonces,
ffmpeg -i "big_buck_bunny_1080p.mov" -threads 16 \
-map 0:a -map 0:v -map 0:v -map 0:v \
-c:a aac -ac 2 -b:a 128k \
-s:v:0 1280x720 -s:v:1 854x480-s:v:2 640x360 \
-g 30 -c:v libx264 -pix_fmt yuv420p -profile:v high -level 4.0 -preset veryslow -tune film \
-vsync cfr -x264-params "nal-hrd=cbr" \
-b:v:0 5000k -minrate:v:0 2000k -maxrate:v:0 2000k -bufsize:v:0 4000k \
-b:v:1 1500k -minrate:v:1 1000k -maxrate:v:1 1000k -bufsize:v:1 2000k \
-b:v:2 500k -minrate:v:2 500k -maxrate:v:2 500k -bufsize:v:2 1000k \
-program program_num=1:title=multi_p30:st=0:st=1:st=2:st=3 \
-f mpegts "big_buck_bunny_720_480_360.ts"