Cómo grabar y transcodificar transmisiones multimedia en el servidor nginx
2. Debes utilizar exec_record_done al ejecutar el comando de grabación. Es decir, una vez completada la grabación, los archivos grabados se transcodifican automáticamente para obtener archivos MP4. Hay dos situaciones diferentes dependiendo de si se utiliza el comando record_interval.
2A, si no se usa record_interval, la transcodificación se realizará después de que se detenga la transmisión push (es decir, si se usa record_interval, puede configurar la grabación para que se reinicie de vez en cuando, combinado con record_append con el comando, puede asegurarse de que se haya completado la última grabación.
2B, si usa record_interval, puede asegurarse de que el último video grabado esté en un archivo; de lo contrario, cada grabación generará un archivo separado. Para estos dos comandos, la transcodificación se realizará en intervalos de tiempo correspondientes, pero se generará (sobrescribirá) en el mismo archivo. La ventaja de esto es que la transcodificación se puede completar casi en "tiempo real", pero la desventaja es que ffmpeg. se llamará repetidamente, ocupando así recursos del sistema
3. Cabe señalar que los archivos transcodificados obtenidos por los dos métodos anteriores son los mismos (en términos de duración). p>4. Ejemplo de configuración de nginx.conf
[html] ver copia simple
aplicación hls {
activa;
hls activado;
grabar todo;
record_path /home/zhanghui/test;
#record_interval 10s;
#record_append activado;
hls_path /tmp/app;
hls_fragment 5s;
# convertir el archivo grabado a formato mp4
exec_record_done '/usr/local /bin/ffmpeg' - y -i /home/zhanghui/test/livestream.flv -vcodec libx264 -f mp4 /home/zhanghui/test/test_record.mp4 2>>/home/zhanghui/test/test_record.log;
}