2012-05-10 4 views
1

Je travaille sur un projet de streaming. J'ai VLC s'exécutant en tant que serveur, diffusant le flux RTSP mp4 (h264/aac) vers le serveur Flumotion (qui est basé sur gstreamer). Je pense que c'est soit un problème de compatibilité entre VLC (qui est basé sur Live555) et Flumotion (qui est basé sur GStreaemer) ou le pipeline utilisé pour recevoir le flux RTSP est manqué.Compatibilité VLC RTSP avec GStreamer

est ici le pipeline utilisé par Flumotion et doivent être fixés (lignes 44-49) rtsp.py:

return ("rtspsrc name=src location=%s ! decodebin name=d ! queue " 
     " ! %s ffmpegcolorspace ! video/x-raw-yuv " 
     " ! videorate ! video/x-raw-yuv,framerate=%d/%d ! " 
     " @feeder:[email protected] %s ! @feeder:[email protected]" 
     % (location, scaling_template, framerate[0], 
      framerate[1], audio_template)) 

Edit: Le problème est que le composant RTSP-producteur dans Flumotion ne peut pas recive tout les données du flux VLC. pas d'erreurs, rien, il garde juste le statut «éveillé».

J'ai essayé quelques variantes du pipeline GStreamer utilisé par flumotion mais je n'ai pas réussi à le faire fonctionner.

J'ai trouvé beaucoup de semblables questions non résolues dans StackOverflow qui me fait penser qu'il est un problème de compatibilité

Je ne suis pas gst-pipeliner! alors s'il vous plaît aidez-moi hors de cette lutte.

+0

Quel est votre problème? Quels messages d'erreur obtenez-vous? – DerMike

+0

Désolé, j'ai ajouté quelques détails. –

+0

Pouvez-vous lire le flux avec gstreamer: gst-launch playbin2 uri = ...? – ensonic

Répondre

0

Bon maintenant, depuis cette commande fonctionne (en général):

gst-launch playbin uri="rtsp://127.0.0.1:8554/live" 

j'ai décidé qu'il ne peut pas être un problème de compatibilité! et le problème a été résolu en utilisant « rtspdecodebin » au lieu de « rtspsrc » et « decodebin »

Alors finalement je modifié qu'en rtsp.py ::

return ("uridecodebin name=d uri=%s ! queue " 
     " ! %s ffmpegcolorspace ! video/x-raw-yuv " 
     " ! videorate ! video/x-raw-yuv,framerate=%d/%d ! " 
     " @feeder:[email protected] %s ! @feeder:[email protected]" 
     % (location, scaling_template, framerate[0], 
      framerate[1], audio_template)) 

Maintenant, ça marche! (la plupart du temps) et c'est probablement quelque chose avec le flux ou QoS ...