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.
Czego będziemy potrzebować?
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:

Konfiguracja sprzętu i oprogramowania
W tych 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ć
1 |
sudo lsusb |
OpenELEC
Oba są rozpoznawane przez najnowszego OpenELEC, a lsmod powinien pokazać załadowane m.in.:
1 2 3 4 |
OpenELEC:~ # lsmod videobuf2_core videobuf2_vmalloc usbtv |
Natomiast dla STK1160 lsmod powinno wyglądać następująco (także m.in.):
1 2 3 4 5 |
OpenELEC:~ # lsmod spi-bcm2708 videobuf2_core videobuf2_vmalloc stk1160 |
Na początek zobaczmy czy posiadamy odpowiednie urządzenie w /dev:
1 2 |
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:
1 2 3 4 5 6 |
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/.config/hyperion.config.json sekcję, na samym końcu, ale przed ostatnią klamrą:
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 |
/// 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,:
1 2 3 4 5 6 7 8 9 10 11 |
"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:
1 2 |
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.