Mam dobrą wiadomość. Jeśli udało się Wam uruchomić efekt świetlny z poprzedniego wpisu: https://blog.jokielowie.com/2014/02/efekt-swietlny-dla-media-playera-operatego-o-raspberty-pi/ to z pewnością zauważyliślicie, że jest ograniczony do plików, linków – ogólnie materiału, który jest odtwarzany w samym raspbmc czy OpenELEC. Na szczęście, dzięki ciągłej pracy Twórcy hyperiona (tvdzwan) dostaliśmy niedawno możliwość uruchomienia tego efektu dla dowolnych urządzeń które posiadają analogowe wyjście http://pl.wikipedia.org/wiki/Composite_video. Zwykle nawet najnowsze STB, Odtwarzacze Blu-Ray czy Amplitunery posiadają wyjście SCART lub oznaczone na żółto 'Video’. Bardzo często pozwalają jednocześnie na wyjście przez HDMI oraz Composite Video.
==
Tym razem powinniśmy się zaopatrzyć w tani 'Grabber TV’ albo 'Video DVR’. Jest to urządzenie USB z wejściami Composite Video oraz Audio (L+P), które zwykle stosowane jest do transferu starych kaset VHS z popularnego w latach 90-tych zeszłego wieku wideo oraz innych urządzeń analgoowych do formatu skompresowanego (MPEG-4) – czyli konwersji domowej biblioteki filmów:
W urządzeniach za przysłowiowe 20PLN występujących pod różnymi nazwami (np: EzCap) są obecne zwykle dwa chipsety: STK1160 oraz Fushicai UTV007. Aby sprawdzić jaki mamy chip należy wydać
sudo lsusb
Oba są rozpoznawane przez najnowszego OpenELEC, a lsmod powinien pokazać załadowane m.in.:
OpenELEC:~ # lsmod
videobuf2_core
videobuf2_vmalloc
usbtv
Natomiast dla STK1160 lsmod powinno wyglądać następująco (także m.in.):
OpenELEC:~ # lsmod
spi-bcm2708
videobuf2_core
videobuf2_vmalloc
stk1160
Na początek zobaczmy czy posiadamy odpowiednie urządzenie w /dev:
OpenELEC:~ # ls -al /dev/video*
crw-rw---- 1 root video 81, 0 Jan 1 1970 /dev/video0
Dość ważne na tym etapie jest aby zapamiętać czy jest to właśnie video0 – jeśli np: video1 to pamiętamy o tym przy dalszej konfiguracji.
Jeśli jest, to możemy przystąpić do testu – złapmy klatkę z podłączonego sygnału wideo:
OpenELEC:~ # LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/storage/hyperion/bin /storage/hyperion/bin/hyperion-v4l2 --screenshot
V4L2 width=720 height=576
V4L2 pixel format=YUYV
V4L2 grabber signal threshold set to: {0,0,0}
V4L2 grabber started
V4L2 grabber stopped
Teraz należy pobrać plik screenshoot.png albo oglądnąć go nawet w samym OpenELEC.
Jeśli nie masz poprawnego sygnału to obraz będzie wyglądał np: tak:
Jeśli jest dobrze podłączony, to może wyglądać mniej więcej tak – trochę zieleni lub zielonych pasów, ale obraz będzie (trochę jak z początków TV!):
Następnie należy dodać do konfiguracji hyperion w /storage/hyperion/config/hyperion.config.json sekcję, na samym końcu, ale przed ostatnią klamrą:
/// Configuration for the embedded V4L2 grabber
/// * device : Urządzenie V4L2, którego mamy zamiar użyć [default="/dev/video0"]
/// * input : Wejście V4L2którego mamy zamiar użyć [default=0]
/// * standard : Standard Video (no-change/PAL/NTSC) [default="no-change"]
/// * width : Szerokość V4L2 obrazu [default=-1]
/// * height : Wysokośćobrazu [default=-1]
/// * frameDecimation : Współczynnik cięcia klatki [default=2]
/// * sizeDecimation : Wielkość współczynnika cięcia klatki [default=8]
/// * priority : Hyperion priority channel [default=800]
/// * mode : 3D mode to use 2D/3DSBS/3DTAB (note: no autodetection) [default="2D"]
/// * cropLeft : Cropping from the left [default=0]
/// * cropRight : Cropping from the right [default=0]
/// * cropTop : Cropping from the top [default=0]
/// * cropBottom : Cropping from the bottom [default=0]
/// * redSignalThreshold : Signal threshold for the red channel between 0.0 and 1.0 [default=0.0]
/// * greenSignalThreshold : Signal threshold for the green channel between 0.0 and 1.0 [default=0.0]
/// * blueSignalThreshold : Signal threshold for the blue channel between 0.0 and 1.0 [default=0.0]
"grabber-v4l2" :
{
"device" : "/dev/video0",
"input" : 0,
"standard" : "PAL",
"width" : 360,
"height" : 240,
"frameDecimation" : 2,
"sizeDecimation" : 8,
"priority" : 1000,
"mode" : "2D",
"cropLeft" : 26,
"cropRight" : 27,
"cropTop" : 20,
"cropBottom" : 20,
"redSignalThreshold" : 0.1,
"greenSignalThreshold" : 0.1,
"blueSignalThreshold" : 0.1
},
Wreszcie – w konfiguracji XBMC należy włączyć opcję w menu Ustawienia->Usługi->Zdalne sterowanie->Zezwalaj programom na innych systemach na zdalne sterowanie. Inaczej możemy albo dostać nałożony na siebie „mrugający efekt” albo w ogóle brak efektu z źródła compostie, ponieważ hyperion NIE WIE, że aktualnie znajdujemy się w menu i ma ów efekt włączyć.
Podłączamy więc kabel video i testujemy! Efekt powinien być widoczny od razu w menu OpenELEC lub raspbmc, ale należy pamiętać aby w konfiguracji Hyperiona, wyłączyć pobieranie ramki w menu. Wyłączanie pobierania ramki w menu to wpis w hyperion.config.json – „grabMenu” : false,:
"xbmcVideoChecker" :
{
"xbmcAddress" : "127.0.0.1",
"xbmcTcpPort" : 9090,
"grabVideo" : true,
"grabPictures" : true,
"grabAudio" : true,
"grabMenu" : false,
"grabScreensaver" : false,
"enable3DDetection" : true
},
Dla 96 LED, przy tej konfiguracji obciążenie Raspberry PI B 256MB wygląda tak:
293 1 root R 397m106.4 0 63.9 /usr/lib/xbmc/xbmc.bin --standalone -fs --lircdev /run/lirc/lircd
401 400 root S 72328 18.9 0 17.1 /storage/hyperion/bin/hyperiond /storage/.config/hyperion.config.json
Na koniec zapraszam do następnego wpisu, w którym poprawimy jeszcze jedną kwestię – nie zawsze mamy wyjście AV albo wymaga ono przełączenia STB w tryb SD (576i), albo po prostu mamy tylko HDMI – np: wychodzące z amplitunera. Tak więc następnym razem podłączymy rozdzielacz HDMI oraz konwerter HDMI do AV. Ale to dopiero jak przyjdzie sprzęt, wystarczająco tani acz działający, co jak wiadomo szybko się nie stanie.