Alors, je répète l'
objectif : Utiliser XBMC comme interface de navigation dans ses médias, et utilisation intégrée de la Dune pour la lecture de ces même médias (comprendre basculement automatique vers la Dune sur lancement d'une vidéo sous XBMC, puis retour automatique sous XBMC à la fin ou l'arrêt de la vidéo).(avec en petit bonus, l'automatisation du décalage audio de -0,22sec pour les MKV

)
Je vais décrire la façon dont je m'y suis pris, mais en fonction du matériel et des environnements logiciels de chacun, certaines choses devront être adaptée.
C'est pourquoi je liste l'
environnement utilisé :
- PC sous Windows Seven avec XBMC installé et une ou plusieurs sources vidéos SMB déclarées
- Dune
- Vidéos sur un NAS (partage SMB)
- Matériel HC (Ampli, Dune, PC, TV) pilotable par IP Control
- Logiciel permettant d'envoyer des commandes HTTP POST : GNU Wget
1. Configuration de l'External Player dans XBMCSous
c:\users\votre_user\AppData\Roaming\XBMC\userdata, créer un fichier
playercorefactory.xml qui contient le texte suivant :
- Code: Tout sélectionner
<playercorefactory>
<players>
<player name="DUNE" type="ExternalPlayer" audio="false" video="true">
<filename>C:\dunefeeder.bat</filename>
<args>"{1}"</args>
<hidexbmc>false</hidexbmc>
<hideconsole>false</hideconsole>
<warpcursor>none</warpcursor>
<playcountminimumtime>999999</playcountminimumtime>
</player>
</players>
<rules action="prepend">
<rule video="true" player="DUNE">
<rule internetstream="true" player="videodefaultplayer" />
</rule>
</rules>
</playercorefactory>
Ce fichier va faire en sorte que lorsqu'une vidéo sera lancée depuis XBMC, cela passera le chemin smb de la vidéo à un script batch, qui pilotera lui-même la lecture de la vidéo au niveau de la Dune.
NB : si l'environnement n'est pas Windows Seven, le chemin diffèrera, Google est votre ami.
2. Création du script batch dunefeeder.batPlacer dans C: un fichier
dunefeeder.bat qui contient le code suivant :
- Code: Tout sélectionner
@echo off
rem dunefeeder for feeding videos to your dune from a Windows Seven PC with XBMC - by djoole - v0.1
set wget="C:\Program Files (x86)\GnuWin32\bin\wget.exe"
echo raw url : %1>c:\debug.log
rem Moving antislashes to slashes
set url=%1
set url=%url:\=/%
rem Removing stuff to make DVD/BD playback work
set url=%url:/VIDEO_TS/VIDEO_TS.IFO=%
set url=%url:/BDMV/PLAYLIST/00000.mpls=%
set url=%url:/BDMV/MovieObject.bdmv=%
set url=%url:/BDMV/index.bdmv=%
rem Enconding ampersands
setlocal EnableDelayedExpansion EnableExtensions
set "url=!url:&=%%26!"
rem Removing double quotes
set url=%url:"=%
rem Telling the receiver to switch to BD input
%wget% -O nul --post-data="<YAMAHA_AV cmd=\"PUT\"><Main_Zone><Input><Input_Sel>BD/HD DVD</Input_Sel></Input></Main_Zone></YAMAHA_AV>" http://10.0.0.11/YamahaRemoteControl/ctrl
rem Waiting a little for the TV to sync
TIMEOUT /T 1 /NOBREAK
rem Telling the Dune to start playback
echo command : %wget% -O c:\result.txt "http://dune/cgi-bin/do?cmd=launch_media_url&action_on_exit=black_screen&media_url=smb:!url!">>c:\debug.log
%wget% -O c:\result.txt "http://dune/cgi-bin/do?cmd=launch_media_url&action_on_exit=black_screen&media_url=smb:!url!"
rem If it's a mkv, delay the audio for 0,22sec
echo.!url! | findstr /C:".mkv">nul && (
TIMEOUT /T 5 /NOBREAK
%wget% -O nul "http://dune/cgi-bin/do?cmd=ir_code&ir_code=BF40BF00"
%wget% -O nul "http://dune/cgi-bin/do?cmd=ir_code&ir_code=E817BF00"
%wget% -O nul "http://dune/cgi-bin/do?cmd=ir_code&ir_code=E817BF00"
%wget% -O nul "http://dune/cgi-bin/do?cmd=ir_code&ir_code=E817BF00"
%wget% -O nul "http://dune/cgi-bin/do?cmd=ir_code&ir_code=E817BF00"
%wget% -O nul "http://dune/cgi-bin/do?cmd=ir_code&ir_code=EB14BF00"
)
rem Now waiting for the playback to finish
TIMEOUT /T 19 /NOBREAK
:test
TIMEOUT /T 1 /NOBREAK
%wget% -O c:\result.txt "http://dune/cgi-bin/do?cmd=status"
findstr /M /C:"name=\"player_state\" value=\"file_playback\"" c:\result.txt
if not ERRORLEVEL 1 (
findstr /M /C:"name=\"playback_state\" value=\"stopped\"" c:\result.txt
if not ERRORLEVEL 1 (
goto :end
)
)
findstr /M /C:"name=\"player_state\" value=\"navigator\"" c:\result.txt
if not ERRORLEVEL 1 (
goto :end
) else (
goto :test
)
findstr /M /C:"name=\"player_state\" value=\"standby\"" c:\result.txt
if not ERRORLEVEL 1 (
goto :end
) else (
goto :test
)
:end
rem Telling the receiver to switch back to DVD input
%wget% -O nul --post-data="<YAMAHA_AV cmd=\"PUT\"><Main_Zone><Input><Input_Sel>DVD</Input_Sel></Input></Main_Zone></YAMAHA_AV>" http://10.0.0.11/YamahaRemoteControl/ctrl
NB : les commandes de pilotage des entrées HDMI de l'ampli ne fonctionneront que pour un ampli Yamaha (DSP-Zx)
Ces dernières devront être adaptées pour votre ampli (Google reste votre ami pour la vie).
Si l'ampli n'est pas IP contrôlable, tout n'est pas perdu, il vous faudra un blaster IR (tel que l'
USB-UIRT) pour piloter votre ampli depuis le PC par IR (en utilisant par exemple
EventGhost en ligne de commande qui se chargera, via le fichier batch, d'envoyer la bonne séquence IR à l'ampli).
NB2 : Apparemment depuis la beta 4 (version Seven) de Gotham, XBMC ne passe plus correctement les caractères accentués, ce qui fait que le batch ne peut plus les encoder correctement, ce qui abouti à une erreur d'ouverture d'URL du coté de la Dune. Je n'ai pas réussi à m'en sortir, donc la seule solution que j'ai trouvé est de supprimer les accents des noms de dossiers/fichiers
Et bien voilà, y a plus qu'à apprécier l'interface d'XBMC et tous ses avantages, tout en continuant de bénéficier des compétences en matières de lecture vidéo de la Dune

