Index
Hulk (Diskussion | Beiträge) |
|||
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Die | + | 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 | + | 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 | + | 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 | { 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 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. | ||
Zeile 11: | Zeile 20: | ||
}; | }; | ||
− | Bedingt durch die vorzeichenbehaftete Definition der Variablen ''offset'' ergibt sich eine Größenbegrenzung der | + | 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 / | + | * 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== | ||
Zeile 24: | Zeile 33: | ||
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/