7 Stimmen

Streaming H.264 Video über RTP von Live555 nach VLC

Ich wäre sehr dankbar, wenn Sie mir bei einem H264-Streaming-Problem helfen könnten, das ich seit Wochen zu lösen versuche.

Ich muss H264-Video von Live555 (auf einem Linux-Rechner) auf den VLC Media Player (auf einem Windows-Rechner) streamen. Mit RTSP funktioniert es sehr gut, aber ich muss RTP ohne RTSP verwenden, und mit RTP sehe ich kein Video. VLC erkennt nicht einmal, dass der Stream H264 ist.

Dies ist die über RTSP übertragene SDP-Datei (die funktioniert):

v=0
o=- 1277647151953158 1 IN IP4 190.40.14.100
s=Session streamed by "testH264VideoAudioStreamer"
i=test-h264-mux.mpg
t=0 0
a=tool:LIVE555 Streaming Media v2007.05.24
a=type:broadcast
a=control:*
a=source-filter: incl IN IP4 * 190.40.14.100
a=rtcp-unicast: reflection
a=range:npt=0-
a=x-qt-text-nam:Session streamed by "testH264VideoAudioStreamer"
a=x-qt-test-inf:test-h264=mux.mpg
m=video 8554 RTP/AVP 96
c=IN IP4 190.40.15.63/7
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=000042;sprop-parameter-sets=H264
a=control:track1

Aber wenn ich von RTSP zu RTP wechsle, funktioniert es nicht. Ich habe versucht, die obige SDP-Datei im VLC-Player zu laden, aber es hilft nicht.

Hier ist ein Teil der Debug-Ausgabe des VLC Players 0.8.6d:

main input debug: thread 4016 (input) created at priority 1 (input/input.c:265)
main input debug: `rtp://@190.40.15.63:8554' gibt Zugriff `rtp demux' `', Pfad `@190.40.15.63:8554'
main input debug: Erstelle Demux: Zugriff='rtp' demux='' Pfad='@190.40.15.63:8554'
main demuxer debug: Suche nach access_demux-Modul: 0 Kandidaten
main demuxer warning: Kein access_demux-Modul passte zu "rtp"
main input debug: Erstelle Zugriff 'rtp' Pfad='@190.40.15.63:8554'
main access debug: Suche nach Zugriffsmodul: 6 Kandidaten
access_udp access debug: Öffnen des Servers=:0 Lokal=190.40.15.63:8554
main access debug: Netz: Verbindung zu '[]:0@[190.40.15.63]:8554
main access debug: Suche nach Netzwerkmodul: 1 Kandidat
ipv6 access debug: 190.40.15.63: Host oder Dienst nicht gefunden
main access debug: Verwende Netzwerkmodul "ipv6"
main access debug: Entferne Netzwerkmodul "ipv6"
main access debug: Suche nach Netzwerkmodul: 1 Kandidat
ipv4 access debug: Auflösen von 190.40.15.63:8554...
ipv4 access debug: Auflösen :0...
main access debug: Verwende Netzwerkmodul "ipv4"
main access debug: Entferne Netzwerkmodul "ipv4"
main access debug: Verwende Zugriffsmodul "access_udp"
main private debug: Vorabpufferung
access_udp access debug: Keine RTP-Header erkannt
main input debug: Erstelle Demux: Zugriff='rtp' demux='' Pfad='@190.40.15.63:8554'
main demuxer debug: Suche nach demux2-Modul: 45 Kandidaten
ts demuxer warning: TS-Modul verworfen (Synchronisationsverlust)
ffmpeg demuxer debug: Erkanntes Format: mp3

(Es könnten Schreibfehler vorhanden sein, da ich es manuell kopieren musste - fragen Sie nicht :) )

In VLC 1.0.5 erhalte ich einen unbekannten Payload-Typ Fehler, und die SDP kann überhaupt nicht geladen werden aufgrund eines Unbekannten Netzwerkstapel-Fehlers. Andere angezeigte Fehler sind SDP-Verbindungsinformationen nicht unterstützt und Sap Demuxer Warnung: Ungültige SDP.

Jede Hilfe wird sehr geschätzt!

Vielen Dank,

Ilya

8voto

Ilya Kogan Punkte 21256

Was ich tun musste, war eine SDP-Datei anstelle des direkten Öffnens des Streams zu verwenden. Es stellte sich heraus, dass SDP-Daten nur über RTSP übertragen werden. Beim Streamen von RTP musste ich die SDP-Datei selbst bereitstellen.

Also habe ich Folgendes getan:

  1. Streamen mit RTSP (die Methode, die funktioniert),
  2. Verwenden von Wireshark, um die über RTSP übertragene SDP-Datei aufzuzeichnen,
  3. Speichern der SDP als Textdatei mit der Erweiterung .sdp,
  4. In VLC die SDP-Datei öffnen, anstatt den Netzwerkstream direkt zu öffnen.

Und es hat Magie bewirkt!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X