6 votes

Streaming dans ffmpeg en utilisant RTP

Scénario

J'essaie de diffuser une vidéo entre 2 hôtes en utilisant le protocole RTP. J'ai déjà résolu ce problème avec VLC en utilisant les 2 commandes suivantes

Côté serveur

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

Côté client

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

Exigence

Maintenant je veux réaliser la même chose mais avec FFMPEG. Quelle serait la commande équivalente ?

Travail effectué jusqu'à présent

Côté serveur

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

Côté client

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

Cependant, je ne peux pas enregistrer le flux reçu de cette manière.

7voto

Gregzo Points 103

Supposons que l'IP du client soit 10.0.0.2.

Code à exécuter du côté du serveur

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

Après avoir exécuté ce code, un fichier SDP devrait être généré sous le nom de saved_sdp_file . Elle doit être transférée au client, qui en a besoin pour recevoir le flux.

Code à exécuter du côté client

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X