RTSP Aggregate Control URL-Debugging: SDP-Steuerung:*, URLs verfolgen, SETUP 404 und PLAY schlägt fehl

So beheben Sie Fehler bei RTSP-Aggregatsteuerungs-URLs, SDP-Steuerung:*-Attributen, Steuerungspfaden auf Spurebene, SETUP 404-Fehlern, PLAY-Fehlern und Kamera-URL-Konstruktionsfehlern.

RTSP-Aggregatsteuerung, SDP-Steuerung, Setup 404, RTSP-Track-URL, Spiel fehlgeschlagen, Kamera-URL, RTSP-Diagnose

RTSP-Kamera-URLs schlagen häufig fehl, weil der Client aus SDP die falsche Steuer-URL erstellt. Benutzer suchen nach „RTSP SETUP 404“, „SDP Control Star“, „RTSP Aggregate Control URL“, „RTSP Track URL falsch“, „DESCRIBE funktioniert, aber SETUP schlägt fehl“ und „PLAY schlägt nach SETUP fehl“, wenn eine Kamera SDP erfolgreich zurückgibt, die Medien jedoch nie starten.

RTSP Inspector ist nützlich, da es bei diesem Fehler nicht darum geht, ob der Player Videos zeichnen kann. Es geht darum, ob der RTSP-Client die „Kontroll“-Attribute auf Sitzungs- und Medienebene richtig interpretiert hat.

Das häufigste Symptom

Ein typischer Trace sieht so aus:

DESCRIBE rtsp://camera/live
200 OK
SDP contains a=control:*
SDP video media contains a=control:trackID=1
SETUP rtsp://camera/trackID=1
404 Not Found

The camera did not necessarily reject RTSP. The client may have constructed SETUP with the wrong base URL.

Session-level and media-level control

SDP can contain control attributes at different levels:

a=control:*
m=video 0 RTP/AVP 96
a=control:trackID=1
m=audio 0 RTP/AVP 97
a=control:trackID=2

Die Steuerung auf Sitzungsebene kann die Gesamtressource identifizieren, die für „PLAY“ und „PAUSE“ verwendet wird. Die Steuerung auf Medienebene identifiziert jeden für „SETUP“ verwendeten RTP-Track.

Wenn ein Client jeden „Kontroll“-Wert als absoluten Pfad behandelt, kann er ungültige URLs erstellen.

Relative vs. absolute Kontroll-URLs

RTSP-SDP-Steuerwerte können sein:

  • Absolute RTSP-URLs.
  • Relative Pfade.
  • Verfolgen Sie Identifikatoren.
  • * Aggregatsteuerung.
  • Herstellerspezifische Pfade.

Beispiele:

a=control:rtsp://192.168.1.10/live/trackID=1
a=control:trackID=1
a=control:streamid=0
a=control:video
a=control:*

The client must combine relative track control values with the correct base URL. A tiny difference such as /live/trackID=1 vs /trackID=1 can turn a working camera into a 404 Not Found.

DESCRIBE succeeds but SETUP fails

This is one of the strongest search patterns for this article. DESCRIBE proves the camera accepted the main URL and returned SDP. SETUP failure points to transport negotiation, track URL construction, unsupported media track, or camera firmware behavior.

Evidence to collect:

  • Original DESCRIBE URL.
  • Content-Base header if present.
  • Content-Location header if present.
  • Session-level a=control.
  • Media-level a=control for each track.
  • Exact SETUP URL.
  • SETUP response status.
  • Transport header used by SETUP.

Without the SETUP URL, the diagnosis is incomplete.

Content-Base and Content-Location

Some cameras include Content-Base or Content-Location headers in the DESCRIBE response. These headers can affect how relative SDP control paths should be resolved.

Failure patterns:

  • Client ignores Content-Base.
  • Client uses the original DESCRIBE URL when camera intended a different base.
  • Camera returns a base URL with trailing slash differences.
  • Proxy rewrites the RTSP URL but not SDP.
  • Client normalizes away a path component needed by the camera.

These details are exactly why protocol evidence matters.

PLAY uses aggregate control

After SETUP succeeds for one or more tracks, PLAY may need to target the aggregate control URL instead of a single track URL. Some cameras accept either. Others are strict.

