Modérateurs: Modération Forum Home-Cinéma, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Goldfinger67, Tazz24, tollard et 45 invités

Tout ce qui concerne les logiciels lié au HC sur ordinateur (PC, Mac, Linux...)
Règles du forum
Avant de poster, merci de prendre connaissance des règles du forum : à lire avant de poster

Piloter une Dune avec XBMC

Message » 22 Avr 2014 21:25

Héhé, moi aussi c'est géré automatiquement mais avec des noms VO donc pas d'accents la plupart du temps, à part les Disney du petit :)

Je vais recevoir demain ou après-demain mon petit adaptateur USB/CEC donc moi aussi je vais pouvoir entamer la prise de tête CEC, en espérant réussir à faire ce que je veux (allumer la TV lorsque le PC sort de veille)
djoole
 
Messages: 3140
Inscription Forum: 25 Avr 2007 0:43
Localisation: Val d'oise
  • offline

Message » 24 Avr 2014 16:51

bon, j'ai avancé, mais je me heurte à un petit problème

lorsque je lance la vidéo, tout va bien, mais quand je reviens sur xbmc je suis bloqué, comme si la lecture s'était lancée avec xbmc

dans le log, je vois ça :

NOTICE: Process: Failed to suspend AudioEngine before launching external player


des idées ?
lyksyr
 
Messages: 1820
Inscription Forum: 27 Déc 2007 17:08
Localisation: Angers
  • offline

Message » 24 Avr 2014 17:28

Tu peux poster ton Corefactory?
djoole
 
Messages: 3140
Inscription Forum: 25 Avr 2007 0:43
Localisation: Val d'oise
  • offline

Message » 24 Avr 2014 17:50

il n'a pas beaucoup changé depuis la première page...
Code: Tout sélectionner
 <playercorefactory>
 <players>
   <player name="DUNE" type="ExternalPlayer" audio="false" video="true">
     <filename>/storage/.xbmc/userdata/dunefeeder.sh</filename>
     <args>"{1}"</args>
     <hidexbmc>false</hidexbmc>
     <islauncher>true</islauncher> <!-- c'est un essai, mais ça fait pareil sans -->
   </player>
 </players>
 <rules action="overwrite"> <!-- avec prepend c'est pareil -->
   <rule video="true" player="DUNE">
    <rule internetstream="true" player="videodefaultplayer" />
   </rule>
 </rules>
</playercorefactory>
lyksyr
 
Messages: 1820
Inscription Forum: 27 Déc 2007 17:08
Localisation: Angers
  • offline

Message » 24 Avr 2014 18:40

Oups scuse j'avais loupé ça.

Tu n'utilises pas la balise hideconsole. Je ne connais pas sa valeur défaut. Ca vaudrait peut-être le coup de jouer dessus pour voir si ça influe pas sur ton souci.

C'est quoi cette balise islauncher??

Quand tu dis qu'XBMC est bloqué, c'est à dire? Ecran figé? Bandeau "lecture dans player externe en cours" (ou un truc du genre) affiché en haut (peut-être dépendant de la skin, je suis sous AEON MQ5)?

Ton script dunefeeder.sh reste-t'il ouvert juste le temps de faire le wget vers la Dune, ou tout le temps de la lecture?

