"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

HD+, UPC - MediaCenter [DIY Recording Station]

Destavator 08.03.2015 - 15:08 5584 16
Posts

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Hallo zusammen !


Wie in einem anderen Thread bereits angekündigt, werde ich in diesem Thread eine
"Bauanleitung" bereitstellen, welche es auch UPC Nutzern ermöglichen wird Programme
aufzunehmen und als "Persönliche" Sicherung zu archivieren. Warum ? Die TV-Lobby
muss endlich einmal begreifen, das es für alles Grenzen gibt. Eine TV Show maximal
90 Minuten nach Ausstrahlung ansehen und dann ist Ende ? Was zum Henker soll das ?
Wollen die damit nur Ihre 100fachen Wiederholungen begründen, oder wie ??

Egal, fangen wir also mit dem nächsten Post an, da werde ich euch einmal mitteilen
was für Grundvoraussetzungen das System in etwa benötigt.

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
GRUNDVORRAUSSETZUNGEN:



HARDWARE:


1. Einen Standrechner mit 4GB Ram und einer CPU mit mind. 3.2Ghz
z.b. Intel(R) Core(TM) i5-4570 / Quad Core CPU ohne HT.
Achtung:Die Soundkarte sollte einen SP-DIF Eingang besitzen,
warum dazu komme ich später noch.
2. ViewHD HDMI-Splitter / Zum Aufteilen des HDMI-Signals auf 2
unabhängige Geräte (Dieses modell kann KEIN CEC <-- Wichtig)
EAN Code: 609722357746 | VHD-1x2MN3D mit US Adapter.
3. HDMI Videoschnittkarte, ich verwende dafür z.b. die
AVerMedia AVerTV Capture HD; Eingänge: Multiinput, HDMI, DVB-T
4. Externes Preichermedium (muss nicht sein aber hilft ungemein)
um die Aufgenommenen Sendungen nach Bearbeitung zu sichern.
5. Ein Raspberry PI2 Model B - Ja genau, dieses kleine Dingsbums.
Installiert wird auf dieses Teil dann OSMC, damit haben wir
unsere Aufnahmen später auch schön sortiert und Abrufbar.


SOFTWARE:

1. Der Standrechner sollte ein Windowssystem beinhalten, je weniger
Ressourcenfressend die Windowsaversion ist um so besser.
2. OSMC für den Raspberry PI2
3. VirtualDUB - Zum aufnehmen und zum Schneiden
4. Handbrake - Für die konvertierung zu *.mkv
5. TV-Browser - Das wird unser TV-Program mit Programmierfunktion.
6. Serviio - Dies Teil dient einfach nur dazu unseren Stream auch in
unserem Netzwerk zur Verfügung zu stellen
7. VLC Media Player - Der streamt uns das Live-Bild
Bearbeitet von Destavator am 08.03.2015, 15:36

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Der AUFBAU:


Der Standrechner:

Als erstes richten wir unser Hauptsystem mit der notwendigen
Software ein. Sprich ein Glattes reines Win7-System ohne viel
Firlefanz. Dem fügen wir nun folgende Software hinzu, die
Reihenfolge bleibt dabei jedem selbst überlassen, da dies nicht
wirklich eine Rolle spielt.

1. Serviio Media Server
2. Tv-Browser
3. VirtualDUB
4. VLC Media Player
5. plink


Nun schalten wir das System einmal ab, und installieren die
TV-Karte. Ohne der funkt sonst mal garnix (war klar ^^).


6. Die Treibersoftware der TV-Karte (AVerMedia)



Nachdem wir das getan haben, ist der Großteil für Hauptsystem
schon einmal getan und jetzt geht es eigentlich nurnoch um
das zusammenfügen der Restlichen komponenten. Dazu richten wir
im nächsten Post einmal unseren Raspberry ein.
Bearbeitet von Destavator am 08.03.2015, 17:20

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Der AUFBAU:


Der RaspBerry PI2 Model B:

Hier muss man eigentlich nicht viel einrichten, das Teil ist
ein Rundumtalent im Taschenformat. Also zusammenbauen, sprich
Die Platine in ein Raspberry PI Gehäuse, eine MicroSD Karte mit
OSMC Image eingeschoben und das Teil per HDMI an einen TV oder
einen HDMI fähigen Monitor gestöpselt. Netzteil dran und das
Teil fährt hoch. Nach der Erstinstallation ist das Teil sofort
als Media-Center funktionsfähig und kann auch zum Betrachten
der Media-Bibliothek verwendet werden. Der eigentliche Grund
für den Raspberry ist es ledeglich unsere Box zum Aufnahmetermin
auf den richtigen Kanal zu schalten. Dazu kommen wir jedoch noch
ein wenig später.

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Der AUFBAU:


Die IR-Erweiterung für den RaspBerry PI2 Model B:

Dafür verlinke ich auf ein anderes Forum, da die Baupläne für dieses
Teil nicht von mir stammen, und ich mich nicht mit fremden Federn
schmücken möchte. Ich hoffe dies geht für die Admins des Boards in
Ordnung.


http://www.beisammen.de/board/index...threadID=114082

Sollte es jedoch später, bei der Funktion mit der UPC-Box Probleme geben,
sprich beim erkennen der IR Codes, werde ich gerne auf Anfagen nach fertigstellen
des Threads antworten.
Bearbeitet von Destavator am 08.03.2015, 16:22

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Die Software-Programmierung:


Einrichtung von 'TV-Browser' als Aufnahmesteuerung


Nun wird es ein wenig Programmtechnisch. Wir vergewaltigen das Programm
TV-Browser zu unserer Aufnahmesteuerung. Dazu sind einige Code-Snippets
nötig, damit das Programm die zur Aufnahme notwendigen Schritte übernimmt.


Erste Schritte:

Als erstes suchen wir uns im TV-Browser einmal alle TV-Programme die per
UPC Übertragen werden und fügen sie unserer TV-Tabelle hinzu. Es reicht
bei SD und HD Programmen, diesen nur einmal für den HD-Sender hinzu zu
fügen, wer nimmt schon SD auf wenn er das ganze in HD haben kann ??


Nachdem wir das gemacht haben, wird es etwas aufwendiger. Wir müssen dem
Taskplaner extern irgendwie weis machen was er zu tun hat, dazu erstellen
wir einmal eine .cmd (ich nenne sie in meinem Fall schvlc1.cmd). Diese
wird später über den TV-Browser mittels Übergabedaten verändert und schreibt
direkt einen geplanten Task in den Taskmanager.

In diesem Snippet wird einmal überprüft ob wir dem TV-Browser nun sagen ob
er eine Sendung aufnehmen soll, oder ob er die Sendung aus der Aufnahmeplanung
löschen soll. Wir könnten dies zwar elegant sofort nach ausführung der Planung
machen, jedoch würden alle Geplanten Aufnahmen dann für ewig im TV-Browser
erhalten bleiben, deswegen ziehe ich es vor die Aufnahmen nach abschluss mittels
TV-Browser zu löschen.

Snippet 1 - Kontrollieren ob Aufnahme oder Löschung

Code:
@echo off
if %1==stop ( 			## Hier prüfen wir den Stop Befehl aus dem TV-Browser
schtasks /delete /tn %2 /f	## Wenn ja dann löschen wir den geplanten Task
del runrecord%2.cmd 		## und das Aufnahmescript dafür
exit
)

Damit wäre der erste Schritt, nämlich Aufnahme programmieren oder Löschen erledigt.
Bearbeitet von Destavator am 08.03.2015, 17:36

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Dieser teil gehört immer noch in die schvlc1.cmd, sobald die Datei vollständig
ist werde ich das mitteilen. Ich teile das ganze nur auf um die Übersicht für
jeden zu erhalten bzw. das eine spätere Fehlersuche nicht zu aufwendig wird.