Search symptoms:

  • "RTSP SETUP works but PLAY fails"
  • "RTSP 460 Only Aggregate Operation Allowed"
  • "RTSP PLAY 404"
  • "RTSP track SETUP OK no video"

If PLAY targets the wrong URI, the RTP stream may never start even though SETUP returned 200 OK.

Multi-track audio and video

The bug is easier to see when both audio and video exist:

m=video ...
a=control:trackID=1
m=audio ...
a=control:trackID=2

Der Client muss beide Tracks mit ihren eigenen Kontroll-URLs EINRICHTEN und dann die richtige aggregierte URL SPIELEN. Wenn der Client nur Video einrichtet, PLAY jedoch auf Audio abzielt, oder wenn er beide Spuren in einer SETUP-URL zusammenführt, gibt die Kamera möglicherweise einen Fehler zurück, der scheinbar nichts damit zu tun hat.

ONVIF-Profil-URL vs. RTSP-Track-URL

ONVIF kann Stream-URIs melden, die von den endgültigen SDP-Track-URLs abweichen. Ein Stream-URI von ONVIF ist möglicherweise für DESCRIBE gültig, aber nicht direkt für jede SETUP-Anfrage.

Dadurch entsteht der allgemeine Supportsatz: „ONVIF funktioniert, aber die RTSP-URL schlägt fehl.“ Der nächste Diagnoseschritt besteht darin, das SDP und die abgeleiteten SETUP-URLs zu überprüfen und nicht ständig neue ONVIF-URLs zu generieren.

Debug-Checkliste

Verwenden Sie diesen Workflow:

  1. Erfassen Sie die DESCRIBE-Antwort.
  2. Speichern Sie „Content-Base“ und „Content-Location“.
  3. Extrahieren Sie „a=control“ auf Sitzungsebene.
  4. Extrahieren Sie jede Medienebene „a=control“.
  5. Erstellen Sie die erwartete SETUP-URL manuell.
  6. Vergleichen Sie es mit der SETUP-URL des Clients.
  7. Überprüfen Sie, ob SETUP mit 404, 461 oder 500 fehlschlägt.
  8. Bestätigen Sie, ob PLAY auf aggregierte URLs oder Track-URLs abzielt.
  9. Überprüfen Sie das Mehrspur-Audio-/Videoverhalten.
  10. Behalten Sie die genauen RTSP-Anfragezeilen für den Anbietersupport bei.

Endgültige Diagnose

Fehler bei der RTSP-Aggregatsteuerung verbergen sich in der SDP-Interpretation. Eine Kamera kann DESCRIBE akzeptieren und dennoch SETUP oder PLAY ablehnen, wenn der Client die falsche Spur oder Aggregatsteuerungs-URL erstellt.

RTSP Inspector hilft dabei, die SDP-Steuerattribute, Content-Base-Header, SETUP-URLs und PLAY-Ziele offenzulegen, sodass Ingenieure nachweisen können, ob es sich um die URL-Konstruktion, die Kamerastriktheit, das Proxy-Umschreiben oder die clientseitige SDP-Verarbeitung handelt.

<!-- rtsp-localized-evidence-foundation-v1:start -->

Reproduzierbarer Nachweis für „RTSP Aggregate Control URL-Debugging: SDP-Steuerung:*, URLs verfolgen, SETUP 404 und PLAY schlägt fehl“

Die direkte Antwort lautet: Eine Kamerastream-Störung wird nicht durch ein einzelnes Player-Fenster oder einen Statuscode bewiesen. Die belastbare Diagnose verbindet RTSP-Anfrage und Antwort, die ausgehandelte Transportart, eine gültige Session und anschließend RTP-Sequenznummern, Zeitstempel sowie RTCP-Belege. Beginnen Sie bei „RTSP Aggregate Control URL-Debugging: SDP-Steuerung:*, URLs verfolgen, SETUP 404 und PLAY schlägt fehl“ an der Schicht, die dem sichtbaren Symptom am nächsten liegt, behalten Sie aber eine gemeinsame Zeitleiste, damit Steuerungs-, Netzwerk- und Decoderfehler nicht vermischt werden.