J'ai fait mon batch de sorte à ce que le script reste actif tout le temps de la lecture par rapport au fait que le script gère également le retour automatique sur l'entrée HDMI XBMC de l'ampli, mais ça pourrait jouer pour ton problème.
En effet, je me souviens qu'en fonction de la durée d'exécution du script (avant que je fasse en sorte qu'il reste ouvert), j'avais des résultats différents coté XBMC (parfois le bandeau "lecture en cours", parfois rien...)

Si ton script se ferme illico, rajoute un sleep à la fin pour qu'il reste ouvert genre 1 minute après avoir lancé la vidéo..
djoole
 
Messages: 3140
Inscription Forum: 25 Avr 2007 0:43
Localisation: Val d'oise
  • offline

Message » 24 Avr 2014 19:09

hideconsole est une fonction win32 only. J'ai testé avec aussi.
islauncher j'ai vu ça dans le debug ou dans des exemples, je l'ai rajouté en me disant que peut-être ça faisait quelque chose, mais non.

C'est bloqué , écran figé, mini contrôles visibles, vignette visible, lecture en cours, et dans yatse il voit la lecture en cours
Au début de ce fil je n'avait pas ce souci particulier là, yatse ne voyait pas la lecture, et je n'avais pas les contrôles visibles.
Je suis repassé sur le template de base (j'avais mis influence) mais idem.

Je ne vois pas ce que j'ai changé...

mon script, copié sur le tien, attends que la vidéo se ferme pour s'arrêter. Et ça fonctionne très bien (enfin, fonctionnait)

...
lyksyr
 
Messages: 1820
Inscription Forum: 27 Déc 2007 17:08
Localisation: Angers
  • offline

Message » 24 Avr 2014 21:18

Si quand ça marchait yatse ne voyait pas la lecture, c'est que XBMC voyait ton script se fermer tout de suite.
Normalement, XBMC reste en mode lecture tant que l'external player est actif.

Donc c'est peut-être depuis que tu as implémenté la tenue ouverte du script jusqu'à la fin de la lecture, que tu as des problèmes?

Normalement ça devrait réagir comme ça (enfin c'est le cas pour ma config) :

1. XBMC en mode navigation
2. Lancement d'une vidéo depuis XBMC
3.1 XBMC se met en mode "lecture external player" (yatse passe en mode lecture)
3.2 La Dune joue la vidéo
4.1 On arrête la vidéo sur la Dune (ou elle s'arrête toute seule)
4.2 XBMC sort du mode "lecture external player" et revient en mode navigation

Entre le 2 et le 4, si je switche manuellement l'entrée de l'ampli vers XBMC pour voir comment il se comporte, j'ai mon script qui tourne dans une fenêtre DOS, et XBMC en arrière plan qui indique un message du genre "lecture en cours sur player externe" avec la possibilité d'acquitter ce message. Remarque : Si on acquitte le message, XBMC et yatse repassent en mode navigation.

Le mode "figé" que tu décris est peut être le mode que j'observe durant la lecture du média (donc finalement un mode que je ne vois jamais puisque je suis sur la Dune à ce moment là).

A l'arrêt de la vidéo, le script doit se fermer tout seul, et XBMC détecter la fermeture de l'external player, et de ce fait, se défiger.
C'est cette partie qui semble pas fonctionner chez toi.

Tu peux valider ça en modifiant temporairement ton script pour qu'il ne se maintienne pas ouvert jusqu'à l'arrêt de lecture de la Dune.
Comme ça il va se fermer illico et si tu retrouve ton XBMC débloqué ça confirmera ce que je pense.

Ensuite, il restera à faire en sorte que XBMC comprenne que ton script est terminé...
Tu peux le poster à ce propos??
djoole
 
Messages: 3140
Inscription Forum: 25 Avr 2007 0:43
Localisation: Val d'oise
  • offline

Message » 25 Avr 2014 8:43

Ben non, c'est ça que je ne comprends pas, ça fonctionnait même avec la tenue ouverte du script.
Peut-être que ça a changé lorsque j'ai fait des essai sur les noms de fichier...
l'utilisation de python pour les accents peut-être
je vais refaire des tests dans ce sens, mais maintenant ce sera semaine prochaine.

mon script,
Code: Tout sélectionner
    #!/bin/bash

    # dunefeeder for feeding videos to your dune from a Windows Seven PC with XBMC - by djoole - v0.1
    # fork for raspberry pi by Lyksyr - switch hdmi port by cec on AVR Yamaha

    # Telling the receiver to switch to DUNE input - HDMI 1
    echo "tx 4f 82 11 00" | cec-client -s -d 1;

    # Waiting a little for the TV to sync
    echo "Wait for 10s for hdmi to switch to DUNE"
    sleep 10;
    url=$(python -c "import urllib; print urllib.quote('''$1''')")

    # Telling the Dune to start playback
    wget -O - "http://192.168.0.199/cgi-bin/do?cmd=launch_media_url&action_on_exit=black_screen&media_url=$url";
    #echo "http://192.168.0.199/cgi-bin/do?cmd=launch_media_url&action_on_exit=black_screen&media_url=$1"
    #echo "Wait for 2s for video to launch"
    #sleep 2;
    # Now waiting for the playback to finish
    play=1;
    while [ $play -eq 1 ]
    do
       echo "Wait for 10s again..."
       sleep 10
       status=$(wget -O - "http://192.168.0.199/cgi-bin/do?cmd=status")
    #   echo "---"
    #   echo $status
    #   echo "---"
       if (echo $status | grep -c "name=\"player_state\" value=\"file_playback\"") > 0
       then
          if (echo $status | grep -c "name=\"playback_state\" value=\"stopped\"") > 0
          then
             play=0
          fi
       else
          if (echo $status | grep -c "name=\"player_state\" value=\"navigator\"") > 0
          then
             play=0
          fi
       
       fi
    done


    # Telling the receiver to switch back to XBMC input - HDMI 2
    echo "tx 1f 82 12 00" | cec-client -s -d 1;

lyksyr
 
Messages: 1820
Inscription Forum: 27 Déc 2007 17:08
Localisation: Angers
  • offline

Message » 29 Avr 2014 21:53

un problème résolu : xbmc ne se bloque plus depuis que j'ai passé mon dunefeeder.sh en utf8

par contre, il ne revient pas sur xbmc quand je lance le script de l'interface, alors qu'en ssh la détection fonctionne

je pense à un problème d'encodage...
lyksyr
 
Messages: 1820
Inscription Forum: 27 Déc 2007 17:08
Localisation: Angers
  • offline

Message » 29 Avr 2014 22:49

Quand tu dis qu'il ne revient pas sur XMBC tu fais référence à cette partie?
echo "tx 1f 82 12 00" | cec-client -s -d 1

Je pense savoir ce qui ne va pas.
Normalement cette commande est tapée directement dans ton shell.
Mais quand tu l'utilise dans un script bash, il faut entourer ta commande de ` ` sinon le echo est directement interprété avant le pipe

Essaye avec :
Code: Tout sélectionner
`echo "tx 1f 82 12 00" | cec-client -s -d 1`
djoole
 
Messages: 3140
Inscription Forum: 25 Avr 2007 0:43
Localisation: Val d'oise
  • offline

Message » 30 Avr 2014 9:22

non, ce n'est même pas ça, c'est qu'il ne détecte pas les chaines de caractère correspondant dans
Code: Tout sélectionner
echo $status | grep -c "name=\"player_state\" value=\"file_playback\""


alors peut-être est-ce là qu'il faut l'entourer de quotes appropriées

je vais tester tout à l'heure
lyksyr
 
Messages: 1820
Inscription Forum: 27 Déc 2007 17:08
Localisation: Angers
  • offline

Message » 30 Avr 2014 18:31

Oui très probablement... y a pas mal de commandes qui passent pas directement dans un script, il faut le échapper par quote inversée, sinon ton echo toto va être parsé avant le pipe, ce qui va faire qu'au lieu d'exécuter echo toto|grep titi, ça va exécuter toto | grep titi (command not found)

Un peu de littérature sur le sujet :
http://unix.stackexchange.com/questions ... an-in-bash
djoole
 
Messages: 3140
Inscription Forum: 25 Avr 2007 0:43
Localisation: Val d'oise
  • offline

Message » 01 Mai 2014 15:23

Des nouvelles, et des bonnes...

J'ai modifié la manière de rechercher la chaine de caractère, ça passe mieux.
Code: Tout sélectionner
#!/bin/bash
# dunefeeder for feeding videos to your dune from a Windows Seven PC with XBMC - by djoole - v0.1
# fork for raspberry pi by Lyksyr - switch hdmi port by cec on AVR Yamaha

# Telling the receiver to switch to DUNE input - HDMI 1
`echo "tx 4f 82 12 00" | cec-client -s -d 1`

# Waiting a little for the TV to sync
sleep 10;

# url encode via python for spaces and accents
url=$(python -c "import urllib; print urllib.quote('''$1''')");

# Telling the Dune to start playback
 wget -O - "http://192.168.0.199/cgi-bin/do?cmd=launch_media_url&action_on_exit=black_screen&media_url=$url"

# Now waiting for the playback to finish
play=1;
while [ $play -eq 1 ]
do
   sleep 10;
   wget -O /storage/.xbmc/userdata/dunefeeder.html "http://192.168.0.199/cgi-bin/do?cmd=status";
   if grep -c -h -e 'name=\"player_state\" value=\"file_playback\"' "/storage/.xbmc/userdata/dunefeeder.html"
   then
      if grep -c -h -e 'name=\"playback_state\" value=\"stopped\"' "/storage/.xbmc/userdata/dunefeeder.html"
      then
         play=0;
      fi
   else
      if grep -c -h -e 'name=\"player_state\" value=\"navigator\"' "/storage/.xbmc/userdata/dunefeeder.html"
      then
         play=0;
      fi
   
   fi
done


# Telling the receiver to switch back to XBMC input - HDMI 2
`echo "tx 1f 82 11 00" | cec-client -s -d 1`

sleep 20;
`echo "tx 1f 82 11 00" | cec-client -s -d 1`
sleep 20;
`echo "tx 1f 82 11 00" | cec-client -s -d 1`



l'encodage des caractères ne joue pas, en fait.

par contre, à la fin j'ai rajouté 2 fois des pauses et remettre sur le rpi parce que il le fait bien la première fois, mais la dune doit dire 'je suis là' et reprends la main.
et dans certains cas, le xbmc se relance et rebelotte.

Eh oui, la dune a encore le CEC d'activer, je n'y arrive pas sans
lyksyr
 
Messages: 1820
Inscription Forum: 27 Déc 2007 17:08
Localisation: Angers
  • offline

Message » 05 Mai 2014 15:37

bon, je vais faire une pause, et attendre la prochaine version stable de openelec.

en effet, dans gotham, de nouvelles fonctions sotn apparues :
Code: Tout sélectionner
CECToggleState    Toggle state of playing device via a CEC peripheral    v13 Addition
CECActivateSource    Wake up playing device via a CEC peripheral    v13 Addition
CECStandby    Put playing device on standby via a CEC peripheral    v13 Addition


Je pense les utiliser dans mon bash avec xbmc-send --a "CECToggleState" par exemple, et voir si ça arrange mes affaires... surement moins de plantages xbmc.
en effet, le cec-client est un outil de test, qui au bout d'un moment fait planter le client cec inclus dans xbmc.

Je n'ai pas creusé plus loin pour le moment, peut-être que je peux envoyer les codes bruts avec xbmc-send.

Et j'en ai marre des allers-retours dune/xbmc, je vais faire une pause plus longue entre la détection fin de video et le retour xbmc, ça devrait aller mieux.

Je pense que la dune demande le focus une fois que la vidéo est arrêtée (stop) mais une fois de plus lorsqu'il retourne sur le navigator (quand le do?cmd=status change)

Demain c'est vacances, retour le 15, je creuserai encore...
lyksyr
 
Messages: 1820
Inscription Forum: 27 Déc 2007 17:08
Localisation: Angers
  • offline

Message » 05 Mai 2014 17:18

Je suis sur Gotham depuis le début :)
Mais je n'utilise pas ces fonctions. J'utilise le CEC uniquement pour allumer la TV lorsque XBMC sort de veille.

Mais dans ton cas, si c'est pour faire du CEC via ton script, tu n'as pas besoin de Gotham, tu peux déjà tout faire avec cec-client.
L'intégration du CEC dans XBMC est utile uniquement pour une utilisation "intégrée" justement (e.g. mise en standby de la TV lorsque XBMC passe en screensaver, mise en pause de la lecture XBMC lorsque la TV change d'entrée, etc.)

Le CECToggleState ne sert qu'à allumer/éteindre le périphérique (TV, ampli) lorsque tu allumes/éteinds XBMC..
Toi tu voudrais activer l'entrée Dune de ton ampli lorsque tu lances une lecture c'est ça? XBMC ne t'aidera pas à faire ça
Tu peux déjà faire ça avec cec-client, pas besoin de Gotham.

Bonnes vacances ;)

EDIT : je me relis, en fait je dis que j'utilise pas les fonctions CEC d'XBMC, je mens, j'utilise donc le CECToggleState juste pour allumer la TV.. mais je ne savais même pas que ça s'appelait comme ça :D
djoole
 
Messages: 3140
Inscription Forum: 25 Avr 2007 0:43
Localisation: Val d'oise
  • offline


Retourner vers Logiciel PC Home-cinéma

 
  • Articles en relation
    Dernier message