So berechnen Sie die RTP-Zeitstempels für jedes Paket in einem audio-stream
Lese ich die RTP-Spezifikation und ich kann nicht scheinen, um meinen Kopf um die RTP-Paket-Timestamp. Ich habe versucht, es zu implementieren, die in unterschiedlicher Weise in meinem server aber ich kann nicht für die Spieler, um es auch richtig spielen.
"Falsch" Verhalten, die ich habe ist, dass hier (ich benutze den VLC-player zum Abspielen von RTSP-url zu meinem server) finde ich die logs der Spieler sagen "Puffer viel zu spät" und "falsch-Punkte-Wert". Das heißt irgendwie, dass die audio-frames ankommt Pakete, deren Zeitstempel nicht richtig gesetzt. Ich habe versucht zu implementieren, die die Erzeugung der Zeitstempel in verschiedene Möglichkeiten, aber kein Glück.
Brauche ich einige detaillierte Ressource oder eine Referenz, die wirklich meinen auf dem richtigen Weg zu verstehen, wie RTP-timestamp funktioniert und generiert wird.
InformationsquelleAutor Sherif | 2014-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Audio-und video-Zeitstempel werden in der gleichen Weise berechnet.
Audio-RTP payload-Formate in der Regel nutzt ein 8-KHz-Uhr. Nehmen Sie dann die erste audio-samples mit z.B. 20ms und weisen Sie diese Zeitmarke t = 0. 20 ms ist eine 1/50 Sekunde, somit entspricht dies einer 8000/50 = 160 timestamp-Inkrement für die folgende Probe. Im Falle von audio können Sie berechnen, die sample-Dauer, basierend auf der sample-rate, bit pro sample und die Anzahl der Kanäle. Im Falle einer live-Quelle, die Probe sein könnte, Zeitstempel bereits, und Sie haben einfach zu übersetzen, die Zeitstempel zu einer RTP-timestamp.
Beachten Sie auch, dass der RTP-Zeitstempel sollte eine zufällige Zahl und nicht bei null.
Eine gute Referenz für RTP im Allgemeinen finden Sie in der Colin Perkins Buch, RTP - Audio-und video für das Internet. Während einige der Informationen veraltet, es wird Ihnen ein gutes Verständnis von RTP.
Update:
Die Wanduhr ist bestimmt durch die NTP-timestamp in die RTCP-SR, die Ihnen sagt, was Zeit des RTP-timestamp-Karten, d.h. die RTP-timestamp-160 = ein paar Tag Zeit. Dies ist erforderlich, z.B. für die synchronisation zu video, wo beide RTP-Zeitstempel werden mit verschiedenen zufälligen offsets. Natürlich ist die Gültigkeit von Datum/Uhrzeit hängt davon ab, wie der NTP-timestamp, berechnet auf den Absender und es gibt keine Garantie, dass dies spiegelt die aktuelle Datum/Zeit. Sie können den Verkehr mit wireshark schnüffeln, die Ihnen sagen, was Datum/Zeit ist vertreten durch einen NTP-timestamp.
Update 2:
Es hängt davon ab, was der Kunde erwartet und wie der client implementiert ist. Wenn Sie schreiben Ihre eigenen RTSP-client ausreichen . E. g, wenn Sie schrieb einen DirectShow-Quell-filter, den Sie übersetzen könnte RTP-timestamp direkt in ein media-timestamp und das würde funktionieren. Jedoch, da Sie mit bestehenden Kunden, es könnte z.B. sein, dass der client nur verwendet, synchronisiert RTP-Zeitstempel, so dass in einem solchen Fall würde es nicht ausreichen. Zusammenfassend hängt es von der client-Implementierung. Ich bin mir nicht sicher, was VLC erwartet.
Siehe update.
So minimalen Umsetzung der RTSP - & RTP ignorieren kann, mit RTCP und daher NTP timestamp ( Wanduhr )?
Könnten Sie das bestätigen?
Warum sollte der RTP-timestamp-start immer an eine zufällige Zahl? Würde nicht machen, dass es eher verwirrend, um herauszufinden, einen aktuellen spielen zeigen?
InformationsquelleAutor Ralf