
ffmpeg를 사용하여 RTSP를 통해 h264 스트림을 수신하고 해당 스트림을 멀티캐스트 rtp 스트림으로 전달하려고 합니다. 스트림을 수신하고 다음 명령을 사용하여 멀티캐스트 RTP 스트림으로 출력할 수 있습니다.
ffmpeg -i rtsp://10.255.11.203/ProfileToken_1_1 -vcodec copy -an -f rtp rtp://230.255.10.25:50000
수신 스트림에는 SPS PPS 및 SEI 패킷이 포함되어 있습니다. 나는 그것들을 출력하기 위해 ffmpeg를 만들 수 없습니다.
전역 헤더를 활성화 및 비활성화하는 매개 변수를 실험했으며 들어오는 스트림이 이미 Annex-B이므로 작동하지 않는 -flags global_header
추가를 시도했습니다 .-bsf h264_mp4toannexb
답변1
들어오는 스트림에 포함되어 있습니까, 아니면 필요하지 않았습니까?
RTSP를 통해 스트림을 수신하는 경우 해당 패킷이 없는 RTP 스트림을 수신하는 것일 수 있습니다. 해상도, 프레임 속도 등을 변경하지 않는 한 PPS와 SPS는 일반적으로 스트림당 한 번만 수행되므로 클라이언트는 해당 스트림을 설명하는 SDP를 얻기 위해 RTCP를 통해 연결했을 것입니다.
실행했던 명령을 실행하면 ffmpeg 출력에 다음과 같은 섹션이 표시됩니다.
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 239.100.200.100
t=0 0
a=tool:libavformat 56.40.101
m=video 10000 RTP/AVP 96
b=AS:3027
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAM6xyBEB4AiflwEQAAAMABAAAAwDAPGDGEYA=,aOhDssiw; profile-level-id=640033
SDP 줄 뒤의 모든 내용은 filename.sdp에 저장되어야 합니다. 스트림에 연결하려면 누군가 파일을 열면 됩니다.
ffplay -i filename.sdp
파일을 서버에 넣으면 주소가 열릴 수 있습니다.
ffplay -i http://yourhost/filename.sdp