Index

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(eigenen Blödsinn korrigiert ;-))
 
(15 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Die Indexdatei index.vdr wird automatisch vom [[VDR]] für jede Aufzeichnung erstellt. Über diese Indexdatei spult der VDR vor- und rückwärts oder führt Schnitte aus.
+
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.
Sollte die Indexdatei neu erstellt werden, hilft das Tool [[genindex]].
+
  
Die Datei index.vdr ist eine Lookup Tabelle der Speicherpositionen der Frames in den VDR-Stream Dateien (00x.vdr). Die Datei selber ist ein flaches Array vieler Indexeinträge mit folgenden 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 tIndex
+
  struct tIndexTs {
  { int offset;      //(signed 32bit/4byte)  Speicherposition des Frame, relativ zum Dateianfang der jeweiligen Datei
+
  uint64_t offset:40; // to 1TB per file (not using off_t here - must definitely be exactly 64 bit!)
     uchar type;    //(8bit/1byte)          Type des Frames (I, P, B) nur an I-Frames kann geschnitten oder können beim Spulen ansprungen werden.
+
  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.
 
     uchar number;  //(8bit/1byte)          Nummer der Datei (00x.vdr) in der das Frame zu finden ist.
 
     short reserved; //(16bit/2byte)  
 
     short reserved; //(16bit/2byte)  
 
  };
 
  };
  
Bedingt durch die vorzeichenbehaftete Definition des der Variablen offset, ergibt sich ein Limit der VDR-Stream Dateien (00x.vdr) von max. 2^31 also 2147483648 Bytes (2GB)
+
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 / Framerate = Länge der Aufnahme in Sekunden (die Framerate steht in der Info Datei, s. http://www.vdr-wiki.de/wiki/index.php/Info)
 +
* Größe der index.vdr in Bytes / 12000 = Länge der Aufnahme in Minuten (falls die Framerate 25 ist)
  
'''Beispiel einer zusätzlichen Anwendung''' :
+
==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.
  
* Dateigröße der index.vdr / 8 Byte = Anzahl der Frames der Aufnahme
+
Eine korrigierte index.vdr wird mit dem [[Audioindexer]]-patch erstellt, so dass auch Radioaufnahmen korrekt funktionieren.
* 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
+
==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/
 +
 
 +
[[Kategorie:Aufnahmedateien]]

Aktuelle Version vom 27. September 2018, 08:28 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 / Framerate = Länge der Aufnahme in Sekunden (die Framerate steht in der Info Datei, s. http://www.vdr-wiki.de/wiki/index.php/Info)
  • Größe der index.vdr in Bytes / 12000 = Länge der Aufnahme in Minuten (falls die Framerate 25 ist)

[Bearbeiten] 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.

[Bearbeiten] 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/