Snippet 2 - Erstellung des Tasks für die Aufnahme:

Dieser teil beinhaltet ein DoS-Script welches mit Übergabeparametern den Task in
einem XML für den taskplaner vorbereitet damit er später als Task einfach per
Befehl importiert und auf unsere Anforderungen geändert werden kann.

Code:
echo ^<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"^> >> schtempl.xml
echo  ^<RegistrationInfo^> >> schtempl.xml
echo    ^<Date^>2014-12-10T13:41:41.3657492^</Date^> >> schtempl.xml
echo    ^<Author^>Administrator^</Author^> >> schtempl.xml
echo    ^<Description^>Aufnahme einer TV-Sendung mittels TV-Guide und virtualDUB^</Description^> >> schtempl.xml
echo  ^</RegistrationInfo^> >> schtempl.xml
echo  ^<Triggers^> >> schtempl.xml
echo    ^<TimeTrigger^> >> schtempl.xml
echo      ^<StartBoundary^>%4T%5^</StartBoundary^> >> schtempl.xml
echo      ^<Enabled^>true^</Enabled^> >> schtempl.xml
echo    ^</TimeTrigger^> >> schtempl.xml
echo  ^</Triggers^> >> schtempl.xml
echo  ^<Principals^> >> schtempl.xml
echo    ^<Principal id="Author"^> >> schtempl.xml
echo      ^<UserId^>%2^</UserId^> >> schtempl.xml
echo      ^<LogonType^>InteractiveToken^</LogonType^> >> schtempl.xml
echo      ^<RunLevel^>LeastPrivilege^</RunLevel^> >> schtempl.xml
echo    ^</Principal^> >> schtempl.xml
echo  ^</Principals^> >> schtempl.xml
echo  ^<Settings^> >> schtempl.xml
echo    ^<MultipleInstancesPolicy^>IgnoreNew^</MultipleInstancesPolicy^> >> schtempl.xml
echo    ^<DisallowStartIfOnBatteries^>false^</DisallowStartIfOnBatteries^> >> schtempl.xml
echo    ^<StopIfGoingOnBatteries^>true^</StopIfGoingOnBatteries^> >> schtempl.xml
echo    ^<AllowHardTerminate^>true^</AllowHardTerminate^> >> schtempl.xml
echo    ^<StartWhenAvailable^>false^</StartWhenAvailable^> >> schtempl.xml
echo    ^<RunOnlyIfNetworkAvailable^>false^</RunOnlyIfNetworkAvailable^> >> schtempl.xml
echo    ^<IdleSettings^> >> schtempl.xml
echo      ^<StopOnIdleEnd^>true^</StopOnIdleEnd^> >> schtempl.xml
echo      ^<RestartOnIdle^>false^</RestartOnIdle^> >> schtempl.xml
echo    ^</IdleSettings^> >> schtempl.xml
echo    ^<AllowStartOnDemand^>true^</AllowStartOnDemand^> >> schtempl.xml
echo    ^<Enabled^>true^</Enabled^> >> schtempl.xml
echo    ^<Hidden^>false^</Hidden^> >> schtempl.xml
echo    ^<RunOnlyIfIdle^>false^</RunOnlyIfIdle^> >> schtempl.xml
echo    ^<WakeToRun^>true^</WakeToRun^> >> schtempl.xml
echo    ^<ExecutionTimeLimit^>P3D^</ExecutionTimeLimit^> >> schtempl.xml
echo    ^<Priority^>7^</Priority^> >> schtempl.xml
echo  ^</Settings^> >> schtempl.xml
echo  ^<Actions Context="Author"^> >> schtempl.xml
echo    ^<Exec^> >> schtempl.xml
echo      ^<Command^>d:\tools\runrecord%1.cmd^</Command^> >> schtempl.xml
echo      ^<Arguments^> ^</Arguments^> >> schtempl.xml
echo    ^</Exec^> >> schtempl.xml
echo  ^</Actions^> >> schtempl.xml
echo ^</Task^> >> schtempl.xml

