대본

대본

대본

RTP를 사용하여 두 호스트 간에 비디오를 스트리밍하려고 합니다. 이전에 다음 2개의 명령을 사용하여 VLC를 사용하여 이 문제를 해결했습니다.

서버 측

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

고객 입장에서

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

요구 사항

이제 FFMPEG를 사용하여 동일한 결과를 얻고 싶습니다.동등한 명령은 무엇입니까?

지금까지 완료된 작업

서버 측

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

고객 입장에서

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

하지만 이 방법으로는 수신된 스트림을 녹음할 수 없습니다.

답변1

클라이언트의 IP가 10.0.0.2라고 가정합니다.

서버 측에서 실행되는 코드

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

이 코드를 실행한 후에는 SDP 파일이 생성되어야 합니다 saved_sdp_file. 이는 스트림을 수신하는 데 필요한 클라이언트로 전송되어야 합니다.

클라이언트 측에서 실행할 코드

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

답변2

서버 주소를 10.158.210.39로 간주하고 UDP 포트 5155에서 스트리밍합니다.

서버 측:

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_mpegtsVLC에서도 지원되는 형식입니다. 복사할 필요가 없습니다.SDP스트림을 수신하기 위해 클라이언트에 파일을 보냅니다.

고객 입장에서:

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

수신된 스트림은 다음 위치에 저장됩니다.저장.mp4

ffplay를 사용하여 수신하려면:

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

이렇게 하면 비디오가 재생됩니다(mobaxterm을 사용하는 경우 SSH 연결에서도 마찬가지입니다).

관련 정보