Szenario

Szenario

Szenario

Ich versuche, ein Video zwischen zwei Hosts mit RTP zu streamen. Ich habe dieses Problem zuvor mit VLC mit den folgenden beiden Befehlen gelöst

Serverseite

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

Client-Seite

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

Erfordernis

Jetzt möchte ich dasselbe erreichen, aber mit FFMPEG.Was wäre der entsprechende Befehl?

Bisher geleistete Arbeit

Serverseite

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

Client-Seite

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

Allerdings kann ich den empfangenen Stream auf diese Weise nicht aufzeichnen.

Antwort1

Angenommen, die IP des Clients ist 10.0.0.2

Auf dem Server auszuführender Code

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

Nach dem Ausführen dieses Codes sollte eine SDP-Datei mit dem Namen generiert werden saved_sdp_file. Diese sollte an den Client übertragen werden, der sie zum Empfangen des Streams benötigt.

Auf der Clientseite auszuführender Code

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

Antwort2

Die Serveradresse lautet 10.158.210.39 und das Streaming erfolgt über UDP-Port 5155.

Serverseitig:

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_mpegtsist ein Format, das auch von VLC unterstützt wird. Es besteht keine Notwendigkeit, diesdpDatei an den Client, um den Stream zu empfangen.

Client-Seite:

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

Der empfangene Stream wird gespeichert unterspeichern.mp4

So empfangen Sie mit ffplay:

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

Dadurch wird das Video abgespielt (auch bei SSH-Verbindung, wenn Sie Mobaxterm verwenden).

verwandte Informationen