echo xml File successfully created 	## Hier bekommen wir später im TV-Browser die Positive Rückmeldung
					## sollte bei der erstellung der Datei alles gut gegangen sein.

Somit wäre das XML-Template für den Taskplaner fertiggestellt und wir können ihn auf unsere Bedürfnisse
abändern.

Snippet 3 - Erstellung des tasks:

Code:
echo creating Scheduled Task	## Rückmeldung des Arbeitsschrittes im TV-Browser

schtasks /create /tn %1 /xml D:\tools\schtempl.xml /ru %2 /rp %3	## Hier wird nun der Task angelegt
								## /ru %2 = User /rp %3 = PW
								## /tn %1 = Name für den Task (Zeit+Program)


del D:\tools\schtempl.xml	## Nachdem der Task erstellt wurde, wird die Vorlage wieder gelöscht

Damit wäre die Eintragung im Taskmanager erledigt, und der Computer weis, wann er unser Batchscript für
die Aufnahme starten soll.
Bearbeitet von Destavator am 08.03.2015, 17:10

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Snippet 4 - Erstellung des Batch Scriptes für die Aufnahme:

Hier erstellen wir nun eine kleine Batch Datei, die der taskmanager später
ausführt um den Kanal zu ändern und das Aufnahmeprogramm (VirtualDUB) dazu zu
bewegen die Aufnahme zu starten, bzw. zu beenden wenn die Laufzeit der Aufnahme
abgelaufen ist.

Code:
echo creating BatchScript for Recording		## Rückmeldung an TV-Browser für Arbeitsschritt

set str=%8					## Hier zerlegen wir den Kanal an der UPC Box auf die zu sendenden Einzeltasten
set KEY1=%str:~0,1%
set KEY2=%str:~1,1%
set KEY3=%str:~2,1%

echo plink -l osmc -pw osmc pi@192.168.0.108 irsend SEND_ONCE UPC KEY_%KEY1% KEY_%KEY2% KEY_%KEY3% >> runrecord%1.cmd		## Und senden ihn über unseren Raspberry
																## an de UPC Box

## Hier starten wir VirtualDUB undstarten die Aufnahme ("AVerMedia BDA Analog Capture Secondary (DirectShow)" ist die TV-Karte)
echo D:\VirtualDUB\vdub64.exe /capture /capaudiorec on /capdevice "AVerMedia BDA Analog Capture Secondary (DirectShow)" /capfile D:\Aufnahmen\%6 /capstart %7 >> runrecord%1.cmd

## und Rückmeldung das das Script erstellt wurde
echo Recordscript successfully created


Hiermit ist unsere schvlc1.cmd fertig und der Haupteil der Programmierung erledigt.
Nun können wir uns an die Fertigstellung des TV-Browsers machen um ihn für unsere
Zwecke einsetzen zu können.

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Die Software-Programmierung:


Einrichtung von 'TV-Browser' als Aufnahmesteuerung der Feinschliff

Nun richten wir unser Aufnahmegerät im TV-Browser ein, dazu gehen wir in folgendes Menü:

Extras --> Aufnahmesteuerung / Geräte

Hier wählen wir Gerät hinzufügen.

Als Name wählen wir (wobei was wir wählen ist schlichtweg egal) VideoAufnahme mittels VDub
als Treiber bleibt ********-Treiber eingestellt und bestätigen mit OK.

Nun erscheint das Fenster mit den Konfigurations-Einstellungen für unser "Gerät".


Unter dem Reiter Applikation, was starten --> Den Pfad der schvlc1.cmd eintragen

Unter dem Reiter Parameter
Parameter für die Aufnahme kommt nun folgendes hinein:

