07.10.2004
Hallo,
Nach einigen Tests die Version 0.1.4PRE2. Ich habe ein paar Bugs beim Erzeugen von lokalen Archiven gefixt.
Cheers
Peter
05.10.2004
Hallo,
Nach langer Funkstille endlich ein neues Release. Wegen Maengel in der Dokumentation nenne ich es
0.1.4PRE1 statt 0.1.4, aber ich empfehle DRINGEND, diese Version einzusetzen. Am besten sollte man vorher die
Konfigurationdateien loeschen (/etc/marks2pts.conf und / oder ~/.marks2pts.conf).
Zu finden im
Download Bereich.
Cheers
Peter
Zum Seitenanfang
Vorgehensweise:
Das eigentliche Programm ist ein Skript namens marks2pts, das man in seinen Pfad kopieren sollte. Zusätzlich
sollte man einen Symlink darauf anlegen.
ln -s marks2pts pts2marks
Beim ersten Start erfragt das Skript einige Pfade, die müssen unbedingt korrekt
angegeben werden
Ausserdem muss man das Perl-Modul LWP::Simple installieren.
Schliesslich sollte man folgende Option zu seinem VDR aufruf hinzufügen:
-r marks2pts
Also bei mir (c't Distri) zum Beispiel so (Änderung in /usr/sbin/runvdr):
VDRCMD="$VDRPRG -w 60 -L /usr/share/vdr/plugins -P* -t /dev/tty7 -r marks2pts $*"
Wie benutzt man das Skript:
Durch die -r Option wird zu Beginn einer Aufnahme vom VDR das Skript aufgerufen,
mit den Parametern "before" und "/Pfad/Zur/Aufnahme".
Das Skript extrahiert dann aus der timers.conf die channel-id,
die Anfangs- und Endzeit und speichert das ganze in der Datei sharemarks.conf im
Aufnahmeverzeichnis ab.
Diese wird zum hoch- und runterladen der Schnittmarken benötigt.
Nachdem man Schnittmarken gesetzt hat, kann man diese konvertieren und auf den Server laden,
indem man
marks2pts /Pfad/zur/Aufnahme/ -upload
eingibt. Um Schnittmarken herunterzuladen, ruft man
pts2marks /Pfad/zur/Aufnahme
auf. Wenn marks auf dem Server vorhanden sind, dann werden diese automatisch heruntergeladen und
in eine marks.vdr übersetzt. Sollte schon eine Datei ptsmarks.vdr im Aufnahmeverzeichnis liegen,
dann wird diese verwendet, und keine Verbindung zum Server aufgebaut. Also muss man die Datei
von Hand löschen, wenn man frische Server-Daten will. Nach dem Lauf von pts2marks sollte
man natürlich kontrollieren, ob die gefundenen marks i.O. sind.
Wenn man keine Lust hat, die automatische Variante zu nutzen, dann erfragt das Skript den Sender
(oder genauer, es zeigt die Channels.conf an und
erfragt die Nummer des Channels). Aus der Eingabe des Users (channel-id), dem Verzeichnisnamen
(Datum und Zeit) und der Modifikationszeit der index.vdr wird dann eine sharemarks.conf
erzeugt.
Was nicht funktioniert:
Das Skript erzeugt NUR marks aus ptsmarks, wenn es einen 100% korrekten
Zeitstempel gibt. Es gibt noch keinen "fuzzy-mode".
Es gibt Probleme mit dem AutoPID-Patch.
Zum Seitenanfang
Hier die aktuelle Version des Skripts:
sharemarks-latest
Zum Seitenanfang
Die Idee:
Nehmen wir mal an, zwei User haben identische DVB-Karten, VDR-Versionen und Signal-Quellen (also
denselben Sat angepeilt).
Jetzt nehmen beide die gleiche Sendung auf. Was erwartet Ihr, sind die Daten auf den
Platten zu 100 % identisch? Ich würde sagen ja, schliesslich handelt es sich um eine
digitale Datenübertragung, die identisch auf beiden Systemen prozessiert wird.
Nun schneidet ein User die Werbung heraus, und er möchte seine Schnittmarken dem anderen User
mit dem identischen Setup zur Verfügung stellen. Dann taucht folgendes Problem auf:
Leider sind die Rechneruhren nicht gleich gestellt, und deshalb unterscheidet sich auch der
Aufnahmestart (zusätzlich hat der eine User 1 min Vorlauf, der andere 5 min). Die Schnittmarken
orientieren sich aber an den Startzeiten der Aufnahme, die sind im Format
HH:MIN:SEK.Frames
Also kann man die marks.vdr selbst nicht tauschen.
Die marks zeigen natürlich auf ganz genau ein Bild, und das kann man
eindeutig indentifizieren: Es hat nämlich einen Zeitstempel. Ohne in die Details
gehen zu wollen, dieser Zeitstempel sollte bei jedem User identisch vorhanden sein.
Wenn man also einer mark einen Zeitstempel (PTS) zuordnen kann, dann bezieht sich
diese neue "pts-mark" nicht mehr auf den Aufnahme-Start, sondern ist sozusagen in
der Aufnahme eingebaut.
Beim Konvertieren zurück in eine mark im VDR Format muss man natürlich wieder den
Aufnahmeanfang als Referenz nehmen, sonst kann der VDR nichts damit anfangen.
Genau die Konvertierung von einer VDR-Mark in einen PTS-Zeitstempel und zurück soll
dieses Projekt implementieren. Der Austausch der ptsmarks kann dann bequem via Webserver von
xpix geschehen.
Technische Details (ohne Gewähr!)
Bei den Encodern der Fernsehsender, die einen Film in einen MPEG2 Datenstrom codieren,
läuft eine Uhr. Die Uhr zeigt die Zeit aber
nicht in Sekunden oder Minuten an, sondern in 1/90000 Sekunden. Die springt auch nicht jeden
Tag um Mitternacht um, sondern wenn 33 Bits voll sind (33 Bits, ich könnte ja immer noch in
den Teppich beissen .....). Mit anderen Worten läuft die Uhr von
0 - 8589934592, oder umgerechnet von
0 - 95443.7176888889 Sekunden oder noch besser von
0 - 1 Tag, 2 h, 30 min und 43.7176888888889 Sekunden.
Diese Uhr wird benutzt, um den ausgestrahlten Audio- und Video-Schnippseln einen Zeitstempel
aufzudrücken, der sich auf diese Uhr bezieht; das ist der berühmte PTS, der von meinen Skript
extrahiert wird. Das machen die Sender, damit der Player (also die DVB-Karte) die
Unterschiede zwischen Audio und Video berechnen, und die Spuren
synchronisieren können. Dabei spielt es ja keine Rolle, wie "spät" es ist. Man braucht einfach
eine gemeinsame Skala mit ausreichend hoher Auflösung. So kann man einfach trotz evt
fehlendem Material (Signalstörungen) die Sync sicherstellen.
Mein Skript beruht auf der Annahme: Wenn alle das gleiche digitale Signal empfangen, dann beziehen sich die
Audio und Video Daten auch auf dieselbe Uhr.
Deshalb ist der PTS in der Aufnahme ein "portables" Schnittmarkenformat.
Wenn aber der Sender 2 digitale Senderstationen betreibt, in denen jeweils eine unabhängige
Uhr läuft, und 2 verschiedene Signale rauschiebt (jede Sendestation was anderes), dann
unterscheiden sich die Zeitstempel. Das wollen wir testen und berücksichtigen.
Zum Seitenanfang