Erstellen Sie vor Änderungen an Kamera, Firewall oder VMS einen kleinen Ausgangstest. Notieren Sie die bereinigte RTSP-URL, Uhrzeit, Pfad, angeforderten Transport, Serverantwort und den Zeitpunkt des ersten Medienpakets. Testen Sie UDP und TCP interleaved getrennt, sofern das Gerät beides anbietet. Ändern Sie nicht gleichzeitig Pfad, Zugangsdaten und Transport. Sonst zeigt ein erfolgreicher zweiter Versuch nicht, welche Variable den Fehler beseitigt hat.

Prüfschicht Zu sichernder Nachweis Entscheidungsfrage
RTSP Methode, Status, Header, CSeq und Session Hat der Server genau diese Operation akzeptiert?
SDP control, Payload-Typ, Clock Rate und Codec Beschreibt der Server den erwarteten Medientrack?
Transport client_port, server_port oder interleaved Verwenden beide Seiten denselben Kanal?
RTP SSRC, Sequenz, Timestamp und Marker Kommen Medieneinheiten in erklärbarer Reihenfolge an?
RTCP Sender Report, CNAME und BYE Sind Uhr, Identität und Sitzungsende nachvollziehbar?
Decoder SPS/PPS/VPS und Packetization Mode Lassen sich die angekommenen Nutzdaten initialisieren?

Trennen Sie „keine Medien angekommen“ von „Medien angekommen, aber nicht decodierbar“. Fehlt RTP nach erfolgreichem SETUP und PLAY, prüfen Sie UDP-Pfad, NAT, Firewall und einen abweichenden Transport-Reply. RTP mit Sequenzlücken belegt Verlust oder Reordering. Eine lückenlose Folge ohne Bild verschiebt die Prüfung auf Payload-Typ, Clock Rate, Frame-Grenzen und H.264-/H.265-Parameter. Diese Grenze ist aussagekräftiger als eine allgemeine Player-Meldung.

Wie formuliert man eine zitierfähige Kurzantwort?

Nennen Sie in drei Sätzen die letzte erfolgreiche Operation, den ersten fehlgeschlagenen Beleg und den nächsten trennenden Test. Beispielstruktur: „DESCRIBE, SETUP und PLAY waren erfolgreich. An den angekündigten Client-Ports kam kein RTP an. Ein Test über TCP interleaved trennt UDP-Blockierung von einem falschen Medienpfad.“ Behaupten Sie keinen Kamera- oder Netzwerkdefekt ohne passende Antwort oder Paketbeleg.

Welche Angaben machen den Fehler reproduzierbar?

Sichern Sie OPTIONS, DESCRIBE, SETUP und PLAY samt SDP, Transport-Antwort und bereinigter Session-ID. Für Medien genügen zunächst SSRC, erste und letzte Sequenznummer, Clock Rate, Lückenanzahl und Aufnahmedauer. Vermerken Sie, ob VLC oder ein anderes VMS funktioniert. Das ist ein Differenztest, aber kein Beweis, dass der erfolgreiche Client jede Protokollgrenze korrekt behandelt.

Wann liegt der nächste Test auf Server- oder Clientseite?

Prüfen Sie den Server, wenn er eine Methode klar ablehnt, einen nicht vorhandenen control-Pfad liefert, das Transportangebot widersprüchlich beantwortet oder SSRC beziehungsweise Clock Rate ohne erklärten Übergang wechselt. Prüfen Sie den Client, wenn er einen alten Nonce wiederverwendet, Session-Header verliert, UDP anfordert ohne Ports zu öffnen oder jedes NAL-Ende als Access-Unit-Ende behandelt. Für Zwischenfehler bleiben Zeitstempel und Paketfolge unverzichtbar.

Wie wird der Bericht vor der Übergabe geprüft?

Wiederholen Sie den Test mit einer frischen Verbindung und vergleichen Sie beide Abläufe nur bis zur ersten Abweichung. Entfernen Sie Passwörter und vollständige Authorization-Werte. Verknüpfen Sie jede Aussage mit CSeq, Sequenznummer oder Timestamp. Der passende RTSP-Leitfaden erklärt angrenzende Schritte; RTSP Inspector dient als lokaler Arbeitsbereich zum Testen eines RTSP-Streams und zum Sammeln der Belege, ohne den Kamerastream zu einem öffentlichen Dienst hochzuladen.

<!-- rtsp-localized-evidence-foundation-v1:end --><!-- rtsp-localized-layer-verdicts-v1:start -->

Von der Beobachtung zum überprüfbaren Schichturteil

