Comment calculer le RTP Timestamp pour chaque paquet de données dans un flux audio
J'ai lu le RTP spécification et je n'arrive pas à obtenir ma tête autour du Paquet RTP Timestamp. J'ai essayé de mettre en œuvre de différentes manières dans mon serveur, mais je ne peux pas obtenir le joueur à jouer à droite.
Le "mauvais" comportement, je vais avoir ici, c'est que (- je utiliser le lecteur VLC pour lire le RTSP url de mon serveur) - je trouver les journaux du joueur en disant "tampon de façon trop tard" et "mauvais PTS valeur". Ce qui signifie en quelque sorte que les trames audio arrive dans un des paquets dont le timestamp est pas. J'ai essayé de mettre en œuvre la génération de l'horodatage de différentes manières, mais pas de chance.
J'ai besoin de quelques détaillée des ressources ou de référence qui a vraiment mis mon sur la bonne voie de la compréhension de la façon de RTP timestamp fonctionne et est généré.
OriginalL'auteur Sherif | 2014-07-09
Vous devez vous connecter pour publier un commentaire.
Audio et vidéo les horodatages sont calculés de la même manière.
Audio RTP payload formats utilise généralement une 8 khz horloge. Puis prendre la première d'échantillonnage audio, contenant par exemple 20ms et d'attribuer ce cachet de date t = 0. 20 ms est un 1/50 de seconde, donc cela équivaut à un 8000/50 = 160 timestamp incrément pour l'échantillon suivant. Dans le cas de l'audio, vous pouvez calculer la durée d'échantillonnage basé sur la fréquence d'échantillonnage, nombre de bits par échantillon et le nombre de canaux. Dans le cas d'une source en direct, l'échantillon peut être horodaté déjà, et vous avez simplement à traduire l'horodatage RTP timestamp.
Notez également que le RTP timestamp doit commencer à un nombre aléatoire et pas à zéro.
Une bonne référence pour le protocole RTP, en général, peut être trouvé dans l'Colin Perkins livre, RTP Audio et vidéo pour Internet. Alors que certaines des informations peuvent être obsolètes, il vous donnera une bonne compréhension de la RTP.
Mise à jour:
L'horloge murale est déterminé par l'utilisation de l'horodatage NTP dans le RTCP SR, qui vous indique à quelle heure le RTP timestamp cartes pour savoir RTP timestamp 160 = date de quelques temps. Cela est requis, par exemple pour que la synchronisation de la vidéo où les deux RTP horodatages sont à l'aide de différents décalages aléatoires. Bien sûr, la validité de la date/de l'heure dépend de la façon dont l'horodatage NTP est calculé sur l'expéditeur et il n'y a aucune garantie que cela tient compte de la date/de l'heure. Vous pouvez renifler le trafic avec wireshark qui vous dira quelle est la date/heure est représentée par un horodatage NTP.
Mise à jour 2:
Cela dépend de ce que le client attend et comment le client est mis en œuvre. Si vous écrivez votre propre RTSP client, il pourrait suffire . E. g si vous avez écrit un DirectShow filtre source vous pourriez traduire le RTP timestamp directement dans un média d'horodatage et qui serait à l'œuvre. Cependant, puisque vous utilisez un client existant, il pourrait par exemple être le fait que le client utilise uniquement synchronisée RTP horodateurs donc, dans un tel cas, il serait pas suffire. En résumé, il dépend de la mise en œuvre du client. Je ne suis pas sûr de ce que VLC est attendu.
Voir mise à jour.
Si minime implémentation de RTSP & RTP peut ignorer l'aide RTCP et, par conséquent, d'horodatage NTP ( le mur de l'horloge )?
Pourriez-vous confirmer?
Pourquoi les RTP timestamp toujours commencer par un nombre aléatoire? Ne serait-ce pas le rendre plus confus pour comprendre un point de lecture en cours?
OriginalL'auteur Ralf