News:

--

Main Menu

Datei wird unvollständig geladen

Started by Viechy, July 12, 2020, 10:26:18 PM

Previous topic - Next topic

Viechy

Hallo,

ich habe das Problem, dass bei einer Aufnahme das Bild kurzzeitig gestört ist und damit das Video in Avidemux nur bis zu diesem Zeitpunkt geladen wird.
Gerne würde ich das Video vollständig in das Programm laden lassen und anschließend die fehlerhafte Stelle rauskürzen, bekomme das Video aber nicht nichts Programm.
Gibt es dazu eine Einstellung? In einer früheren Version war dies auf jeden Fall möglich - allerdings kann ich diese Version nicht finden.

eumagga0x2a

Ich kann nur mutmaßen, dass es sich bei der defekten Datei um MPEG-TS handelt. Beim erstmaligen Laden solcher Dateien legt Avidemux im selben Ordner eine Index-Datei (.idx2) gleichen Namens an. Öffnet man die Index-Datei in einem gescheiten Texteditor und scrollt bis zum Ende durch, sieht es dort etwa so aus:

Audio bf:055aa51c Pes:dc:055a70f8:0:4226629453 Pes:dd:055980d4:0:4226612289
Video at:055964ec:0013 Pts:4226649853:4226640853  IF:00e901:0:0 BF:0004fa:-3600:1800 BF:0001e9:-5400:-1 BF:0001a6:-1800:5400 PF:001a73:7200:7200 BF:0003d1:3600:9000 BF:00011c:1800:-1 BF:000159:5400:12600 PF:001a3a:14400:14400 BF:000453:10800:16200 BF:000176:9000:-1 BF:00014a:12600:19800 PF:001c45:21600:21600 BF:000648:18000:23400 BF:000244:16200:-1 BF:00023d:19800:27000 PF:002cae:28800:28800 BF:0006ce:25200:30600 BF:000259:23400:-1
[End]


Dem Text "Video at:" folgt die Anzahl von Bytes vom Anfang der Datei (das Offset) bis zum Anfang dieser letzten GOP (group of pictures) in hexadezimaler Notation ohne das übliche Präfix "0x". Ein Taschenrechner übersetzt 0x55964ec in 89744620 (ungefähr 85,59 MiB). Dann muss man noch die Größen der darauffolgenden Frames aufsummieren:

0xe901 + 0x4fa + 0x0001e9 + 0x1a6 + 0x1a73 + 0x1a73 + 0x3d1 + 0x11c + 0x159 + 0x1a3a + 0x453 + 0x176 + 0x14a + 0x1c45 + 0x648 + 0x244 + 0x23d + 0x2cae + 0x6ce + 0x259 = 0x1aae6

0x55964ec + 0x1aae6 = 0x55b0fd2

Das ist 89853906 in dezimaler Schreibweise (~ 85,69 MiB). Das ergibt die Stelle von der an die Indexierung nicht mehr durchgängig möglich war. Von diesem Offset beginnend (oder ein wenig später) sollte man die Daten in eine neue Datei kopieren – zum Beispiel unter Linux geht das ruckzuck mit

tail -c +89853906 /Pfad/zu/beschädigte_Aufnahme_ganz.ts > /Pfad/zu/der_Rest.ts

– und diese neue Datei mit Avidemux öffnen, in der Hoffnung, dass die beschädigte Stelle verhältnismäßig kurz ist (sonst mit einem etwas höheren Offset versuchen).

Wie lange Avidemux nach Verlust der Synchronisierung im Datenstrom noch weitermacht, ist hardcoded.

QuoteIn einer früheren Version war dies auf jeden Fall möglich

Das wäre bemerkenswert, was das vielleicht noch zu Zeiten von 2.5.x?

Viechy

Danke für die schnelle Antwort.
Das heißt, wenn ich die Antwort nun richtig verstehe, man muss die .TS Datei in zwei Teile teilen - vor der Beschädigung und danach. Und die entsprechende Größe dann, wie beschrieben, entnehmen.
Unter Windows ist das nicht ganz so einfach, wie unter Linux - oder?
Und ja, es ist eine MPEG-TS Datei als Aufnahme vom Receiver, wo es häufiger passieren kann, dass es Mal ganz kurze Ausfälle aufgrund von Sturm o.ä. gibt. Kann man das irgendwie vermeiden ohne direkt irgendwie das Video zerteilen zu müssen?

Kann durchaus sein, dass das noch unter 2.5.X war - nutze Avidemux schon länger und hatte es nicht aktualisiert bevor ich auf Windows 10 umgestiegen bin. Habe auch Mal versucht Avidemux 2.5.6 zu installieren und da bekomme ich tatsächlich die gesamte Datei rein, allerdings zerschießt es mir da die Audio-Spur und hat einen Versatz rein...

eumagga0x2a

Quote from: Viechy on July 13, 2020, 03:25:26 AM
Das heißt, wenn ich die Antwort nun richtig verstehe, man muss die .TS Datei in zwei Teile teilen - vor der Beschädigung und danach. Und die entsprechende Größe dann, wie beschrieben, entnehmen.
Unter Windows ist das nicht ganz so einfach, wie unter Linux - oder?

Mit Bordmitteln – meines (Un)Wissens nein. Es gibt aber Wege an coreutils, wozu tail gehört, auch unter Windows zu kommen (Stichwort MSYS2). Bestimmt gibt es auch grafische Tools. Man kann es bestimmt auch mit einem Hexeditor erledigen.

QuoteUnd ja, es ist eine MPEG-TS Datei als Aufnahme vom Receiver, wo es häufiger passieren kann, dass es Mal ganz kurze Ausfälle aufgrund von Sturm o.ä. gibt. Kann man das irgendwie vermeiden ohne direkt irgendwie das Video zerteilen zu müssen?

Im Moment nicht. Damit es künftig vielleicht möglich sein wird, wäre ein Sample unabdingbar (ein Stück von der MPEG-TS-Datei, 200 bis 300 MiB lang, mit der defekten Stelle grob ungefähr in der Mitte).

Viechy

Kenne mich leider mit den Themen nicht sonderlich aus. Daher habe ich nun ein anderes Programm verwendet, welches die Fehler behoben hat und danach wieder die reparierte Datei in Axidemux geladen. Konnte dann wieder problemlos geladen werden.
Leider keine Lösung auf Dauer, da das andere Programm lediglich eine Trial-Version war. Werde mich dann nochmal anderweitig umsehen müssen, wie ich beschädigte Dateien zur Not geschnitten bekomme, damit Avidemux die Datei wieder annimmt.

MSYS2 habe ich zwar runtergeladen - aber absolut nicht verstanden, wie es funktioniert. Gerne würde ich ein Sample zur Verfügung stellen, aber aktuell ist die beschädigte Datei 8,82GB groß und da mir anscheinend das technische Verständnis fehlt, kriege ich es nicht in Teile geschnitten, die die passende Größe hätten.  :-\

eumagga0x2a

Quote from: Viechy on July 13, 2020, 06:21:02 PMMSYS2 habe ich zwar runtergeladen - aber absolut nicht verstanden, wie es funktioniert.

Das ist doch so gut auf https://www.msys2.org beschrieben... Man bekommt eine Shell (eine Eingabeaufforderung) mit den wichtigsten Werkzeugen  zur Verfügung. Die Windows-Systempartition, traditionell gemountet von Windows als "C:" ist unter dem Pfad /c erreichbar.

cd /c

wechselt in den Ordnerbaum von C:\. Ich würde erwarten, dass weitere lokale Laufwerke als /d, /e usw. eingebunden werden.