Videoinspelning via Webb

Berätta om dina pågående projekt.
Pitbull_dog
Inlägg: 88
Blev medlem: 3 oktober 2005, 03:03:27

Videoinspelning via Webb

Inlägg av Pitbull_dog »

Det här projektet är ett exempel på när man har alldeles för mycket tid.

Jag ville ha en funktion där jag lägger in inspelningsuppdrag via en webbsida
för att sedan kunna spela upp mpeg-filen på min KISS-spelare (dp500).

Kraven var:

1 Att bara använda bråte som ändå låg och skräpade.
2 Energisnålt och ljudlöst då inspelning inte sker.

Webbservern kör jag på en gammal ombyggd laptop med Pentium 133 MHz. Ombyggnaden
innebär att skärmen och tangentbordet är borta. Resultatet är en mycket energisnål,
mindre än 20 Watt, burk som håller temperaturen riktigt bra. Den är nästan ljudlös,
men då jag har placerat den i en garderob uppfyller den kravet. Den används dessutom
för en massa andra saker så den står inte och surrar enkom för det här projektet.
Först tänkte jag använda NT4 server men den vägrade installera på den här datorn.
Till min förvåning fungerade istället Redhat 9.1 alldeles utmärkt. Den kör förstås
Apache, PHP samt MySql.

Jag hade ett gammalt videoredigeringskort för PCI-buss Snazzi med MPEG 1-hårdvarukomprim-
mering. Drivrutinerna är ok men fungerar bara för Windows 9x. Applikationen som sköter
inspelningen var halvtaskig. Det gick inte att ställa några tider i förväg och den
tar inga parametrar via kommandotolken. Att jag behövde ytterligare en burk för
Snazzi-kortet torde vara uppenbart. Jag plockade fram en gammal P2:a 350 Mhz från källaren.

Snazzi-kortet har ingen TV-tuner så jag tiggde till mig en trasig Stereo-video från en secondhand-
butik. Videon vägrade befatta sig med några videoband men det spelade ingen roll då jag bara skulle
använda TV-tunern.

Webbsidan var snabbt ihopsnickrad i PHP och jag går inte in i detalj på den programmeringen.
Data lagras i MySql och ett Cron-Jobb håller koll på när det börjar bli dags för en inspelning.
Jag använde Curl för att aktivera ett PHP-script som läser av databasen.

Det intressanta problemet börjar när Linuxmaskinen ska starta Windowsmaskinen. Vissa nätverkskort
är utrustade med en sk "wake on lan" - funktion. Jag lyckades inte få det att fungera alls.
Jag byggde istället en hårdvara som styrs från linuxmaskinens parallellport. Parallellporten
styrs av ett program skrivet i c och som får sina instruktioner via argument från PHP-scriptet.

Steg ett är att kolla om Windowsmaskinen är igång. Det gjordes enkelt genom att via en optokopplare
läsa av spänningen på Windowsmaskinens powerdiod. Om windowsmaskinen inte är på så kortsluts dess
powerknapp under en sekund med hjälp av ett relä. Resultatet är att den hoppar igång. Enkelt och
nära idiotsäkert.

Konstruktionen är väldigt enkel och det finns en mängd kretsbeskrivningar på nätet,
ett problem var dock att linuxdatorn, i likhet med många andra PC, skickar ut en massa skräp på
parallellporten då den bootar. Lösningen blev att reläet inte bara aktiveras
av en hög nivå på parallellporten utan även en hög nivå från en liten PIC 12F629. PIC:en håller sin nivå
låg tills den har aktiverats av en förvald byte på en av parallellportens utgångar som sedan hålls hög.
Så fort aktiveringsstiftet går låg eller PIC:en startas om inaktiveras stiftet som styr reläet och
parallellporten kan stå och skicka ut skräp bäst den vill utan att reläet aktiveras.

När Windowsmaskinen hoppar igång så startas ett bakgrundsjobb som jag kallar Snaxx.
Det är skrivet i Visual C++ version 6. Snaxx hämtar data från Mysql-databasen.
All kommunikation där Snaxx är aktiv part sker med libcurl och http-protokollet.
När den har hittat ett lämpligt jobb så kollar den om Videon är på. Videon har liksom
Windowsmaskinen sin powerled kopplad till ingångarna på linuxmaskinens parallellport.

