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

Shell et commandes GNU Discussion :

Projet d'interphone - Streaming audio


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2017
    Messages : 7
    Par défaut Projet d'interphone - Streaming audio
    Bonjour à tous!

    Voilà moi je suis sur un projet d'interphone avec 2 raspberry, j'ai choisi ce qui me paraissait le + simple:

    enregistrer un son avec arecord, l'envoyer par ssh sur un autre raspberry, qui le lit avec aplay.

    Tout fonctionne à merveille, hormis évidemment une certaine latence.. Quand je me suis dit "Mais pourquoi ne pas enregistrer mon fichier .wav directement sur le serveur distant, qui lui va le lire avant même que le fichier ne soit terminé d'être enregistré?"

    J'ai testé en local (sur la même machine) en faisant 2 scripts python, un qui enregistre le .wav: (ici durant 8sec)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     arecord -D plughw:1 -d 8 test.wav
    et un qui le lit:
    il le lit avec 2 sec de décalage, donc nickel

    Maintenant voici ce que je n'arrive pas à faire, j'aimerai enregistrer le .wav mais sur la machine distante, qui elle le lira
    un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arecord -D plughw:1 -d 8 scp test.wav pi@raspberry:/home/pi
    ou:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh pi@raspberry 'arecord -D plughw:1 -d 8'
    Ca ne marche pas, est-ce ma syntaxe qui n'est pas juste, ou est-ce que ce n'est tout simplement pas possible?

    Merci d'avance

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    dans l'esprit il faudrait plutôt un truc dans ce style là à mon avis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arecord -D plughw:1 -d 8 <( ssh pi@raspberry 'arecord -D plughw:1 -d 8' )
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh pi@raspberry 'arecord -D plughw:1 -d 8' | arecord -D plughw:1 -d 8 -
    à tester

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2017
    Messages : 7
    Par défaut
    Re,

    Merci de ta réponse mais ça ne marche pas non plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arecord -D plughw:1 -d 3 <( ssh pi@rasptalk-a 'arecord -D plughw:1 -d 3' )
    me retourne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arecord: main:722: audio open error: No such file or directory
    j'ai tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arecord -D plughw:1 -d 3 <( ssh pi@raspberry '/home/pi/01.wav')
    mais en vain

    et pour la suivante je ne comprends pas l'utilisation d'un pipe dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh pi@raspberry 'arecord -D plughw:1 -d 8' | arecord -D plughw:1 -d 8 -
    car il va l'exécuter après l'enregistrement en non en même temps, non? (et ça ne marche pas non plus)

    Comment puis-je lui indiquer un chemin de fichier distant? Pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arecord -D plughw:1 -d 3 scp://serveur-distant//home/pi/01.wav
    ne marche pas?
    J'ai bien essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat scp://serveur-distant//test.txt
    mais ça ne marche pas, ce serait trop simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arecord -D plughw:1 -d 3 test.wav && scp test.wav pi@serveur-distant:/home/pi
    en revanche fonctionne, mais il envoie le fichier après son enregistrement alors que je veux soit qu'il l'envoie en même temps, soit qu'il l'enregistre sur le serveur..

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Salut,

    tu peux pas faire l'inverse ?

    enregistrer sur ton pc mais demander à aplay de lire le fichier présent sur ton pc ?

    Peut-être que aplay peut le faire non ?

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2017
    Messages : 7
    Par défaut
    Salut,

    L'idée est bonne, d'enregistrer en local et de venir le lire en ssh de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh pi@raspberry 'aplay fichier.wav'
    seulement il le lit dans les haut parleur du pc local et non sur ceux de celui qui s'y connecte en ssh donc ça ne m'aide pas

    Aargh je suis sûr que ça doit être possible d'enregistrer le son sur un serveur distant, je vais continuer de chercher
    ça doit être tout bête en +

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    et en montant en local le pc enregistrant, afin que le aplay lise comme un fichier local ?

    https://doc.ubuntu-fr.org/sshfs

    pc2 monte pc1 comme un dossier local.
    pc1 enregistre en local.
    pc2 écoute le fichier comme s'il était en local.

  7. #7
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par la.couenne Voir le message
    (...) ça ne marche pas (...)
    ok, pour être honnête j'ai répondu à la va-vite hier sans trop chercher à comprendre, mea culpa

    les manpages respectives de aplay et arecord précisent que :
    If filename is not specified, the standard output or input is used
    donc pas besoin d'utiliser de fichier temporaire ou autre, la syntaxe ssh machine "arecord" | aplay peut fonctionner à coup sûr, modulo les options (j'ai pas de quoi tester)

    et pour répondre à ta question intermédiaire, non, ça s'exécute pas après c'est bien en même temps, et c'est la sortie (stdout) de ssh qu'on redirige vers l'entrée (stdin) de aplay, parfois certains programmes prévoient un nom de fichier spécifique pour symboliser qu'il faut lire sur l'entrée standard, d'où le - en fin de ligne plus haut, mais ça n'est pas le cas de aplay/arecord

    edit: par ailleurs, si le ssh-pipe garantit le streaming du fichier, ce n'est possiblement pas le cas en utilisant un fichier temporaire justement, qui devra probablement être fini d'écrire avant que aplay puisse le lire dans son intégralité

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2017
    Messages : 7
    Par défaut
    GENIAL CA MARCHE!! MERCI LES GARS

    Alors BufferBob ta solution ssh machine "arecord" | aplay marche, mais du coup quand je fais arecord il enregistre bien le fichier .wav sur le serveur distant, mais avec le microphone distant aussi, donc pour mon interphone c'est ballo

    J'ai utilisé la solution de hizoka avec sshsf qui est simple d'utilisation et qui fonctionne à merveille!

    Maintenant je vais peaufiner mon script python qui gère les boutons, et je reviendrait poster mon projet ici pour ceux que ça pourrait intéresser..

    En tout cas un grand merci à vous tous pour vos idées car ça faisait 5 jours que je séchais complètement

  9. #9
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Cool si ça a répondu à ton besoin

    Hésite pas quand une personne te propose quelque chose de pertinent à voter pour son message via le fameux pouce en l'air.

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2017
    Messages : 7
    Par défaut
    Re,
    Je reposte une réponse pour ceux qui tomberaient sur la discussion, finalement j'ai refait des tests dans l'idée de BufferBob, et ça marche en faisant simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arecord -D plughw:1 -f dat | ssh -C pi@raspberry aplay -f dat
    Merci à tous en tout cas :-)

  11. #11
    Membre chevronné Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Par défaut
    As-tu essayé de sortir le fichier en mp3, la taille étant moins lourde que du wave tu gagnerai peut être encore un peut en latence (pure supposition aucune idée de la procedure pour faire ca)

  12. #12
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    sauf que l'audio en question sort en temps-réel du micro de l'autre coté, ce serait une bonne idée dans le cas de sons pré-enregistrés (musique à la demande par exemple, webradio...)

    le temps que tu gagnes en faisant transiter moins d'octets sur le réseau tu le perds en temps de compression, qui plus est dans ce cas là on est obligé d'avoir un fichier temporaire, pour autant que je sache ni mp3 ni ogg ne sont adaptés pour le streaming, il faut compresser l'intégralité du flux audio pour ensuite pouvoir l'envoyer sur le réseau, à l'arrivée on y perd plus qu'on y gagne...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Projet : streaming audio (mp3,Ogg et Flac)
    Par PlopTom dans le forum Débuter
    Réponses: 5
    Dernier message: 10/06/2010, 14h54
  2. Streaming Audio
    Par myke38 dans le forum C++Builder
    Réponses: 1
    Dernier message: 27/02/2005, 23h56
  3. Streaming audio, comment faire ?
    Par Pill_S dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 04/02/2005, 10h29
  4. [Stratégie] streaming audio
    Par Slaya dans le forum Développement
    Réponses: 11
    Dernier message: 20/01/2005, 21h23
  5. [Multimédia] Explication sur stream audio
    Par champion dans le forum Développement
    Réponses: 1
    Dernier message: 20/01/2005, 12h14

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