Guión

Guión

Guión

Estoy intentando transmitir un video entre 2 hosts usando RTP. Anteriormente resolví este problema usando VLC usando los siguientes 2 comandos

Lado del servidor

cvlc video_file.mp4 --sout "#transcode{vcodec=h264, acodec=mpga, ab=128, channels=2, samplerate=44100}: duplicate{dst=rtp{dst=10.X.X.X, port=5004, mux=ts}}" --run-time 40 vlc://quit

Lado del cliente

cvlc rtp://@:5004 --sout "#transcode{vcodec=h264, acodec=mpga, ab=128, channels=2, samplerate=44100}: std{access=file, mux=mp4, dst=downloaded.mp4}" --run-time 40 vlc://quit

Requisito

Ahora quiero lograr lo mismo pero con FFMPEG.¿Cuál sería el comando equivalente?

Trabajo realizado hasta ahora

Lado del servidor

ffmpeg -re -i video_file.mp4 -vcodec libx264 -an -f rtp rtp://10.X.X.X:5004 -vn -acodec libtwolame -f rtp rtp://10.X.X.X:5005

Lado del cliente

ffmpeg -i rtp://10.X.X.X:5004 -vcodec libx264 -an -i rtp://10.5.19.244:5005 -acodec libtwolame -vn -t 00:00:35 downloaded.mp4

Sin embargo, no puedo grabar la transmisión recibida de esta manera.

Respuesta1

Supongamos que la IP del cliente es 10.0.0.2

Código para ejecutar en el lado del servidor

ffmpeg -re -thread_queue_size 4 -i source_video_file.mp4 -strict 2 -vcodec copy -an -f rtp rtp://10.0.0.2:6005 -acodec copy -vn -sdp_file saved_sdp_file -f rtp rtp://10.0.0.2:7005

Después de ejecutar este código, se debe generar un archivo SDP llamado saved_sdp_file. Esto debe transferirse al cliente, que lo necesita para recibir la transmisión.

Código para ejecutar en el lado del cliente

ffmpeg -protocol_whitelist "file,rtp,udp" -i saved_sdp_file -strict 2 saved_video_file.mp4

Respuesta2

Considerando que la dirección del servidor es 10.158.210.39 y transmitiendo en el puerto UDP 5155

Lado del servidor:

ffmpeg -re -i test_video.mp4 -c:v copy -c:a copy -f rtp_mpegts -sdp_file test_video.sdp "rtp://10.158.210.39:5155"

rtp_mpegtses un formato que también es compatible con VLC. No es necesario copiar elpartido socialdemócrataarchivo al cliente para recibir la transmisión.

Lado del cliente:

ffmpeg -protocol_whitelist rtp,udp -i "rtp://10.158.210.39:5155" save.mp4

La transmisión recibida se guarda enguardar.mp4

Para recibir usando ffplay:

ffplay -protocol_whitelist rtp,udp -i "rtp://10.158.210.39:5155"

Esto reproducirá el vídeo (incluso en una conexión SSH si estás usando mobaxterm)

información relacionada