Index

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K
Zeile 1: Zeile 1:
 
Die Datei '''index''' wird automatisch vom [[VDR]] für jede Aufzeichnung erstellt. Über diese Indexdatei kann der VDR vor- und rückwärts springen oder Schnitte ausführen. Älte Aufnahmen im PES-Format verwenden den Dateinamen '''index.vdr''' mit einem abweichendem Dateiformat.
 
Die Datei '''index''' wird automatisch vom [[VDR]] für jede Aufzeichnung erstellt. Über diese Indexdatei kann der VDR vor- und rückwärts springen oder Schnitte ausführen. Älte Aufnahmen im PES-Format verwenden den Dateinamen '''index.vdr''' mit einem abweichendem Dateiformat.
  
Die Datei '''index''' ist eine Lookup-Tabelle der Speicherpositionen der TS-Frames in den VDR-Stream Dateien (0000x.ts). Die Datei selber ist ein flaches Array vieler Indexeinträge mit folgender Struktur des jeweiligen Indexeintrages. Jeder Indexeintrag hat die Gesamtgröße von acht Bytes.
+
Die Datei '''index''' ist eine Lookup-Tabelle der Speicherpositionen der [[TS]]-Frames in den VDR-Stream Dateien (0000x.ts). Die Datei selber ist ein flaches Array vieler Indexeinträge mit folgender Struktur des jeweiligen Indexeintrages. Jeder Indexeintrag hat die Gesamtgröße von acht Bytes.
  
 
  struct tIndexTs {
 
  struct tIndexTs {
Zeile 11: Zeile 11:
  
  
Die veraltete Datei '''index.vdr''' ist eine Lookup-Tabelle der Speicherpositionen der PES-Frames in den VDR-Stream Dateien (00x.vdr). Die Datei selber ist ein flaches Array vieler Indexeinträge mit folgender Struktur des jeweiligen Indexeintrages. Jeder Indexeintrag hat die Gesamtgröße von acht Bytes.
+
Die veraltete Datei '''index.vdr''' ist eine Lookup-Tabelle der Speicherpositionen der [[PES]]-Frames in den VDR-Stream Dateien (00x.vdr). Die Datei selber ist ein flaches Array vieler Indexeinträge mit folgender Struktur des jeweiligen Indexeintrages. Jeder Indexeintrag hat die Gesamtgröße von acht Bytes.
  
 
  struct tIndexPes  
 
  struct tIndexPes  
Zeile 35: Zeile 35:
  
 
==Neu Erstellen der Index-Datei==
 
==Neu Erstellen der Index-Datei==
Soll die Indexdatei des TS-Formats neu erstellt werden, hilft der [[VDR]] selbstständig beim erstmaligen Abspielen der Aufnahme.
+
Soll die Indexdatei des [[TS]]-Formats neu erstellt werden, hilft der [[VDR]] selbstständig beim erstmaligen Abspielen der Aufnahme.
Bei Aufnahmen im PES Format hilft [[genindex]]. Aufnahmen im TS-Format können auch manuell indiziert werden.
+
Bei Aufnahmen im [[PES]]-Format hilft [[genindex]]. Aufnahmen im [[TS]]-Format können auch manuell indiziert werden.
  
 
  vdr --genindex=/path/to/recording/2013-11-06.04.18.50-0.rec/
 
  vdr --genindex=/path/to/recording/2013-11-06.04.18.50-0.rec/
  
 
[[Kategorie:Aufnahmedateien]]
 
[[Kategorie:Aufnahmedateien]]

Version vom 13. November 2013, 17:03 Uhr

Die Datei index wird automatisch vom VDR für jede Aufzeichnung erstellt. Über diese Indexdatei kann der VDR vor- und rückwärts springen oder Schnitte ausführen. Älte Aufnahmen im PES-Format verwenden den Dateinamen index.vdr mit einem abweichendem Dateiformat.

Die Datei index ist eine Lookup-Tabelle der Speicherpositionen der TS-Frames in den VDR-Stream Dateien (0000x.ts). Die Datei selber ist ein flaches Array vieler Indexeinträge mit folgender Struktur des jeweiligen Indexeintrages. Jeder Indexeintrag hat die Gesamtgröße von acht Bytes.

struct tIndexTs {
  uint64_t offset:40; // to 1TB per file (not using off_t here - must definitely be exactly 64 bit!)
  int reserved:7;     // reserved for future use
  int independent:1;  // marks frames that can be displayed by themselves (for trick modes)
  uint16_t number:16; // up to 64K files per recording
  };


Die veraltete Datei index.vdr ist eine Lookup-Tabelle der Speicherpositionen der PES-Frames in den VDR-Stream Dateien (00x.vdr). Die Datei selber ist ein flaches Array vieler Indexeinträge mit folgender Struktur des jeweiligen Indexeintrages. Jeder Indexeintrag hat die Gesamtgröße von acht Bytes.

struct tIndexPes 
{ int offset;      //(signed 32bit/4byte)   Speicherposition des Frame, relativ zum Dateianfang der jeweiligen Datei, verweist auf PES header
   uchar type;     //(8bit/1byte)           Type des Frames (no frame=0, I=1, P=2, B=3) nur an I-Frames kann geschnitten oder können beim Spulen ansprungen werden.
   uchar number;   //(8bit/1byte)           Nummer der Datei (00x.vdr) in der das Frame zu finden ist.
   short reserved; //(16bit/2byte) 
};

Bedingt durch die vorzeichenbehaftete Definition der Variablen offset ergibt sich eine Größenbegrenzung der PES-Stream-Dateien (00x.vdr) von max. 2^31, also 2.147.483.648 Bytes (2GB).

Beispiel einer zusätzlichen Anwendung:

  • Dateigröße der index.vdr / 8 Byte = Anzahl der Frames der Aufnahme
  • Anzahl der Frames der Aufnahme / 25 = Länge der Aufnahme in Sekunden
  • Größe der index.vdr in Bytes / 12000 = Länge der Aufnahme in Minuten

Probleme

Diese Größenberechnung funktioniert allerdings nicht für Radioaufnahmen. Denn nur in Videoaufnahmen finden sich die I-Frames, für die die obigen Berechnungen gelten. Deshalb ist die angegebenen Spieldauer und damit auch die Spulgeschwindigkeiten bei vdr falsch.

Eine korrigierte index.vdr wird mit dem Audioindexer-patch erstellt, so dass auch Radioaufnahmen korrekt funktionieren.

Neu Erstellen der Index-Datei

Soll die Indexdatei des TS-Formats neu erstellt werden, hilft der VDR selbstständig beim erstmaligen Abspielen der Aufnahme. Bei Aufnahmen im PES-Format hilft genindex. Aufnahmen im TS-Format können auch manuell indiziert werden.

vdr --genindex=/path/to/recording/2013-11-06.04.18.50-0.rec/