Index

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Probleme)
 
(9 dazwischenliegende Versionen von 5 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.
Soll 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 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 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 der Variablen ''offset'' ergibt sich eine Größenbegrenzung der VDR-Stream-Dateien (00x.vdr) von max. 2^31, also 2.147.483.648 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''':
 
'''Beispiel einer zusätzlichen Anwendung''':
  
 
* Dateigröße der index.vdr / 8 Byte = Anzahl der Frames der Aufnahme
 
* Dateigröße der index.vdr / 8 Byte = Anzahl der Frames der Aufnahme
* Anzahl der Frames der Aufnahme / 25 = Länge der Aufnahme in Sekunden
+
* 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
+
* Größe der index.vdr in Bytes / 12000 = Länge der Aufnahme in Minuten (falls die Framerate 25 ist)
  
 
==Probleme==
 
==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.
+
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.
 
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.
 
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/
  
 
[[Kategorie:Aufnahmedateien]]
 
[[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/