So erstellen Sie einen ffmpeg-Stream h264 mit PPS und SPS im RTP-Stream

So erstellen Sie einen ffmpeg-Stream h264 mit PPS und SPS im RTP-Stream

Ich versuche, mit ffmpeg einen h264-Stream über RTSP zu empfangen und diesen Stream als Multicast-RTP-Stream weiterzuleiten. Ich kann den Stream empfangen und ihn mit dem folgenden Befehl als Multicast-RTP-Stream ausgeben: ffmpeg -i rtsp://10.255.11.203/ProfileToken_1_1 -vcodec copy -an -f rtp rtp://230.255.10.25:50000

Der eingehende Stream enthält SPS-PPS- und SEI-Pakete. Ich kann ffmpeg nicht dazu bringen, diese auch auszugeben.

Ich habe mit dem Parameter zum Aktivieren und Deaktivieren des globalen Headers experimentiert -flags global_headerund ich habe versucht, ihn hinzuzufügen, -bsf h264_mp4toannexbwas jedoch nicht funktioniert, da der eingehende Stream bereits Annex-B ist.

Antwort1

Sind sie im eingehenden Datenstrom enthalten oder wurden sie einfach nicht benötigt?

Wenn Sie den Stream über RTSP empfangen, empfangen Sie wahrscheinlich einen RTP-Stream, der diese Pakete nicht enthält. Ihr Client hätte sich über RTCP verbunden, um das SDP zu erhalten, das diese Streams beschreibt, da PPS und SPS normalerweise einmal pro Stream erfolgen, sofern Sie nicht Auflösung, Bildrate usw. ändern.

Führen Sie den Befehl aus, den Sie ausgeführt haben, aber in der ffmpeg-Ausgabe sehen Sie einen Abschnitt wie diesen:

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

Alles nach der SDP-Zeile muss in einer Datei mit dem Namen .sdp gespeichert werden. Um eine Verbindung zum Stream herzustellen, muss man nur die Datei öffnen:

ffplay -i filename.sdp

Wenn Sie die Datei auf einem Server ablegen, könnte dieser die Adresse öffnen:

ffplay -i http://yourhost/filename.sdp

verwandte Informationen