Jetzt habe ich C-Sprache und ffmpeg realisieren ein Multiplex-Echtzeit-Audio-und Video zu MP4-Dateien des Programms und alles funktioniert gut, aber bei der Wiederverwendung von plötzlichen Stromausfall, Die Aufnahme ist MP4-Datei ist beschädigt, VLC kann diese Datei nicht abspielen. Ich denke Grund kein Anruf ist die Trailer-Funktion av_write_trailer, wodurch Index und Zeitstempelinformationen verloren, ich benutze araxis Merge-Tool verglichen, um den erfolgreichen Aufruf av_write_trailer Funktion der Datei und ein nicht av_write_trailer ruft die beschädigten Dateien schreiben und zwei verschiedene Punkte gefunden: 1. Beschädigte Dateien in der Datei Header-Box Nummer Wert nicht richtig 2. Die beschädigte Datei kein Ende der Datei.Bei der Aufnahme MP4 mit FFmpeg plötzlich ausschalten
Jetzt möchte ich nach dem Einschalten reparieren mein Programm kann automatisch die beschädigten Dateien reparieren, in Google fand keine effektiven Methoden. mein Gedankengang ist in der normalen Aufnahme Prozess speichert pro Sekunde eine beschädigte Datei fehlt zwei Informationen: Box-Nummer und Ende der Datei, speichern Sie es in eine lokale Datei, beim Schreiben der MP4-Datei Integrität löschen Sie diese Datei nach, wenn ausgeschaltet beschädigt, dann in der nächsten Potenz, lesen Sie die Datei und die entsprechende Information, um die beschädigten Dateien entsprechende Position zu schreiben. Aber jetzt ist das Problem, dass ich nicht weiß, wie die Nummer der Box und das Ende der Datei zu speichern, ist dies machbar? Wenn möglich, was soll ich tun? Ich freue mich auf deine Antwort!
Wenn Sie mit Stromausfall/-absturz rechnen, nehmen Sie NICHT auf mp4 auf. Aufnahme in ein Format, das diese Ereignisse überleben kann (wie flv) Dann am Ende in mp4 konvertieren. – szatmary