Windowsmaskinen kommunicerar med videon via IR kopplat på serieporten och programmet
Winlirc ( http://winlirc.sourceforge.net/). Winlirc styrs ganska enkelt med hjälp av APIENTRY
Förutom att se till att videon är påslagen så ställs även rätt kanal in.

Resten är ganska ointressant ur elektroniksynvinkel. Snaxx fjärrstyr Videokortet Snazzis kassa
inspelningsprogram med hjälp av "virtuella musklick" SetCursorPos() och mouse_event().

Sedan stänger windowsmaskinen av sig och allt återgår till det normala. Dom nätverksanslutna
KISS-spelarna spelar upp filen direkt från hårddisk.

Resultatet är en inspelningsfunktion som är busenkel att använda. För att inte tala om hur praktiskt
det är om man är borta och glömt att spela in något. Då behöver man bara en internetansluten dator
för att lägga in en inspelning.

Jag vill inte rekommendera någon att bygga det här projektet som det ser ut nu. Men om någon är
intresserad av scheman och källkod så är det bara att maila.
[/img]
Stenmark
Inlägg: 54
Blev medlem: 7 juli 2004, 22:51:14
Kontakt:

Inlägg av Stenmark »

Och här sitter jag och får försvara mina "meningslösa" projekt mot mina polares kommentarer, men jag tror jag har mött min överman i meninsglöshet :)
Jag kan bara grattulera dig till att ro iland projektet, gratis dessutom! Det är nog inte många som skulle orka att fixa allt så att det verkligen fungerar till slut, snyggt jobbat!
Användarvisningsbild
Snabelost
Inlägg: 1089
Blev medlem: 1 mars 2005, 23:12:57
Ort: Sweden / Örebro / Fjugesta
Kontakt:

Inlägg av Snabelost »

Coolt projekt!

Skulle kunna tänka mig att bygga något liknande, men då baserat på en digitalmottagare istället!

/Magnus
Användarvisningsbild
simon78
Inlägg: 1091
Blev medlem: 8 juni 2004, 11:05:51
Ort: Vinninga/Lidköping
Kontakt:

Inlägg av simon78 »

Varför inte mythtv? Jag fann att det var en utmaning att installera, kanske inte riktigt lika utmanande som ditt projekt, men...
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Smidigt. :) Jag har tänkt bygga en exakt likadan sak själv. men det har aldrig blivit av. :cry: Nu väntar jag på att tv-korten ska bli lite billigare så att man kan bygga sin egen HTPC med MythTV eller något liknande.
Pitbull_dog
Inlägg: 88
Blev medlem: 3 oktober 2005, 03:03:27

Inlägg av Pitbull_dog »

Tack alla för positivt feedback.
Jag tror att en utveckling kommer att bli ett nytt och bättre tv-kort.
Något från Hauppauge som klara mpeg 2 med hårdvarukodare. Sedan ska jag försöka göra en wap-version av sidan så att man kan beordra inspelning från mobilen.

Stenmark: Hmm.. nu får jag nog försvara mitt projekt. :-) Visst blev det mer än lovligt omständigt men det är helt klart en nyttoprodukt. Såvida
man kan kalla TV-tittande för nyttigt vill säga. :-)

cykze: Ehh.. mythtv?? Visste inte att det fanns något liknande men det
är alltid roligare att bygga eget. Får nog titta lite på mythtv
Användarvisningsbild
simon78
Inlägg: 1091
Blev medlem: 8 juni 2004, 11:05:51
Ort: Vinninga/Lidköping
Kontakt:

Inlägg av simon78 »

Myth använder jag. Det har allt du beskriver, phpgränssnitt, mysql-lagring, xmltv-integration, avancerad schemaläggning om du har många tuners, tv-paus osv. Det har även ett wapptema har jag för mig. Det stödjer även en mer avancerad nätverksarkitektur,.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

simon78: Det känns mer och mer som något jag bara måste ha. Vilken eller vilka funktioner tycker du bäst om i MythTV?

Vad har du för hårdvara?
Användarvisningsbild
simon78
Inlägg: 1091
Blev medlem: 8 juni 2004, 11:05:51
Ort: Vinninga/Lidköping
Kontakt:

Inlägg av simon78 »

Hmmm... helheten tycker nästan jag. Men de automatiska tv-tablåerna och reklamdetekteringen är ju bra. Kommer knappt ihåg när jag såg på TV live förut. Man kollar bara igenom vilka program man vill se en eller två veckor frammåt. Sen när man är sugen på att se på TV så väljer man bara ett program som redan finns inspelat. Man laggar ju kanske någon dag men man kan bestämma själv när man vill se på TV. Om man har flera tuners så kan myth uttnytja alla. Jag använder min stationära dator som backend, där sitter tvkortet och den kör backend mjukvara, i vardagsrummet har jag en tvdator som är bara frontend, helt disklös. Det gör att jag inte behöver ha tvdatorn på hela tiden för att inte missa en inspelning. IOFS uttnytjar schemaläggaren att bios kan väcka datorn när det är dags för inspelning. En annan trevlig funktion är ju att man kan pausa livetv om man nu skulle se det. Bra för småbarnsföräldrar som vi. Sen när det är reklam så ser man ikapp. Nackdelen är väl att kanalbytet blir segt, eftersom tvströmmen lagras i en ringbuffer. Annars gillar jag allt med TV-delen i mythtv. TV-delen är ju bara en av alla delar. jag använder flitigt mythgallery (bildvisare), mythmusic, mythvideo (spelar divx och mpeg och sådant, tankar hem omslag och recentioner från imdb), mythdvd för att spela och rippa dvd/vcd. Mythweather, mythgame (nes- snes- c64- mame- emulatorfrontend), mythnews använder jag mera sällan. Det jag saknar mest är väl att torrentocracy gick i stöpet. Det var en integration mellan dina inspelningar och bittorrent, så man kunde få hem vilka somhelst inspelningar som skett på någon mythtvdator någonstans i värden. Det projektet välsignades inte riktigt av grundaren, av uppenbara skäl.

