IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

[Open CV + VLC] Streaming webcam sur un réseau


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [Open CV + VLC] Streaming webcam sur un réseau
    Bonjour à tous,

    Voilà, je travaille actuellement sous Ubuntu 12.04 LTS.

    Je peux actuellement streamer via VLC ma webcam en RTP comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    VLC INFOS :
     
    Adresse : 10.101.4.255 (pour broadcaster)
    Base port : 5004
    Encoding : ASF
    J'arrive, sous VLC, à ouvrir le flux comme suit et donc à visualiser depuis n'importe quel pc ma webcam :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NETWORK PROTOCOL
    rtp://10.101.4.255:5004
    Ceci est valable depuis les n pc disponibles.

    Ma question si situe avec Python...
    Cela fait maintenant 48h qu'on essaie d'ouvrir ce flux via Python et OpenCV.
    Ce que nous aimerions c'est avoir un snapshot du flux vidéo.

    En gros : prendre une photo à l'instant t du flux vidéo (une capture de la vidéo).

    Nous nous sommes arraché les cheveux avec la doc OpenCV Absolument pas claire.
    Pour le moment, et après avoir un peu tout essayé, la commande suivante nous semblait la plus pertinente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import cv2
     
    fileName = cv2.VideoCapture('rtp://10.101.4.255:5004')
    Malheureusement cette commande semble lire le flux en continu (et par définition ce stream provenant d'une webcam est un flux infini ...) et donc tombe dans une boucle "infinie" comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    user@user-HP-Z400-Workstation:~/Desktop/Python/Code$ python stream.py 
    Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.
    Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.
    Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.
    Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.
    Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.
    Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.
    Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.
    Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.
    Et plus rien ne se passe ... (cela dit je m'interroge sur cette "network initialisation").

    Si quelqu'un a déjà été confronté à ce problème, ou a une idée de comment le résoudre nous sommes grands preneurs !

    Merci à tous d'avoir pris la peine de me lire et bonne journée !

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    SOLUTION

    Nous avons finalement trouvé la solution, vous devez streamer depuis VLC en utilisant le protocole HTTP !

    Une fois le streaming lancé depuis un pc, il vous suffit d'agir comme cela :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    # ---------------------------------------------------------------------------------------------#
    #                                       LIBRARIES                                              #
    # ---------------------------------------------------------------------------------------------#
     
    import cv
    import cv2
     
    # ---------------------------------------------------------------------------------------------#
    #                                      DEFINITIONS                                             #
    # ---------------------------------------------------------------------------------------------#
     
    def streamCamCapture():
     
    	k = -1												# Loop exit 
     
    # ---------------------------------------------------------------------------------------------#
    #                                      ALGORITHM                                               #
    # ---------------------------------------------------------------------------------------------#
     
    # Opening the streaming flux
    	streamFlux1 = cv2.VideoCapture("http://10.101.4.38:8080")                  # Adress and port of the streaming machine
     
    	# Streaming loop
    	while(k==-1):	
     
    		# Reading flux
    		flag, frame1 = streamFlux1.read()
     
    		if(flag == 'False'):
    			print "No webcam input, leaving streaming ..."
     
    		cv2.imshow("Webcam 1 - Press any key to exit", frame1)
    		k = cv.WaitKey(10)
     
    streamCamCapture()

Discussions similaires

  1. Diffusion de flux d'images webcam sur un stream socket
    Par ixabro dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 02/05/2014, 13h34
  2. Réponses: 1
    Dernier message: 16/05/2010, 16h30
  3. WEBCAM sur tous les PC de mon réseau.
    Par Yepazix dans le forum Périphériques
    Réponses: 5
    Dernier message: 18/10/2006, 01h06
  4. Comment obtenir le nom d'un pc sur un réseau?
    Par Depteam1 dans le forum MFC
    Réponses: 2
    Dernier message: 19/02/2004, 10h17
  5. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo