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

Python Discussion :

Demarrer/arreter omxplayer via python (CTRL C) ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut Demarrer/arreter omxplayer via python (CTRL C) ?
    Bonjour,

    j'utilise ceci pour afficher la video d'une camera lorsque j'appuie sur un bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # fonction afficher video
    def camera_on():
            subprocess.call(['omxplayer --avdict rtsp_transport:tcp --live "rtsp://admin:admin@192.168.0.212:554/cam/realmonitor?channel=1&subtype=0"'], shell=True)
    .....
    if (button_press_timer > une_seconde) :
        camera_on()
    ....
    Quand je tape en commande terminal la video de ma camera s'affiche bien :

    omxplayer --avdict rtsp_transport:tcp --live "rtsp://admin:admin@192.168.0.212:554/cam/realmonitor?channel=1&subtype=0

    J'appuie sur CTRL C pour stopper la video.

    Par contre, avec python, je ne sais pas comment fermer la video de la camera afficher à l'écran.

    Une idée ?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Salut,

    Citation Envoyé par mat46007 Voir le message
    J'appuie sur CTRL C pour stopper la video.

    Par contre, avec python, je ne sais pas comment fermer la video de la camera afficher à l'écran.
    Il faut terminer le sous-process i.e. lui expédier un signal semblable à celui associé au ctrl-C.
    Ce qui veut dire ne pas utiliser subprocess.call - puisqu'alors on est bloqué en attendant que le sous-process se termine - mais subprocess.Popen qui va retourner un objet auquel on pourra appliquer .terminate() à la demande.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    p = subprocess.Popen(['omxplayer ...')
    time.sleep(10) # çà attend 10 secondes
    p.terminate()
    p.wait()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut
    Bonjour wiztricks,
    Merci pour ton aide,

    voila le code que j'ai mis :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    #!/usr/bin/env python2.7
     
    from time import sleep
    import subprocess
    import RPi.GPIO as GPIO
    import os
    import signal
     
    # On choisit le GPIO 17 (pin ?) pour notre bouton
    CHANNEL = 17
     
    # On definit nos durees
    une_seconde = 1
    quattre_secondes = 4
     
    # on met RPi.GPIO en mode notation BCM
    GPIO.setmode(GPIO.BCM)
     
    # on initialise le GPIO 17 en mode entree
    GPIO.setup(CHANNEL, GPIO.IN, pull_up_down=GPIO.PUD_UP)
     
    # notre fonction de gestion du bouton
    def system_button(CHANNEL):
            # cette variable servira a stocker le temps de pression
            button_press_timer = 0
     
    while True:
                            if (GPIO.input(CHANNEL) == False) : # le bouton a ete presse...
                                    button_press_timer += 0.2 # ... on enregistre le temps que cela dure
     
                            else: # le bouton a ete relache, on compte combien de temps cela a dure
     
                                    if (button_press_timer > une_seconde) :
                                            print "1 seconde : ", button_press_timer
                                            p = subprocess.Popen(['omxplayer --avdict rtsp_transport:tcp --live "rtsp://franco:franco@192.168.0.212:554/cam/realmonitor?cha$
                                            time.sleep(10) # çà attend 10 secondes
                                            p.terminate()
                                            p.wait()
     
     
                                    button_press_timer = 0
                            # on attend 0.2 secondes avant la boucle suivante afin de reduire la charge sur le CPU
                            sleep(0.2)
    et j'ai l'erreur :
    pi@raspberrypi:~ $ sudo python test4.py
    File "test4.py", line 69
    SyntaxError: Non-ASCII character '\xc3' in file test4.py on line 69, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    cela a été ok quand j'ai mis ceci tout au debut :
    # coding: utf-8

    Ensuite quand j'ai appuié sur le bouton, voici l'erreur :

    1 seconde : 3.0
    Traceback (most recent call last):
    File "test4.py", line 69, in system_button
    p = subprocess.Popen(['omxplayer --avdict rtsp_transport:tcp --live "rtsp://franco:franco@192.168.0.212:554/cam/realmonitor?channel=1&subtype=0"'])
    File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
    File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
    OSError: [Errno 2] No such file or directory

    Une idée?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Citation Envoyé par mat46007 Voir le message
    et j'ai l'erreur :
    pi@raspberrypi:~ $ sudo python test4.py
    File "test4.py", line 69
    SyntaxError: Non-ASCII character '\xc3' in file test4.py on line 69, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    qui est la ligne avec time.sleep(10) et j'ai essayé aussi sleep(10) mais c'est pareil ??
    C'est parce que vous avez des caractères accentués dans les commentaires.
    Si vous n'avez pas la patience de lire le PEP mentionné dans le message d'erreur, ne pas utiliser de caractères accentués fonctionne.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut
    cela a été ok quand j'ai mis ceci tout au debut :
    # coding: utf-8

    Ensuite quand j'ai appuié sur le bouton, voici l'erreur :

    1 seconde : 3.0
    Traceback (most recent call last):
    File "test4.py", line 69, in system_button
    p = subprocess.Popen(['omxplayer --avdict rtsp_transport:tcp --live "rtsp://franco:franco@192.168.0.212:554/cam/realmonitor?channel=1&subtype=0"'])
    File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
    File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
    OSError: [Errno 2] No such file or directory

    Une idée?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Citation Envoyé par mat46007 Voir le message
    OSError: [Errno 2] No such file or directory
    C'est parce que vous avez oublié de recopier shell=True...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. probleme d'identification sur site web via python
    Par KINENVEU dans le forum Réseau/Web
    Réponses: 16
    Dernier message: 11/08/2009, 15h06
  2. Remplacer du texte via python
    Par csseur22 dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 29/12/2008, 19h36
  3. Réponses: 5
    Dernier message: 06/11/2008, 16h21
  4. Demarrer/Eteindre PC via ethernet
    Par sycfrid dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 24/08/2008, 22h25
  5. Accéder à une base MySQL 'distante' via Python
    Par tse_tilky_moje_imja dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 24/07/2006, 11h49

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