Tuesday, December 17, 2013

IPTV 7-oji diena - xupnpd - DLNA serveris routeryje

Mano sukurtas Plex papildymas puikiai veikia ir naudoju jį jau kurį laiką kasdieniam televizijos žiūrėjimui, tačiau Plex nenoriai dirba su Android ir Apple įrenginiais, ir papraščiausias sprendimas vietoj Plex naudoti Serviio, kuris tiesą sakant man nelabai patinka, painus produktas, taigi daug dėmesio jam neskyriau. Tačiau naršydamas po interneto platybes aptikau xupnpd - eXtensible UPnP agent - kuris pasirodė ganėtinai adwanced produktas, tačiau žadėjo IPTV be kompiuterio, tereikia turėti routerį! Sudomino, pabandžiau, mano Asus RT-N66U veikia puikiai, taigi dalinuosi trumpa instrukcija kaip vyko diegimas ir išvadomis ar verta:

Visų pirma reikia routerio, kuriame būtų galima diegti papildomus paketus, t.y. tinka bent koks custom firmware kaip DD-WRT ar TomatoUSB ar kas nors panašaus, mano atveju tai minimaliai modifikuotas standartinis Asuswrt: Asuswrt-Merlin. Dar reikia USB atmintinės routeryje, arba kokio išmanaus routerio turinčio vietos, bet kaip jau kalbėjau praeitą kartą geriau naudoti atskirą USB atmintinę o ne routerio particijas. Taigi, viskas iš eilės:



  1. Jungiamės prie routerio Putty pagalba ir instaliuojame Entware arba Optware (galima apseiti ir be Entware, bet taip papraščiau)

  2. Entware duos toolsą opkg kuris padės instaliuoti xupnpd:
    opkg install xupnpd

  3. Tada kažkam reikia į iptables įdėti tokią taisyklę:
    iptables -I INPUT -i lo -j ACCEPT

    Tiesą sakant nelabai įsivaizduoju ką ji daro ir kam ji reikalinga, netestavau xupnpd be jos, taigi nesu įsitikinęs ar ji tikrai reikalinga, bet kad problemų nebūtų ji įrašyta į ankščiau aptarinėtą services-start skriptą kad perkrovus routerį viskas veiktų.

Na va kaipo ir viskas, atsidarome puslapį http://192.168.1.1:4044 (portą galima pakeisti nustatymuose arba xupnpd.lua failiuke), pakrauname beveik tokį patį playlistą kaip mano Plex plugine (vienintelis skirtumas kad vietoj tvg-logo naudojamas atributas logo, galite replace'inti su Notepad++) ir bandome žiūrėti per DLNA ar UPnP klientą, aš kolkas testavau tik su savo LG SmartTV, veikia puikiai, deja kaip ir Serviio atveju vaizdas šiek tiek neproporcingas, pakeisti nėra kaip, ir garso takelio irgi televizorius perjungti nesugeba, taigi per Plex žiūrėti maloniau. Bent kokiu atveju jeigu neturite kompiuterio serveriui, labai geras sprendimas, ačiū Anton Burdinuk už tokį appsą, ir dar ačiū Pavel V. Cherenkov už udpxy servisą, be kurio neveiktų aukščiau minėtas playlistas.

Monday, October 14, 2013

IPTV 6-oji diena - Plex media serverio pluginas

Kaip jau minėjau ankščiau yra labai paprastas būdas žiūrėti IPTV per teliką jeigu turite kokį tais kompiuterį kuriame būtų įdiegtas Plex serveris - tereikia IPTV kanalų nuorodas sudėti į atskirus *.str failus ir pakrauti į Plex serverį, tačiau toks būdas man nepatiko dėl to, kad kanalų informacija saugoma pačio Plex nustatumuose ir pakeitus serverį reikėtų visus kanalus aprašinėti iš naujo, turint grojąraštį iš 150 kanalų malonumas menkas, taigi leidausi į paieškas kaip tą informaciją išsaugoti atskirame faile ar eksportuoti kad būtų galima lengvai dalintis su draugais. Deja paieškos buvo nelabai sėkmingos, taigi nusprendžiau sukurti Plex plugin'ą kuris grotų IPTV kanalus iš M3U failo panašiai kaip ankščiau minėtas SIPTV ar nesenai atrasti nauji servisai SS-IPTV ir nStreamVOD servisai, ir po 3 dienų Pyhon kalbos mokymosi plius 2 dienų testavimo pristatau savo darbo rezultatą:


Plex grotuvai veikia Windows, Mac, Roku, LG, Samsung ir Google TV sistemose, taigi šis sprednimas (kaip ir ankstesnysis) tinka ne tik LG televizoriams. Instaliavimas paprastas, parsisiunčiate plugin'ą iš GitHub apačioje dešinėje esančiu mygtuku Download ZIP, nukopijuojate IPTV.bundle katalogą į Plex plugin katalogą (C:\Users\...\AppData\Local\Plex Media Server\Plug-ins) ir plugino Contents\Resources kataloge esantį playlist.m3u failiuką papildote jus dominančiais IPTV kanalais (labai daug viešų kanalų galima rasti freetux.net ir iptv-player.com), galite nurodyti papildomus atributus kaip tvg-logo ir group-title, remkitės pateiktu pavyzdžiu.

Ir viskas, net neperkrovus Plex serverio kliente turėtų atsirasti naujas punktas Video Channels, o jame IPTV ir sugrupuotas visas grojaraštis:

Video ChannelsIPTV

Keičiant serverį jums tereikia išsaugoti Jūsų asmeninį playlist.m3u ir tiek, ateityje planuoju įdėti EPG palaikymą, vertimą į lietuvių ir kitas kalbas, papildyti konfigūraciją ir pan.  Tik noriu atkreipti dėmesį kad Plex neturi oficialaus IPTV palaikymo ir gali būti kad kai kurie kanalai papraščiausiai negros, Plex serverio media manager'yje tai tikrai niekas negros, tik klientuose, tačiau aš pats testavau PC kliente ir LG televizoriuje, viskas groja be jokių problemų, tik užtrunka kol įsijungia. Daugiau informacijos galite ieškoti Plex forumuose, jeigu kils klausimų ar turite kokių pasiūlymų, rašykite čia, padėsiu kuo galėsiu. Jeigu mano plugin'as jums naudingas, būčiau dėkingas jeigu bent apsvarstytumėte galimybę paaukoti nedidelę sumą ant alaus, kad projektas toliau gyvuotų ir tobulėtų, nuorodą į PayPal Donations rasite viršuje dešinėje šio puslapio pusėje.

Friday, October 4, 2013

IPTV 5-oji diena - Asus RT-N66U papildomi nustatymai skriptų pagalba

Kaip ir žadėjau, pratęsimas kaip išsdaugoti router'io konfigūraciją, kuri nepasiekiama per GUI, tiesa šis sprendimas atrodo tinka tik Merlino modifikuotai Asus programinei įrangai, kadangi pas Merliną yra JFFS particija pritaikyta vartotojų skriptams kurie paleidžiami tam įvykstant tam tikriems įvykiams, tiesa yra nerekomenduojama šia particiją naudoti dažnai kadangi jos įrašymų kiekis yra ribotas, geriau naudoti kokį nors ir orastos kokybės USB flash'iuką, tokį pakeisti tikrai pigiau negu visą router'į.

Taigi viskas iš eilės, Merlin'o firmware įrašėm praeitą kartą, patikrinam ar įjungtas JFFS: Administration - System - Enable JFFS partition, pasijungiam per Putty (ką irgi išmokom praeitą kartą) ir kuriam naują failą vi pagalba:



vi /jffs/scripts/firewall_start


Vi tikrai lengvai užsimiršta kai ilgai nesinaudoji, teko naudotis google pagalba kad galėčiausuvaldyti, failo turinys atrodo taip:



#!/bin/sh
sleep 10
killall udpxy
udpxy -m eth0 -p 4000
iptables -I INPUT -p tcp –dport 4000 -j ACCEPT


Vi uždaromas suvedus komandą :x (prieš tai paspaudus Esc kad pereiti į komandinės eilutės režimą), toliau reikia suteikti teises skriptui:



chmod a+rx /jffs/scripts/*


Ir viskas, jeigu nepadaryta klaidų perkrovus routerį bus perkrautas Udpxy servisas ir atidarytas 4000 portas, būtinai patikrinkite skriptą ar nėra klaidų prieš palikdami jį, nes jungiantis routeriui jokių klaidų praneišmų niekur nerodys (na nebent kur nors yra logai, nesu įsitikinęs). Tai tiek, ačiū už dėmesį, kitą dieną tikiuosi grįžti prie televizoriaus konfigūravimo.

Tuesday, October 1, 2013

IPTV 4-oji diena - transliacija į išorę naudojant Udpxy ir Asus RT-N66U

Kaip jau lyg ir esu minėjęs, namuose turiu Asus RT-N66U router'į, jame pagal nutylėjimą sukasi Updxy servisas kuris mano ISP transliuojamo IPTV multicast srautą konvertuoja į unicast ir leidžia žiūrėti tuos unicast stream'us visiems prie router'io pasijungusiems vartotojams, deje tik LAN'e, nors galima prie router'io ir per WAN prisijungti, Udpxy nėra prieinamas nors žinau kad tas įmanoma, iš pirmo karto nepavyko tam sukonfiguruoti taigi atėjau ateičiai.

Ir vakar ta ateitis atėjo kai kolega Wadalazas bandė įrodyti kad mano idėja nelogiška ir neįgyvendinama, ir paprastas buitinis router'is nepajėgs perduoti televizijos į išorę, ir kad bakalauro diplomą aš gavau nepelnytai :), taigi gavęs motyvacijos prisėdau ir pabandžiau viską sutvarkyti:

Šiek tiek pagooglinęs išsiaiškinau, kad tereikia atidaryti Udpxy naudojamą portą (pagal nutylėjimą mano router'yje tai 4000) priėjimui iš WAN ir pakeisti Udpxy konfigūraciją kad leistų prisijungti ne tik vidiniu adresu 192.168.1.1, bet ir išoriniu, tačiau standartinės Asus programinės įrangos galimybės labai ribotos taigi reik ieškoti alternatyvų. Bent kas kažkiek nusimanantis kompiuteriniuose tinkluose man iškart rekomenduotų DD-WRT, kiek daugiau patirties turintys gal ir Tomato, apie kuriuos esu minėjęs ankstesniuosne įrašuose, tačiau mintis kad reikės visus DHCP, port forwarding'us ir pan. konfigūruoti iš naujo nelabai viliojo, taigi pradžiai pabandžiau tą patį Asuswrt, tik patobulintą nepriklausomo developer'io Merlin, tiesa jo puslapis kažkokia tragedija, bet pavyko atrasti jo mediafire paskyrą iš kur ir parsisiunčiau paskutinę stable versiją. Instaliuoti jį paprasta, extract'inam archyvą, viduj randam *.trx failą, upload'inam jį router'io nustatymuose Administration - Formware Upgrade ir viskas, net nustatymai liko visi, bet vistiek prieš tai rekomenduočiau pasidaryti atsarginę kopiją (Administration - Restore/Save/Upload Setting), maža kas. Toliau konfigūracimas, grafinio interfeiso tam rasti nepavyko, taigi naudojau unix komandas, matyt galėjau tą padaryti per Tools - Run System Command, bet nusprendžiau geriau tą daryti per Putty prieš tai įjungęs SSH palaikymą (Administration - System - Enable SSH). Jeigu nemokate naudotis Putty tai paprasta, į Host Name įrašote routerio adresą (192.168.1.1), spaudžiate Open, nurodote routerio priijungimo vardą, slaptažodį, ir baigta. 4000 portas atidaromas tokia komanda:



iptables -I INPUT -p tcp --dport 4000 -j ACCEPT


Tada reikia perkrauti Udpxy kad be parametro -a, nes Udpxy atsiliepia tik į kreipinius 192.168.1.1:4000 adresu, ką galima pamatyti http://192.168.1.1:4000/status puslapyje:



killall udpxy
udpxy -m eth0 -p 4000


Va ir viskas, http://192.168.1.1:4000/status turėtų matytis Accepting clients on: 0.0.0.0:4000, VLC player'yje nurodote network stream'ą



http://išorinis adresas arba IP (mano atveju cigaras.tk):4000/udp/xxx.xxx.xxx.xxx:1234


Kur vietoj xxx aišku atitinkami UDP adresas, ir matote atitinkama IPTV kanalą net nebūdami vietiniame tinkle, your face Wadala, god dammit!

Vienas mano kolega gyvenantis valstijose patestavo, ir aš patestavau darbe, viskas veikia, deje Wadalazui negroja, bet dėl to jau kalta Wadalos infrastruktūra, faktas kad veikia, ir net sudėtinga nebuvo (na aišku Udpxy tikrai rimtas produktas, pats kaži ar tokį suprgramuočiau, ačiū už tai Pavel V. Cherenkov), bakalaurą gavau ne veltui :)

Tačiau yra viena problema, per Putty atlikti pakeitimai nėra išsaugoti router'io konfigūracijoje, dėl to perkorvus router'į pakeitimai nusimuša, tenka iš naujo atidaryti portą ir perkrauti Udpxy, reikia pasitelkti google ir kurį vakarą tą sutvarkyti, tačiau šiai dienai užteks, taip sakant laukite tęsinio.

P.S. Taipogi ačiū už pagalbą snbforums.com.

Monday, September 30, 2013

IPTV 3-oji diena - lengviausias būdas žiūrėti IPTV per LG SmartTV

Planų daug, idėjų daug, o įgyvendinti kažkaip tingisi :) taigi tikiuosi laikinai paleidau kelis kanalus per Plex serverį banaliu rusiškame forume rastu būdu - sudėjau mane dominančių kanalų nuorodas į atskirus *.strm failus, sumečiau viską į vieną katalogą, įdėjau katalogą į Plex serverį kaip Home Videos, dar iš wikipedijos nukopijavau aprašymus bei paveikliukus, ir viskas groja, tiek man tiek vaikui užtenka :)


Dar šiek tiek info apie *.strm failus yra plex puslapyje (http://dev.plexapp.com/tools/strmtool.php) tačiau man toks sprendimas nesuveikė, stream'ai papraščiausiai negrojo.

Tuesday, September 10, 2013

IPTV pasiruošimas 3-iai dienai

Ankščiau minėto LG televiroziams skirto sprendimo žiūrėti IPTV kūrėjai (ar kūrėjas, kiek suprantu viską ten daro vienas žmogus) neperseniausiai pritaikė savo sistemą ir kitiems televizoriams, atitinkamai pasiekitė tinklapio adresas, dabar siptv.eu, ir atrodo produktas tapo mokamas, t.y. duoda pabandyti 24 val., o po to reikia paaukoti kažkie pinigų. bent kokiu atveju aš vis dar nerandu laiko užsiimti tuo nors sūnus jau senai prašo Disney XD kanalo kurio neduoda Vinitos televizija, kol geras oras nesinori sėdėti prie kompo ir mieliau laiką leidžiu lauke, o ir namuose po darbo tingiu krapštytis su kompiu, geriau telefoną pamaigau, bet orams atvėsus manau vistiek prisėsiu prie teliko ir priversiu jį veikti ankščiau ar vėliau :)


O kai pagaliau prisikasiu, reik nepamiršti kad mano naujasis routeris nepraleidžia multicast paketų (udp), o SIPTV, bent jau ankščiau, nenorėjo veikti per http protokolą, t.y. unicast, taigi tikėtina kad teks pabandyti problematišką DD-WRT arba Tomato, darbo nusimato nemažai, o šeima labai nemėgsta likti be interneto...

Saturday, March 9, 2013

IPTV 2-oji diena - It's alive!

Na ką čia daugiau ir pridurti, patobulintas scaner'is be didesnių problemų susidorojo su mano stream'ais, dar susisiekiau su MediaPortal forumo administratoriais, sutvarkė mano account'ą, tik WebEPG nevisus kanalus atpažysta, reikėtų biškį pasėdėti EPG rankomis patvarkyti, bet kadangi užsiėmimas neįdomus ir televizijos aš nežiūriu, labai abejoju kad tą darysiu, nebent susidėliosiu konkretų playlistą iš keleto kanalų, bet visų 120 tvarkyti kažkaip ranka nekyla :)


Dar vienas gal būt ateičiai projektėlis būtų paleisti IPTV tiesiai per mano išmanųjų televizorių naudojant LG Smart IPTV, tada nereikėtų dviejų pultelių, problema tik kad kaip suprantu telefivizijos signalas keliautų per kažkur Panevėžyje stovintį serverį... Ne, nesąmonė, Panevėžyje stovintis serveris tik playlist'us tvarko, o stream'as turėtų keliauti tiesiai iš mano router'io, bet kažko su mano http stream'ais nesusitvarko, tai reikėtų arba susisiekti su kūrėju arba kaip jau pasakojau praeitą kartą, bandyti leisti į vietinį tinklą multicast srautus arba IGMP, bet čia ateičiai.


Pabaigai dar įdėsiu kelias nuorodas į XBMC plugin'ą kuris teoriškai turėtų rodyti IPTV su EPG palaikymu be papildomo serverio, bet kolkas nesigilinau, sunku kažką komentuoti:



Thursday, March 7, 2013

IPTV 1-oji diena - MediaPortal TV serveris

Senokai bandau priversti savo teliką rodyti IPTV, kolega rekomendavo pabandyti pasikurti MediaPortal TV Serverį ir tada iš jo žiūrėti per to paties MediaPortal ar XBMC klientą, taigi nusprendžiau tam skirti ketvirtadienio vakarą, ir velniai griebtų koks nedraugiškas tas MediaPortal'as...


Taigi parsisiunčiau aš jį, bandau įdiegti, pasirenku TV Server (master) opciją, sako reikės duomenų bazės, kadangi jau turiu webserverį (ką patvirtina mano blog'as) kartu su MySQL serveriu, tai bandau panaudoti jį. Problema tik kad MediaPortal'as neleidžia jungtis nei prie localhost, nei prie 127.0.0.1 duombazės, o mano naudojamas Uniform Server pagal nutylėjimą neleidžia jungtis iš kitų host'ų, taigi pagooglinęs parsisiunčiu MySQL Workbench, pasijungiu savo MySQL serverį, pakeičiu root account'o Limit Connectivity to Hosts Matching į % kad leistų root vartotojui pasijungti iš bet kur ir... šūdo, MediaPortal'as vistiek nepasijungia nei nurodžius IP, nei host'o pavadinimą, taigi grįžtu į Google, nieko neradęs knisuosi Workbench ir Options File -> Networking -> General randu bind-adress reikšmę 127.0.0.1, išjungiu tą bind-adress ir pagaliau MediaPortal TV Serveris pasileidžia! Tik nelabai patinka kad jis mano db pasijungia root vartotoju, taigi sukuriu naują vartotoją mediaportal skirtą mptvbd bazei, klausimas dabar kaip pakeisti vartotoją MediaPortal'e, perknisau visus nustatymus - no luck - awesome :( pagalvojau kad jeigu sustabdžiau MySQL servisą, įjungus TV Serverio konfigūraciją turėtų paprašyti patikslinti prisijungimo duomenis, bet aišku su mano sėkme kitas pokštas, MySQL nesustoja :D ir aišku Uniform Config'as jokios klaidos nieko nerodo, teko pačiam susigaudyti kad MySQL išjungti neleidžia TVService, bet mano spėjimas pasitvirtino, išjungus MySQL TV Serveris parpašė patikslinti rekvizitus, priskyriau naują vartotoją, viskas lyg ir veikia.


Toliau reikia MediaPortal'ui sušerti IPTV kanalų playlist'ą, aišku intuityviai to padaryti nepavyksta, taigi Google to the rescue! Pasirodo playlist'as turi būti padėtas C:\ProgramData\Team MediaPortal\MediaPortal TV Server\TuningParameters\dvbip kataloge, taigi įmečiau playlist'ą, tada ilgai Googlyje ieškojau kaip tą playlist'ą rasti serverio nustatymuose, tą radau TV Servers -> serverio pavadinimas/hostas -> DVB-IP MediaPortal IPTV, kur mane pasitiko eilinis nusivylimas: MediaPortal'as nepalaiko http stream'ų, o mano router'is būtent http ir naudoja. Router'yje sukasi Udpxy servisas kuris multicast streamus keičia į unicast ir sugeneruotas naujas adresas gaunasi http://[routerio adresas]:[udpxy portas]/udp/[streamo adresas]:[streamo portas], o vat praleisti raw udp paketų man atrodo Asus RT-N66U routeris su standartiniu firmware negali (priešingai negu mano ankščiau naudoti D-Link DIR-300 ir DIR-655 (tiesa DIR-655 labai nesėkmingas produktas, su juo multicast streamai praeidavo tik esant tam tikrom mėnulio fazėm)), kaip ir IGMP jame nėra, tačiau routerio flashinimu jau nebėr sveikatos užsiimti, kaip ir traukti seną routerį iš spintos pabandymui patingėjau, taigi bandžiau ieškoti sprendimo MediaPortal'ui, ir kažką panašaus radau http://forum.team-mediaportal.com/threads/dvb-ip-mediaportal-iptv-source-filter.96726/, kad galėčiau parsisiūsti reikiamus failus turėjau prisijungti forume, taigi prisiregistravau, aktyvavau account'ą per el. paštu gautą nuorodą, prisjungiau pirmame psulapyje, atsiverčiu forumą ir mane atjungia, bandau pasijungti forume, ir manęs nerpijungia, nerodydami jokio klaidos pranešimo, papraščiausiai grąžina atgal į login puslapį su užrašu "You must be logged-in to do that.". Well fuck you too pasakiau aš ir nuėjau miegoti.


Update: Sekančią dieną pabandžiau prisijungti iš darbo, ta pati problema, tai matyt kažkas blogai su mano šviežiai sukurti account'u, kolega Viktoras savo acc atsiuntė man reikiamus failiukus, taigi vakare bandysiu tęsti kovą su MediaPortal'u, jeigu nepavyks groti http streamų, keisiu routerio firmware į TomatoUSB, vistiek tą norėjau kadanors padaryti, o ten bandysiu IGMP matyt konfigūruoti, gal išsitrauksiu seną routerį patestuoti, gal susidėsiu DD-WRT kadangi tas tikrai žinau praleidžia milticastą be jokių Udpxy ir IGMP, trumpiau tariant to be continued.


Update 2: Naujausioje MediaPortal versijoje (šiuo metu 1.7.0) nebereikia jokių papildomų dll'ų, HTTP ir UDP veikia out of the box.

Wednesday, March 6, 2013

Hello world!

Taigi, labas pasauli! Dabar ir aš turiu sau kampą internete kur bandysiu aprašyti savo atliekamus projektėlius susijusius su kompiuteriais, kompiuterių tinklais, smart tv, mobiliosiomis technologijomis, žaidimais ar šiaip rašysiu kas šaus į galvą. Aišku daug nesitikėkit, rimtu blogeriu tapti neketinu, taigi įrašai bus labai reti bet tikėkimės kam nors naudingi ar bent jau įdomūs.