Après, pour piloter le tout, je ne saurais que conseiller le logiciel
iRule (iOS et Android) qui permet de se confectionner une interface tactile de pilotage aux petits oignons.
La mienne qui me permet donc de piloter tout mon HC dont XBMC en phase navigation et la Dune en phase visionnage (avec bien sûr démarrage/arrêt automatique du matériel en fonction des activités) ressemble à ça (work in progress) :




Ou bien on peut toujours utiliser une télécommande universelle (type Logitech Harmony), mais là ça se complique, car la télécommande ne saura pas faire la différence entre une phase navigation sous XBMC, et une face lecture sous la Dune, hors les boutons haut/bas/gauche/droite/enter n'auront pas la même fonction dans chacune de ces 2 phases.
C'était mon cas avant que je passe sur iRule, et là ça devient compliqué. Pour ceux intéressés je donne les grandes lignes :
1. Utilisation d'un récepteur infrarouge
FLIRC sur le PC qui héberge XBMC
2. Utilisation d'EventGhost sur le PC qui héberge XBMC
3. Utilisation d'un profil lambda Logitech Harmony qui permettra de mapper suffisamment de codes IR vers des touches et combinaisons de touches du PC
4. Configuration de FLIRC sur le PC de sorte à mapper les codes IR de la télécommande universelle vers des combinaisons touches clavier
5. Configuration d'EventGhost et des Exclusives (
très bon tuto) de sorte à mapper les combinaisons claviers vers des actions qui changeront en fonction de la fenêtre active (XBMC actions XMBC, dunefeeder.bat envoi de commandes wget)
NB : je pense qu'il y'a moyen de zapper le 4. et de mapper directement les entrées IR dans EventGhost, mais pas essayé, car n'ayant utilisé que EventGhost dans un 2ème temps j'avais déjà tout mappé sur des combi de touches.
Si on fait bien les choses, on a un truc ultra WAF (je navigue dans mes jaquettes de films sous XBMC avec les flèche gauche/droite et le OK de ma télécommande, et je peux également utiliser ces même touches pour choisir la langue audio et les sous-titres sous la Dune)
Mais bon, c'est hachement moins prise de tête avec une interface iRule

Mise à jour du 12/05/14 :
- Redirection des wget vers nul pour éviter la création de fichiers de sorties inutiles
- Modification de la tempo d'attente entre le lancement de la vidéo sur la Dune et le 1er check d''état de lecture : passage de 15 à 20 car 15 ne suffit pas pour certains BD, la Dune passant entre la 15ème et la 20ème seconde par un état "arrêté"
Mise à jour du 10/05/14 :
- Ajout d'un test sur état standby de la Dune
- Ajout de la prise en charge du lancement d'un index.bdmv par XBMC
Mise à jour du 22/04/14 :
- Ajout du NB suivant :
NB2 : Apparemment depuis la beta 4 (version Seven) de Gotham, XBMC ne passe plus correctement les caractères accentués, ce qui fait que le batch ne peut plus les encoder correctement, ce qui abouti à une erreur d'ouverture d'URL du coté de la Dune. Je n'ai pas réussi à m'en sortir, donc la seule solution que j'ai trouvé est de supprimer les accents des noms de dossiers/fichiers
Mise à jour du 21/04/14 :
- Modification de la tempo d'attente entre le lancement de la vidéo sur la Dune et le 1er check d''état de lecture : passage de 10 à 15 car 10 ne suffit pas pour un BD, la Dune passant entre la 10ème et la 15ème seconde par un état "arrêté"