+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité de passage
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 4
    Points : 3
    Points
    3

    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 :
    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 :
    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 :
    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 :
    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
    Invité de passage
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 4
    Points : 3
    Points
    3

    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 :
    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()

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •