Ich möchte die Videoquelle in einer Streaming-Videoanwendung dynamisch wechseln. Die verschiedenen Videoquellen haben jedoch einzigartige Bilddimensionen. Ich kann einzelne SDP-Dateien für jede Videoquelle erstellen, aber ich möchte sie in einer einzigen SDP-Datei kombinieren, so dass der Anzeigeclient die Größe des Anzeigefensters automatisch ändern könnte, wenn sich die Videoquelle ändert. Hier sind zwei Beispiel SDP-Dateien:Mehrere H.264-Videostreams in einer RTP-Sitzung
640x480.sdp:
v=0 o=VideoServerIN IP4 192.168.0.2 s=VideoStream640x480 t=0 0 c=IN IP4 192.168.0.2 m=video 8000/2 RTP/AVP 96 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=0; profile-level-id=4D4033; sprop-parameter-sets=Z01AM5ZkBQHtCAAAAwAIAAADAYR4wZU=,aO48gJ== a=control:trackID=1
960x480.sdp:
v=0 o=VideoServerIN IP4 192.168.0.2 s=VideoStream960x480 t=0 0 c=IN IP4 192.168.0.2 m=video 8000/2 RTP/AVP 96 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=0; profile-level-id=4D4033; sprop-parameter-sets=J01AM5WwPA9sBAIA,KO4G8gA= a=control:trackID=1
Wie können diese einzelnen Dateien in einer einzigen SDP-Datei kombiniert werden?
Ich würde auch die sprop-Parameter-Sets fallen lassen und sie im Band haben und nur eine Videomedienleitung haben. Alle h264-Encoder haben sie sowieso in Band. Ich würde dann eine Art von Back-Channel haben, wenn Sie wollen, dass der Client die gesendete Videogröße steuert und nur Feeds im laufenden Betrieb wechselt. Der Client kann einfach "erkennen", wenn sich die Auflösung geändert hat und seine Anzeigegröße ändert. Das hat für mich gut funktioniert. Das einzige Problem ist, dass Sie die SDP-Parameter aktualisieren müssen, wenn Ihre Größe (Bitrate) größer wird als die angegebene Profil-Ebene (unwahrscheinlich bei 5.1, die sie verwenden). –