Code:
{start_year}{leadingZero(start_month, "2")}{leadingZero(start_day, "2")}{leadingZero(start_hour, "2")}{leadingZero(start_minute, "2")}{cleanLess(channel_Name)} {device_username} {device_password} {start_year}-{leadingZero(start_month, "2")}-{leadingZero(start_day, "2")} {leadingZero(start_hour, "2")}:{leadingZero(start_minute, "2")}:00 {cleanLess(title)}.avi {length_sec}s {cleanLess(channel_name_external)}

Parameter für Löschen

Code:
stop {start_year}{leadingZero(start_month, "2")}{leadingZero(start_day, "2")}{leadingZero(start_hour, "2")}{leadingZero(start_minute, "2")}{cleanLess(channel_Name)}

Unter dem Reiter Sender
Hier erscheinen nun alle Sender, die wir Anfangs hinzugefügt haben.
Hier kommt nun bei Externer Name bei jedem die Senderkennung der UPC-Box dran.
Also z.b. History HD - 250; ORF 1 HD - 201; usw.

Unter dem Reiter Einstellungen

Zeit-Einstellungen früher stoppen und starten, nach Euren Wünschen anpassen.
Benutzer Die Anmeldedaten an eurem Rechner

Nun das ganze mit OK abschliessen und TV-Browser ist fertig eingerichtet.
Bearbeitet von Destavator am 09.03.2015, 14:15

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Raspberry PI - Einrichten der UPC Fernbedienung

Das einrichten der UPC-Media BOX Fernbedienung, ist nicht ganz so einfach, weil
die Fernbedienung aufgrund des Code-Sets einige Toggle Bits mitführt die IR-Record
nicht ganz versteht, und auch wenn IRRecord meint es sei alles ok, danach KEINE
Einzige taste funktioniert. Aus diesem Grund habe ich die RAW-Codes der FB abgefragt
und nur die wichtigsten für die Steuerung herausgepickt. Sprich 0-9, denn mehr
brauche ich zum Umschalten der Sender nicht.
Der RAW Code für die FB sieht dann so aus:


Code:
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Mon Feb  2 00:41:27 2015
#
# contributed by 
#
# brand:                       /root/UPCRemote.conf
# model no. of remote control: 
# devices being controlled by this remote:
#

begin remote

  name  UPC
  flags RAW_CODES
  eps            30
  aeps          100

  gap          89497

      begin raw_codes

          name KEY_1
              443     230     213     229     212     565
              205     229     213     230     212     730
              206     230     212     229     214     228
              214     559     212     564     204     399
              206     566     209     232     204     229
              214     231     211     418     192

          name KEY_2
              452     263     175     229     213     561
              210     227     214     229     214     726
              210     227     215     229     209     229
              214     230     212     565     205     399
              210     572     198     228     214     229
              209     229     214     565     206

          name KEY_3
              446     231     213     227     214     566
              205     227     214     230     213     731
              205     229     213     229     214     229
              209     564     210     561     210     398
              205     564     207     229     213     228
              214     230     212     727     216

          name KEY_4
              452     264     174     228     214     561
              209     231     213     228     213     726
              210     230     212     229     210     228
              214     229     213     565     206     397
              211     560     209     229     209     229
              214     398     212     227     214

          name KEY_5
              450     231     213     228     210     564
              211     228     208     228     217     729
              209     228     210     229     213     229
              214     576     195     562     206     399
              209     565     205     228     216     226
              214     399     205     398     209

          name KEY_6
              450     230     213     229     210     563
              205     230     213     229     213     732
              205     228     224     219     213     229
              214     228     214     561     209     398
              206     564     206     227     215     229
              214     399     209     560     209

          name KEY_7
              451     230     208     229     213     564
              206     229     213     229     213     732
              204     229     214     228     214     231
              213     562     206     564     206     398
              209     559     210     229     214     229
              213     398     206     731     204

          name KEY_8
              451     230     208     229     214     565
              205     228     214     228     214     733
              203     229     213     230     211     230
              214     228     214     561     209     399
              205     565     205     229     213     230
              214     563     206     229     212

          name KEY_9
              452     232     210     227     214     560
              212     227     213     229     214     725
              210     229     213     229     209     229
              232     546     206     564     209     399
              206     563     207     229     214     227
              214     564     205     398     211

          name KEY_0
              452     229     215     228     208     566
              208     229     210     260     183     728
              211     228     210     228     215     235
              206     229     214     564     206     398
              209     559     212     228     214     229
              209     229     213     229     213

      end raw_codes

