Flux vidéo en utilisant Twilio de la caméra IP RTSP

tous les exemples de Twilio pour leur service vidéo Programmable que j'ai pu trouver soit démontrer le partage d'écran ou webcam flux média. Quelqu'un peut-il me montrer un exemple qui diffuse une vidéo à partir d'un flux RTSP fourni par une caméra IP?

j'ai pu trouver des exemples et expérimenter ce comportement en utilisant Kurento, donc J'ai pensé que Twilio-Video pourrait exposer la même chose. Voir https://github.com/lulop-k/kurento-rtsp2webrtc

11
demandé sur hatboyzero 2017-02-28 22:12:11

2 réponses

Quelqu'un peut-il me montrer un exemple qui diffuse une vidéo à partir D'un RTSP? flux fourni par une caméra IP?

Depuis que vous avez étiqueté Javascript vous avez à réaliser que rtsp:// n'est pas une source vidéo attendue dans L'environnement HTML5. Il n'y a pas un certains exemple pour le flux RTSP de la caméra.

solution possible:

La seule solution à laquelle je peux penser est d'utiliser un logiciel de webcam virtuel qui produit un flux/fichier vidéo au lieu d'afficher le flux depuis la webcam de l'appareil.

la webcam virtuelle serait détectée comme une webcam normale (par navigateur / webRTC), mais au lieu de montrer votre visage, elle affiche un flux/fichier Pré-enregistré. Si vous utilisez FFmpeg, vous pouvez remplacer le fichier MP4 par votre flux en direct RTSP.

du côté du code Twilio / HTML5, vous sélectionnez simplement la "caméra virtuelle" comme si c'était une vraie webcam, maintenant de cette façon vous pouvez envoyer le flux RTSP comme si c'était votre flux webcam.

0
répondu VC.One 2017-03-12 17:08:06

Avez-vous de prendre un coup d'oeil à c'?

c'est un article intéressant et bien écrit sur la question.

à Partir du lien en question:

WebRTC Passerelles multimédias pour les médias de l'interopérabilité Pour intégrer une caméra IP avec une application WebRTC, vous devez d'abord parvenir à l'interopérabilité des médias. Cela signifie que le flux multimédia fourni par la caméra doit être rendu compatible avec les codecs WebRTC et les formats pris en charge par les navigateurs. Cela signifie traduire ce que dit la caméra IP dans ce que supporte le navigateur WebRTC. Pour ce faire, une technologie appelée passerelle multimédia WebRTC est généralement nécessaire. Pour comprendre ce qu'une telle passerelle, respectez les consignes suivantes.

la plupart des caméras IP disponibles sur le marché (à l'exclusion des caméras exotiques) publient des médias au moyen de l'un ou l'autre de ces mécanismes:

    RTSP/H. 264: ces types de caméras sont typiques pour applications de vidéosurveillance. Ils utilisent le protocole RTSP pour établir une session de presse RTP. En d'autres termes, la signalisation se fait par le RTSP tandis que le transport médiatique lui-même est basé sur le RTP simple. Différents fournisseurs de caméras peuvent prendre en charge différents profils RTP mais, pour la plupart des caméras que j'ai vues, L'AVP est la seule option disponible. Dans ces caméras, et aussi typiquement, H. 264 est la seule option pour le codec.
    HTTP / MJPEG: ces caméras utilisent la diffusion HTTP pour la signalisation et transport et encoder la vidéo comme une séquence D'images JPEG. Le matériel de ces caméras est plus simple et nécessite moins de ressources pour fonctionner. C'est pourquoi ils sont souvent utilisés lorsque la consommation ou le poids de la batterie est un problème (par exemple, robotique, drones, etc.) L'inconvénient est que la qualité de la vidéo a tendance à diminuer de manière significative.

Faire droite avec Kurento Media Server

la boîte à outils Kurento Media Server permet de créer des WebRTC Passerelles Multimédia d'une manière flexible et de la programmation en Java ou JavaScript si vous le souhaitez. Pour une introduction sur les technologies Kurento Media Server, il suffit de jeter un coup d'oeil à la documentation. La mise en œuvre d'une passerelle multimédia WebRTC pour l'interopérabilité avec les caméras IP à Kurento est triviale et sûre. Il suffit de prendre en considération trois aspects:

    Kurento Media Server PlayerEndpoint prend en charge la lecture de flux vidéo provenant de différents types de sources, y compris RTSP/RTP et HTTP / MJPEG. En d'autres termes, le PlayerEndpoint est capable de gérer la capture de médias à partir de la caméra IP.
    Kurento Media Server WebRtcEndpoint prend en charge la publication de flux de médias vers les navigateurs WebRTC avec fin complète de la rétroaction RTCP. Cela signifie que, chaque fois qu'un paquet PLI est reçu, le point Webrtcend commande l'encodeur VP8 pour générer une nouvelle image clé. Cela signifie également que le retour D'information et la gestion de la congestion du REMB doivent être honorés en commandant L'encodeur VP8 pour une baisse de sa qualité.
    Kurento Media Server agnostic media capability effectue, de manière transparente pour le développeur, toutes les Trans-codifications appropriées lorsque deux éléments médias incompatibles sont connectés. Par conséquent, dans ce cas, le transcodage H. 264/MJPEG à VP8 aura lieu uniquement en connectant la source PlayerEndpoint à L'évier WebRtcEndpoint.

enter image description here

le code source d'une application JavaScript la mise en œuvre de cette logique est esquissée ci-dessous:

    var pipeline = ...//Use Kurento Client API for obtaining your pipeline.

//Create the PlayerEndpoint for receiving from the IP camera. HTTP and RTSP uris are supportd
pipeline.create("PlayerEndpoint", {uri: "rtsp://your.rtsp.address"}, function(error, playerEndpoint){

    //Create the WebRtcEndpoint
    pipeline.create("WebRtcEndpoint", function(error, webRtcEndpoint){

    //If working with trickle ice, some code for candidate management is required here.

        //Connect playerEndpoint to webRtcEndpoint. This connection activates the agnostic media
        //capability and the appropriate transcodings are configured and activated.
    playerEndpoint.connect(webRtcEndpoint, function(error){

                //Media starts flowing ... enjoy
        player.play(function(error){
        });
    });
    });
});

si vous voulez un exemple entièrement fonctionnel en JavaScript, vous pouvez jeter un oeil à ceci GitHub

cela devrait fournir une solution à vos besoins, commentaire si vous avez des problèmes.

Bonne chance!

1
répondu Petzy 2018-08-29 06:58:25