7
votes

Client RTSP à Android

J'écris un client RTSP à Android. Je suis capable de recevoir les réponses pour toutes les demandes c'est-à-dire,

  1. Décrivez-le renvoie le 200 OK OK
  2. Configuration avec Transport: RTP / AVP: Unicast: Client_port = 4568: 4569 obtenu le message 200 OK Back
  3. a envoyé une lecture et obtenu le message OK

    Après cela comment obtenir les cadres audio et vidéo?

    J'ai cherché sur des blogs, mais tous dites à écouter chez Client_port mais je ne reçois aucun paquets.

    S'il vous plaît laissez-moi savoir que je vais faire correctement.


0 commentaires

4 Réponses :


4
votes

Vous pouvez ou non le savoir, mais Android a pris en charge la prise en charge du RTSP à l'aide de vidéosView.

http://developer.android.com/reference/android/widget /Videoview.html

Cela peut réduire votre temps de développement ... ou il peut être totalement inutile si vous essayez de rouler votre propre pile RTSP.


3 commentaires

Cela ne fonctionne pas avec le périphérique et l'émulateur. Il échoue dans le joueur_init avec pvmffailure.


J'ai trouvé que cela ne fonctionne pas avec l'émulateur, mais pour travailler sur tous les appareils que j'ai mises la main. Certains d'entre eux exigent que vous ayez l'autorisation de verrouillage de réveil définie dans votre manifeste (silhouet que celui-ci)


J'ai défini la permission de verrouillage de réveil dans le fichier manifeste. Il échoue toujours avec PvmffAilure.



3
votes

RTSP n'est utilisé que pour lancer le streaming. Cela vous donne une description SDP des vrais flux. Vous devez gérer une connexion RTCP et une connexion RTP par canal (audio / vidéo). Les ports à utiliser sont les «client_port».

Il est assez complexe de coder une pile RTSP / RTCP / RTP à partir de zéro. Vous pouvez consulter le Live555 bibliothèque qui implémente une telle pile en C ++.


0 commentaires

1
votes

Mettez un sniffer sur le réseau, vous devez voir le paquet UDP avec le port de destination 4568 ciblé à votre adresse IP.

Avec un sniffer décent, vous pourrez voir la boîte de dialogue RTSP. Peut-être que vous manquez quelque chose dans les réponses

Vous devez également vérifier le contenu de la réponse de configuration, pour voir si le port que vous avez demandé a été accepté.

choses à vérifier:

  • Écoute de UDP.
  • Règles de pare-feu.
  • Plage de la demande de lecture: Ne spécifiez-vous pas pour être sûr que le serveur jouera quelque chose.

    Si vous êtes derrière un routeur ou un pare-feu, vous ne recevrez probablement rien, car votre routeur / pare-feu ne sais pas quoi faire avec des paquets UDP entrants


2 commentaires

La réponse de configuration est appropriée, c'est-à-dire qu'elle réussit à 200 OK. Comment utiliser le renifleur? Y a-t-il une documentation pour l'utiliser sur la plate-forme Android?


"Si vous êtes derrière un routeur ou un pare-feu, vous ne recevrez probablement rien, car votre routeur / pare-feu ne sais pas quoi faire avec des paquets UDP entrants" - Comment gérer cette affaire? Actuellement, je suis derrière un pare-feu



1
votes

Essayez d'abord avec un serveur de streaming Darwin local installé dans votre réseau LAN.THAT WOPE WONT WONT

Si vous voulez essayer de serveur externe, alors:

1) Cochez la case Client_ports mentionnée dans la réponse du serveur, certains serveurs suggèrent différents ports de celui requis. Vous devez utiliser les ports suggérés par le serveur.

2) Si les ports sont corrects, vous pouvez envoyer des paquets vides de 64 octets à partir de chacun des ports UDP sur le serveur (appelé "ouvre-portes").

3) Si les deux ci-dessus ne le répètent pas, vérifiez que le serveur est peut-être fermer les ports UDP.


0 commentaires