An welcher Stelle im Code werden die die Aufnahmedateien gesplittet? Kann ja dann nur da sein...
Aufnahmen lassen sich nicht abspielen (Index Datei defekt ?) [gelöst]
-
-
Hoi
ich komm leider erst am wochenende wieder an meinen VDR und kann daher nicht testen.
die ganze split und index Geschichte sollte eigentlich mit in der recorder.c sein und dort sind es offenbar nur der naludump und der hardlinkcutter-patch, welche dort eingreifen
PS: laut diff sollte das splitten in der recorder.c sein
Code
Alles anzeigen@@ -89,7 +107,11 @@ bool cRecorder::RunningLowOnDiskSpace(void) bool cRecorder::NextFile(void) { if (recordFile && frameDetector->IndependentFrame()) { // every file shall start with an independent frame +#ifdef USE_HARDLINKCUTTER + if (fileSize > fileName->MaxFileSize() || RunningLowOnDiskSpace()) { +#else if (fileSize > MEGABYTE(off_t(Setup.MaxVideoFileSize)) || RunningLowOnDiskSpace()) { +#endif /* HARDLINKCUTTER */ recordFile = fileName->NextFile(); fileSize = 0; }
-
Sieht genauso aus, wie unter 1.7.27. Muss also doch woanders liegen.
-
Dirk hat vermutlich schon die Stelle gefunden.
Sieht genauso aus, wie unter 1.7.27. Muss also doch woanders liegen.
DIe .28 Version hat den Fehler nicht, evtl. der selbe Fehler im ext Patch ???
Ich denke auch das ist die Richtige Stelle im Code:
.28 Version mit ext. Patch (funktioniert)
Code
Alles anzeigenbool cRecorder::NextFile(void) { if (recordFile && frameDetector->IndependentFrame()) { // every file shall start with an independent frame #ifndef USE_HARDLINKCUTTER if (fileSize > MEGABYTE(off_t(Setup.MaxVideoFileSize)) || RunningLowOnDiskSpace()) { #else if (fileSize > fileName->MaxFileSize() || RunningLowOnDiskSpace()) { #endif recordFile = fileName->NextFile(); fileSize = 0; } } return recordFile != NULL; }
die .29 Version mit dem Fehler
Code
Alles anzeigenbool cRecorder::NextFile(void) { if (recordFile && frameDetector->IndependentFrame()) { // every file shall start with an independent frame #ifdef USE_HARDLINKCUTTER if (fileSize > fileName->MaxFileSize() || RunningLowOnDiskSpace()) { #else if (fileSize > MEGABYTE(off_t(Setup.MaxVideoFileSize)) || RunningLowOnDiskSpace()) { #endif /* HARDLINKCUTTER */ recordFile = fileName->NextFile(); fileSize = 0; } } return recordFile != NULL; }
#ifdef USE_HARDLINKCUTTER und #ifndef USE_HARDLINKCUTTER denke das 'n' entfernen und es läuft.
Nachtrag; Das kann es auch nicht sein - sorry das passt schon
-
Naja, die IF Zeilen sind ja vertauscht, dann müsste ifndef wieder stimmen.
-
Richtig - Sorry dafür zu früh gefreut.
Evtl wird die Funktion NextFile erst gar nicht benutzt, das lässt sich mit einem Breakpoint herausfinden.
-
Hallo,
Die Ursache ist meiner Meinung nach das die Variable Filesize nicht stimmt, deshalb wird auch die Indexdatei falsch erstellt (da hier filesize mit einfließt)
Auch die funktion nextFile kann deshalb nicht funktionieren.Code#ifndef USE_NALUDUMP if (recordFile->Write(b, Count) < 0) { LOG_ERROR_STR(fileName->Name()); break; - fileSize += Count; #else if (naluStreamProcessor) { naluStreamProcessor->PutBuffer(b, Count); bool Fail = false; while (true) {
So läuft es. (gerade getestet)
Wobei ich nicht verstehe warum, denn das break voher sollte doch bewirken das die If schleife verlassen wird und filesize nicht mit count inkrementiert wird.
fileSize += Count; sollte also an dieser Stelle nie ausgeführt werden - es muß aber so sein, sonst hätte das Auskommentieren keine Wirkung.
C++ ist nicht meine Muttersprache, evtl, kann ein C++ Versteher das erklären. -
ich glaube eher, da ist was mit den Klammern durcheinander gekommen:
Originalcode
Codeif (recordFile->Write(b, Count) < 0) { LOG_ERROR_STR(fileName->Name()); break; } fileSize += Count;
Gepatchter Code
Code
Alles anzeigen#ifndef USE_NALUDUMP if (recordFile->Write(b, Count) < 0) { LOG_ERROR_STR(fileName->Name()); break; + } fileSize += Count; #else if (naluStreamProcessor) { naluStreamProcessor->PutBuffer(b, Count); bool Fail = false; while (true) { int OutLength = 0; uchar *OutData = naluStreamProcessor->GetBuffer(OutLength); if (!OutData || OutLength <= 0) break; if (recordFile->Write(OutData, OutLength) < 0) { LOG_ERROR_STR(fileName->Name()); Fail = true; break; } fileSize += OutLength; } if (Fail) break; } else { if (recordFile->Write(b, Count) < 0) { LOG_ERROR_STR(fileName->Name()); break; } fileSize += Count; #endif // USE_NALUDUMP - } t = time(NULL);
Müsste ich später aber noch testen.
-
Hallo,
Code
Alles anzeigen#ifndef USE_NALUDUMP if (recordFile->Write(b, Count) < 0) { LOG_ERROR_STR(fileName->Name()); break; + } fileSize += Count; #else if (naluStreamProcessor) { naluStreamProcessor->PutBuffer(b, Count); bool Fail = false; while (true) { int OutLength = 0; uchar *OutData = naluStreamProcessor->GetBuffer(OutLength); if (!OutData || OutLength <= 0) break; if (recordFile->Write(OutData, OutLength) < 0) { LOG_ERROR_STR(fileName->Name()); Fail = true; break; } fileSize += OutLength; } if (Fail) break; } else { if (recordFile->Write(b, Count) < 0) { LOG_ERROR_STR(fileName->Name()); break; } fileSize += Count; #endif // USE_NALUDUMP - } - fileSize += Count; t = time(NULL);
Dann müsste das - fileSize += Count; vor t = time(NULL) (ist bei mir drin, du hast es wegeelassen) auch raus da es in Zeile 6 auch drin ist, würde also 2 mal ausgeführt.
Test läuft gerade. -
Hast Du einen anderen Patch als ich? Bei mir kommt nach #endif "t = time(NULL)". Hab nur die eine Klammer verschoben.
EDIT: Jedenfalls scheints jetzt zu klappen. Soeben wurde 00002.ts erstellt. Muss nur noch gucken, ob die index-Datei nun ok ist.
EDIT2: Die Index-Datei wurde auch korrekt erstellt. Lag also nur an der einen Klammer bei mir. -
Hast Du einen anderen Patch als ich? Bei mir kommt nach #endif "t = time(NULL)". Hab nur die eine Klammer verschoben.
Das wird wohl so sein, ich habe extpng-vdr-1.7.29-gentoo-edition.patch.bz2.
Ich glaube ich tue mir diese ext Patches nicht mehr an, brauche im Prinzip nur graphtft und yeapgHD und evtl. noch jumplay.
Das einzeln einzupatchen wäre wohl weniger Fehleranfällig -
Ich nutze den selben Patch. Kannst ja den Thread mal auf gelöst setzen. Ich nutze auch nur 2 oder 3 Patches des extp, aber bisher hats immer funktioniert.
-
Habe gerade noch mal nachgesehen, bei mir wird filesize += Count; reingepatched
Egal - Test war erfolgreich- Thread auf gelöst gesetzt
Nachrag: Timeshift funktioniert nicht richtig - Beim Abspielen wenn die Aufnahme läuft wird am Ende nichts hinzugefügt.
Wiedergabe wird beendet weil am Ende, die Aufnahme läuft aber noch.
Also nochmal auf Wiedergabe dann wird am Ende wieder ein Stück angefügt.
Ich habe das Video Verzeichnis auf ein NAS gemontet, das sollte nicht die Ursache sein. -
freut mich das ihr es hinbekommen habt
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!