¿Cómo crear simultáneamente transmisiones de video rtsp y livehttp en vlc desde la misma fuente en vivo?

Quiero crear simultáneamente transmisiones de video rtsp y livehttp desde la misma fuente H.264 en vivo en cvlc. Puedo crear de forma individual cualquier tipo de flujo sin problemas, y también puedo crear dos flujos rtsp simultáneamente usando la etiqueta 'duplicado', por lo que mi configuración básica es correcta. Algo está mal cuando trato de hacer los dos tipos de secuencias al mismo tiempo en un solo comando.

Esto se ejecuta en Linux y los comandos están escritos en bash. Mi velocidad de fotogramas, $fps, es de 10 fps. /home/vout1 es mi fuente H.264 en vivo. Las carpetas y la URL del servidor están definidas por variables. Tenga en cuenta que tuve que agregar dst= cuando pasé del comando único al comando combinado.

Aquí está el comando rtsp de trabajo:

cvlc -vvv stream:///home/vout1 --sout '#rtp{sdp=rtsp://:8554/}' --demux=h264 --h264-fps=$fps

Aquí está el comando livehttp en funcionamiento:

cvlc -vvv stream:///home/vout1 --sout "#standard{access=livehttp{seglen=5,delsegs=true,numsegs=2,index=$streaming_video_folder/stream.m3u8,index-url=$server_URL/stream-###.ts},mux=ts{use-key-frames},dst=$streaming_video_folder/stream-###.ts}}" --h264-fps=$fps --demux=h264

Aquí hay un comando de trabajo que crea dos flujos rtsp:

cvlc -vvv stream:///home/vout1 --sout '#duplicate{dst=rtp{sdp=rtsp://:8554/},dst=rtp{sdp=rtsp://:9554/}}' :demux=h264 :h264-fps=$fps

Aquí está el comando combinado, rtsp y livehttp que no funciona:

cvlc -vvv stream:///home/vout1 --sout '#duplicate{dst=rtp{sdp=rtsp://:8554/},dst=standard{access=livehttp{seglen=5,delsegs=true,numsegs=2,index=$streaming_video_folder/stream.m3u8,index-url=$server_url/stream-###.ts},mux=ts{use-key-frames},dst=$streaming_video_folder/stream-###.ts}}' :demux=h264 :h264-fps=$fps

No recibo ninguna transmisión y recibo una multitud de estos errores:

[0xca4540] access_output_livehttp access out error: cannot open `-treaming_video_folder/stream-001.ts' (No such file or directory)

Por alguna razón, el nombre de la variable que funcionaba anteriormente, $streaming_video_folder, se transformó en el nombre erróneo -treaming_video_folder.

¿Alguien puede decirme la sintaxis adecuada para el comando combinado? Gracias de antemano.

Respuestas (1)

Su comando livehttp que funciona tiene comillas dobles y su comando duplicado que no funciona tiene comillas simples. Su shell está interpolando las variables en el ejemplo de comillas dobles pero pasándolas como una cadena literal en el último caso. Puede ver lo que está haciendo el shell cambiando cvlca echo.