Annars är jag mycket nöjd, speciellt med att man kan få ganska hög WAF*



* = Wife acceptance factor
Användarvisningsbild
simon78
Inlägg: 1091
Blev medlem: 8 juni 2004, 11:05:51
Ort: Vinninga/Lidköping
Kontakt:

Inlägg av simon78 »

Glömde, har en athlon xp 2000 (iofs lite overkill, men kan vara bra till att tex omkodning till trevligare format) Ett hauppauge pvr-250 med mpeg2-encoder. skulle gärna haft ett 350, som har decoder så att man kan få mpeg2-hårdvarudekodat direkt till TV-en. Nu har ju hauppauge kommit med 150-kortet, som är ganska billigt för att ha en mpeg2-encoder ombord.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Vill ha! :shock:

Vad menar du att den hårddisklösa datorn har för funktion? Har du tv:n kopplad till tv-out på grafikkortet eller tv-kortet?

Pitbull_dog, ursäkta om det blev lite OT nu...
Användarvisningsbild
simon78
Inlägg: 1091
Blev medlem: 8 juni 2004, 11:05:51
Ort: Vinninga/Lidköping
Kontakt:

Inlägg av simon78 »

antensladden går till backenddatorn, och tvut från frontenddatorn. Man kan givetvis köra backend och frontend på samma dator. Sen kan man ju köra master backends och slave backends om man har många tuners och vill komplicera saker ytterligare. Backenddatorn är den kraftfullaste med mest hårddisk, frontenddatorn behöver bara kunna koda upp divx och mpeg. Epia 10000M eller vad det heter brukar vara poppis att bygga av.
Pitbull_dog
Inlägg: 88
Blev medlem: 3 oktober 2005, 03:03:27

Inlägg av Pitbull_dog »

cykze skrev:
Pitbull_dog, ursäkta om det blev lite OT nu...
Helt Ok. För den som läser rubriken och söker information i ämnet
så tycker jag att det är helt relevant att även belysa befintliga system.
Användarvisningsbild
simon78
Inlägg: 1091
Blev medlem: 8 juni 2004, 11:05:51
Ort: Vinninga/Lidköping
Kontakt:

Inlägg av simon78 »

Hursomhelst, kolla på mythtv.org, speciellt skärmskjuten, för att få en uppfattning om programme(t/n). Om ni ska installera rekommenderar jag Jarod Wilsons guide, den grundar sig på Fedora Core. Jag har inte kört med den, men gör man det finns det mycket hjälp att få.
Pitbull_dog
Inlägg: 88
Blev medlem: 3 oktober 2005, 03:03:27

Inlägg av Pitbull_dog »

En uppdatering:

Jag tröttnade på Snazzi-kortets begränsade upplösning och beslutade att byta ut
all hårdvara. Valet föll på ett Hauppauge PVR-350 för capture. Jag köpte även ett
mini-itx eden 533. Japp det går att köra PVR-350 på det relativt långsamma kortet.
Man kan dock glömma att visa video vi grafikkortet. Capture-programmet wintv2000
har möjligheten att stänga av lokal visning och bara köra via tv-out. Men det programmet
är både trögt och .. korkat höll jag på att skriva men det passar i alla fall inte mina syften
och i synnerhet inte i den här datorn. Valet föll istället på en tredjepartsapplikation:
Wintvcap. Helt styrt via kommandotolken och utan gui. Perfekt att styra från båda Apache-
webserver och den NT-service jag har skrivit för att kontrollera schemalagda inspelningar.
Jag kan spela in mpeg2 i valfri kvalitet med max 15 procents total CPU-load och detta inkluderar
även Apache, Mysql plus min NT-service.

Enda problemet är egentligen att PVR-350 kortet drar en attans massa ström.
Tio Watt kontinuerligt oavsett om det används eller inte. Jag gissar att decoder-funktionerna jobbar
konstant oavsett om datorn "streamer" resultatet eller inte. Något som har en hint om det går
att "skjuta ner" kortet då det inte används? Antingen mjukvarumässigt eller via hårdvara.

En framtida utbyggnad blir att koppla en display samt knappar på burkens framsida för att
kunna se aktuell status samt kunna styra inspelningar direkt via displayen utan att behöva
ha en annan dator igång. Fjärrkontrollen torde vara totalt meningslös då burken kommer
att stå i en garderob.
Skriv svar