end remote

Diese wird auf dem Raspberry als /etc/lirc/lircd.conf angelegt, damit Lirc damit was anfangen kann.
Und damit wäre auch der Raspberry fertig konfiguriert, und es geht ums zusammenstecken aller Einzelteile.

AdRy

Auferstanden
Avatar
Registered: Oct 2002
Location: Wien
Posts: 5239
Schöner post. Aufnahme sollte mit VLC genauso gehen und wenn der rechner stark genug ist gleich realtime encoden (x264 realtime oder fastest preset reicht bei TV qualität).

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Der Zusammenbau und der erste Test

Nachdem nun Softwaretechnisch alles erledigt ist, gehts um das Zusammenfügen aller
Einzelteile.

Das HDMI Kabel wird vom UPC-Receiver an den Eingang des Splitters geführt

Vom Splitter gehen wir mit einem Kabel in unsere Aufnahmekarte, mit dem anderen an unseren TV.

Den Raspberry binden wir in unser Netzwerk ein und stellen ihn so, das seine IR Diode freie Sicht
auf unsere Empfangsdiode im UPC-Receiver bekommt. Möglicherweise muss man ein wenig probieren,
bis man den richtigen Standort gefunden hat.

Nun um das Programm plink richtig zugreife zu können, erstellen wir einfach eine Testaufnahme
und starten den Task händisch im Taskplaner. In einem DoS Fenster wird nun gefragt ob der SSH
Key gespeichert werden soll, dies beantworten wir mit ja, und unterbrechen die Aufnahme und löschen
sie wieder aus dem TV-Browser.




Damit ist die Einrichtung vollständig abgeschlossen und sollte alles richtig gemacht worden sein
habt Ihr nun Eure eigene Recording box.

Destavator

Bloody Newbie
Registered: Mar 2015
Location: Vienna
Posts: 29
Zitat von AdRy
Schöner post. Aufnahme sollte mit VLC genauso gehen und wenn der rechner stark genug ist gleich realtime encoden (x264 realtime oder fastest preset reicht bei TV qualität).


Funktioniert, ja. Jedoch verwende ich für die Aufnahme einen Lossless Codec und encode danach. Die Qualität ist Full-HD ohne Einschränkungen und kann sich auf jedem
HD-Fernseher sehen lassen. Ausserdem schafft es VLC nicht das Aufnahmegerät richtig einzustellen und man müsste bei jeder Aufnahme die "Geräte-Optionen" händisch einstellen,
sobald die Aufnahme gestartet wird. Da fällt das Programmierte aufnehmen flach, und genau das tut meine Version perfekt.
Ich verwende VLC um das Live-Bild ins netzwerk zu streamen, so habe ich das laufende Programm in HD-Qualität an jedem TV in der Wohnung. Dafür verwende ich Serviio, dazu wollte ich noch kommen ^^
Bearbeitet von Destavator am 08.03.2015, 18:18

davebastard

Vinyl-Sammler
Avatar
Registered: Jun 2002
Location: wean
Posts: 12278
mir wärs zu aufwendig. aber schön dass es noch leute gibt die sich das antun.
generell geht der trend glaub ich weg von aufnehmen hin zu netflix und co.

lalaker

TBS forever
Avatar
Registered: Apr 2003
Location: Bgld
Posts: 14699
Falls der wer bauen will, und nach einem RaspBerry 2 sucht, ab 21 Uhr gibt es bei

http://www.zackzack.de/html/index.html

ein Komplett-Set wohl günstig zu haben.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz