Efekt świetlny dla każdego urządzenia z wyjściem video na bazie Raspberry Pi z Raspbmc lub Openelec

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:
P8240027-800

Konfiguracja sprzętu i oprogramowania

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

OpenELEC

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:
bad-signal
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!):
green-signal

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.

Previous Post Next Post