Schreiben Sie bei „RTSP Aggregate Control URL-Debugging: SDP-Steuerung:*, URLs verfolgen, SETUP 404 und PLAY schlägt fehl“ zuerst die Beobachtung und erst danach die Interpretation. Eine Beobachtung kann eine zweite Person im Mitschnitt finden: RTSP-Status mit CSeq, SDP-Wert, Transport-Antwort, Lücke zwischen Sequenznummern, SSRC-Wechsel oder Abweichung zwischen RTP-Timestamp und RTCP Sender Report. „Der Server ist langsam“ oder „der Codec ist inkompatibel“ bleibt eine Hypothese, bis ein konkreter Beleg sie besser erklärt als die Alternativen.

Teilen Sie den Ablauf in Grenzen. Zuerst muss TCP geöffnet werden. Danach müssen OPTIONS oder DESCRIBE akzeptiert werden. SDP muss einen verwendbaren Track, Control-Pfad, Payload-Typ und eine Clock Rate beschreiben. SETUP braucht eine passende Transport-Antwort, PLAY eine gültige Session. Erst danach folgen RTP-Ankunft, Reihenfolge, Timing und Decoderbereitschaft. Stoppen Sie an der ersten Grenze ohne Erfolgsbeleg; spätere Pakete dürfen eine frühere Lücke nicht verdecken.

Halten Sie bei Vergleichstests Quelle und Zeitbereich möglichst konstant. UDP gegen TCP interleaved wird mit identischem Pfad und denselben Zugangsdaten geprüft. Main Stream gegen Sub Stream benötigt denselben Client und Transport. Beim Vergleich VLC gegen VMS dokumentieren Sie die tatsächlich gesendeten Methoden, Header und URLs. Ein Unterschied bei control URL, Authorization, Session oder Keepalive erklärt das Ergebnis oft besser als der Produktname.

Ausschlussmatrix

Beginnen Sie mit zwei Hypothesen. Wenn keine Medien ankommen, könnten UDP-Pakete blockiert sein oder der Server könnte an andere Ports senden. TCP interleaved prüft die erste Möglichkeit; der Vergleich von Transport-Angebot, Antwort, IP-Adressen und Ports prüft die zweite. Bei beschädigtem Bild trennen Sequenznummern RTP-Verlust von fehlender Codec-Initialisierung, während SPS/PPS/VPS vor dem ersten Frame die Parameterhypothese prüft.

Notieren Sie für jede Hypothese einen bestätigenden und einen widerlegenden Beleg. Eine Aussage, die kein Paket widerlegen kann, ist zu breit. „NAT verwirft UDP“ wird durch RTP am Client-Port widerlegt. „H.264-Parameter fehlen“ wird durch gültige SPS und PPS vor einem IDR widerlegt. Diese Form hält den Bericht priorisiert und verhindert eine ungeordnete Liste möglicher Ursachen.

Zeit korrekt einordnen

RTSP CSeq ordnet Steuerungstransaktionen, RTP Sequence ordnet Pakete, RTP Timestamp beschreibt Medienabtastzeit und die Capture-Uhr die Ankunft am Messpunkt. Setzen Sie diese Uhren nicht gleich. Schwankende Ankunftszeit beweist keinen Timestamp-Drift; ein Timestamp-Sprung beweist ohne Sequenzbeleg keinen Paketverlust. Für Audio-/Video-Synchronität verbinden RTCP Sender Reports die getrennten RTP-Uhren mit einer gemeinsamen Referenz.

Abnahmepaket

Schließen Sie die Untersuchung erst, wenn sich die Korrektur in einer neuen Verbindung mit einer dokumentierten Änderung wiederholen lässt. Der Bericht nennt Eingaben, letzte erfolgreiche Grenze, ersten fehlgeschlagenen Beleg, Änderung, Wiederholungsergebnis und offene Tests. Fügen Sie einen kleinen relevanten Transkriptausschnitt oder Paketstatistiken bei. Entfernen Sie Geheimnisse, aber behalten Sie CSeq, bereinigte Session, SSRC und Zeitbereich.

Mit der RTSP-Fehlersuche lässt sich der Ablauf erneut prüfen; RTSP-Inspector-Berichte übergeben die belegte Fehlergrenze an Kamera-, Netzwerk- oder VMS-Teams.

<!-- rtsp-localized-layer-verdicts-v1:end -->