2010-11-29 8 views
34

Je pense à développer un serveur de streaming et j'ai la question suivante, faire sur RTSP (exemple d'URL: rtsp://192.168.0.184/myvideo.mpg) ou RTP (exemple d'URL: rtp://192.168.0.184).Quelle est la différence entre RTP ou RTSP dans un serveur de streaming?

Comme je l'ai compris, un serveur RTSP est principalement utilisé pour le streaming de fichiers qui existent déjà, c'est-à-dire qui ne sont pas actifs. RTP serveur est utilisé pour diffuser.

Quelqu'un me corrige si je me trompe, ai-je raison? Ce que je veux développer un serveur pour diffuser du contenu en direct sur l'écran de l'ordinateur, c'est-à-dire, qui est affiché à l'heure qui est diffusée en streaming.

+1

En outre, vous voudrez peut-être vérifier (jeu de mots involontaire :)) Open source Darwin Streaming Server (pour éviter de réinventer la roue - sauf si vous avez des exigences personnalisées non satisfaites par les solutions existantes). –

+0

@ JP19 Cela fonctionne-t-il sous Windows? – Searush

+0

est le RTP RUL droit? avez-vous besoin de spécifier le numéro de port? –

Répondre

73

Vous obtenez quelque chose de mal ... RTSP est un protocole de streaming en temps réel. Sens, vous pouvez diffuser ce que vous voulez en temps réel. Vous pouvez donc l'utiliser pour diffuser du contenu en direct (peu importe ce que c'est, vidéo, audio, texte, présentation ...). RTP est un protocole de transport qui est utilisé pour transporter des données média qui sont négociées via RTSP.

Vous utilisez RTSP pour contrôler la transmission multimédia sur RTP. Donc, si vous voulez que votre serveur commence à diffuser lorsque l'URL est demandée, vous pouvez implémenter un serveur RTP uniquement. Mais si vous voulez plus de contrôle et si vous diffusez de la vidéo en direct, vous devez utiliser RTSP, car il transmet le SDP et d'autres données de décodage importantes.

Lire les documents J'ai lié ici, ils sont un bon point de départ.

+0

: Merci pour votre explication.J'essaie de diffuser de l'audio dans les applications J2Me et je suis nouveau pour les protocoles. Je veux savoir si nous pouvons envoyer des requêtes RTSP aux serveurs RTP (Peut-être que des changements de numéro de port seraient nécessaires à partir de l'application client.) Vous avez mentionné 'vous pouvez implémenter une sorte de serveur RTP seulement. peut gérer les deux rtp, rtcp? Quels sont les serveurs (rtp, rtcp) que nous pouvons utiliser dans notre machine locale pour les tests. –

+0

@Cipi, mais dois-je utiliser quelque chose (smtg comme le serveur rtp, outils, programmes, etc) pour rendre l'ordinateur quelque chose de flot? Je veux dire si je veux diffuser, je reçois des erreurs comme ceci: http://stackoverflow.com/questions/12007882/ffmpeg-rtp-streaming-error – Searush

+1

Cipi: Juste curieux de savoir si nous pouvons effectivement mettre en pause un flux en direct, puis frapper à nouveau jouer. –

4

Je pense que c'est correct. RTSP peut utiliser RTP en interne.

+0

Cela est correct dans la plupart des cas, il y a des cas où vous pouvez avoir quelque chose d'autre remplacer Rtp dans le protocole ..... – Jay

8

Quelques notions de base:

serveur RTSP peuvent être utilisés pour la source morte, ainsi que pour la source en direct. Les protocoles RTSP vous fournissent des commandes (comme votre télécommande VCR), et les fonctionnalités dépendent de votre implémentation.

RTP est un protocole en temps réel utilisé pour le transport audio et vidéo en temps réel. Le transport utilisé peut être unicast, multicast ou broadcast, en fonction de l'adresse de transport et du port. En plus du transport RTP fait beaucoup de choses pour vous comme packetization, réordonner, contrôle la gigue, la qualité de service, prise en charge pour la synchronisation des lèvres .....

Dans votre cas si vous voulez diffuser serveur de streaming alors vous avez besoin à la fois RTSP (pour contrôle) ainsi que RTP (diffusion audio et vidéo)

Pour commencer, vous pouvez passer par exemple de code fourni par live555

12

AFAIK, RTSP ne transmet pas les flux du tout, il est juste un out-of protocole de contrôle de bande avec des fonctions telles que PLAY et STOP.

UDP brut ou RTP sur UDP sont des protocoles de transmission pour des flux tels que TCP ou HTTP sur TCP.

Pour être en mesure de diffuser un certain programme sur le protocole de transmission donné, une méthode d'encapsulation doit être défini pour votre format conteneur. Par exemple, le conteneur TS peut être transmis via UDP mais Matroska ne peut pas.

Pratiquement tout peut être transporté via TCP.

(Le fait que ce qui codec utilisez-vous compte aussi indirectement car elle limite les formats de conteneurs que vous pouvez utiliser.)

0

RTSP (en fait RTP) peut être utilisé pour le streaming vidéo, mais aussi beaucoup d'autres types des médias, y compris des présentations en direct. RTSP est juste le protocole utilisé pour configurer la session RTP.

Pour tous les détails, vous pouvez consulter mon implémentation open source RTSP Server à l'adresse suivante: https://net7mma.codeplex.com/

Ou mon article @http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtp

Il prend en charge les cours d'eau re-sourcing ainsi que la création dynamique de flux, divers RFC sont implémentés et la bibliothèque obtient de meilleures performances et moins de mémoire que FFMPEG et à peu près toutes les autres solutions dans la couche de transport et en fait un bon candidat à utiliser comme point d'accès centralisé pour la plupart des scénarios.

+1

Je pense que ce n'est pas une réponse. – Lobo

+0

Je sais pertinemment qu'un Ciphi a raison ... nous disons la même chose! Je pense que vous ne pouvez pas prendre le temps de lire et êtes fort tête. – Jay

+3

Je pense que RTSP n'est en réalité pas RTP. RTSP est défini dans la couche d'application tandis que RTP est dans la couche de transport dans le modèle OSI (http://www.tomax7.com/aplus/osi_model.htm). – Alston

0

J'entends votre douleur. Je passe par là maintenant (des années plus tard). D'après ce que j'ai appris, vous pouvez penser à RTSP comme un "contrôleur de magnétoscope", le protocole vous permet de spécifier quels flux (présentations) vous voulez jouer, il vous enverra ensuite une description du média, puis vous peut utiliser RTSP pour lire, arrêter, mettre en pause et enregistrer le flux distant. Les médias eux-mêmes passent par RTP. RTSP est normalement implémenté sur une socket ou une couche de communication différente. Bien qu'il s'agisse simplement d'un protocole, il est le plus souvent implémenté par un serveur sur une socket. Pour les flux en direct, le flux RTSP que vous demandez est simplement un nom de flux. Il n'a pas besoin de se référer à un fichier sur le serveur, l'implémentation RTSP du serveur peut analyser ce flux, assembler un graphique en temps réel, puis fournir le SDP (description) pour ce nom de flux. Mais, ceci est bien sûr spécifique à la façon dont le serveur RTSP a été implémenté. Pour les flux «en direct», il est probablement plus simple d'utiliser RTP, mais vous aurez besoin d'un moyen de transférer le SDP du serveur RTP au client qui veut lire ce flux.

Questions connexes