Streaming no ffmpeg usando RTP

3

Cenário

Estou tentando transmitir um vídeo entre dois hosts usando o RTP. Eu já resolvi este problema usando o VLC usando os seguintes 2 comandos

Lado do 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 do 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

Agora quero alcançar o mesmo, mas com o FFMPEG. Qual seria o comando equivalente?

Trabalho feito até agora

Lado do 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 do 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

No entanto, não posso gravar o fluxo recebido dessa maneira.

    
por xavier666 17.09.2016 / 12:27

1 resposta

4

Suponha que o IP do cliente seja 10.0.0.2

Código para executar no lado do 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

Depois de executar este código, um arquivo SDP deve ser gerado com o nome saved_sdp_file . Isso deve de alguma forma ser transferido para o cliente, que precisa receber o fluxo

Código para ser executado no lado do cliente

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

    
por 29.09.2016 / 14:06