Empfangen von RTP-Paketen nach RTSP setup
Ich versuche zu stream RTP-Pakete von einer IP-Kamera mit Python.
Ich bin in der Lage zu senden, die beschreiben, setup & play-Befehlen mithilfe von RTSP Protokoll, allerdings bin ich nicht in der Lage, um zu beginnen streaming des eigentlichen Videostreams mithilfe von RTP.
Hier ist der code:
import socket
def printrec(recst):
recs=recst.split('\r\n')
for rec in recs:
print rec
dest="DESCRIBE rtsp://admin:[email protected] RTSP/1.0\r\nCSeq: 2\r\nUser-Agent: python\r\nAccept: application/sdp\r\n\r\n"
setu="SETUP rtsp://admin:[email protected]/trackID=1 RTSP/1.0\r\nCSeq: 3\r\nUser-Agent: python\r\nTransport: RTP/AVP;unicast;client_port=60784-60785\r\n\r\n"
play="PLAY rtsp://admin:[email protected]/RTSP/1.0\r\nCSeq: 5\r\nUser-Agent: python\r\nSession: SESID\r\nRange: npt=0.000-\r\n\r\n"
# .. here SESID will be substituted with the session id that SETUP returns us ..
ip="192.168.1.74"
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip,554))
s.send(dest)
recst=s.recv(4096)
printrec(recst)
# etc. then the same for the strins "setu" and "play"
....
Setup antwortet mir:
RTSP/1.0 200 OK
CSeq: 3
Session: 1117448817;timeout=60
Transport: RTP/AVP;unicast;client_port=60784-60785;server_port=8214-8215;ssrc=40d35c30;mode="play"
Date: Mon, Jan 19 2015 11:10:08 GMT
So haben wir die client-ports 60784 und 60785 und die server-ports 8214 und 8215.
Nächsten, spielen Sie antwortet mir:
RTSP/1.0 200 OK
CSeq: 5
Session: 1117448817
RTP-Info: url=rtsp://admin:12345@192.168.1.74/trackID=1;seq=3539; rtptime=16026930
Date: Mon, Jan 19 2015 11:10:08 GMT
Weiter, was soll ich tun, um zu starten empfangen von RTP-Paketen?
Öffnen Sie eine UDP-socket als Folgen .. ?
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.bind((ip, serverport))
sock.recv(4096)
Aber ich bekomme nichts .. (es Stände)
Entschuldigen Sie, meine schlechte Kenntnisse der buchsen..!
- Sollten Sie nicht verbindlich sein client_port?
Du musst angemeldet sein, um einen Kommentar abzugeben.
So,
Nach schweren sessions googeln und wireshark-Analyse, kam ich mit den richtigen Lösungen.
Ich bin Entsendung die daraus resultierende demo-code hier .. ich dachte, es könnte nützlich sein für die Gemeinschaft.
Wenn Sie sich jemals gewünscht, um zu Lesen ip-cams mit python und werfen den H264 stream in eine essbare Datei, das ist die Sache, die Sie suchen.
Genießen!
Dies ist, was ich jetzt verwende:
Sehen Sie mehr an https://elsampsa.github.io/valkka-examples/