Defekte Videos kann mencoder reparieren. Mittels apt-get ist dieses Programm schnell installiert.
1 | sudo apt-get install mencoder |
Der folgende Aufruf versucht das Video input.avi zu reparieren. Das Ergebnis wird unter output.avi gespeichert.
1 | mencoder -idx input.avi -ovc copy -oac copy -o output.avi |
Dabei stellt mencoder den Index wieder her und kopiert die Film- und Tonspur.
Für die ganze Filmsammlung eignet sich das folgende Script repair_movies.sh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #!/bin/sh #functions f_suffix() { echo "${1##*.}" } #parameters if [ $# -eq 1 ] then #parameter path="$1" else #default path="/data/media/movies" fi #main find "$path" -not -name '*.fixed.*' \( -iname '*.avi' -or -iname '*.mpg' -or -iname '*.mpeg' \) -type f | \ while read i do suffix=$(f_suffix "$i") filename_out="${i%.avi}.fixed.${suffix}" filename_tmp="${i}.tmp" echo "Repair file ${i}" #remove old temp file if [ -f $filename_tmp ] then echo "rm ${filename_tmp}" rm "${filename_tmp}" fi if [ -f $filename_out ] then #file is fixed, remove original file echo "rm ${i}" rm "${i}" else #repair video file mencoder -idx "$i" -ovc copy -oac copy -o "${filename_tmp}" #remove source file only, if mencoder was successfully finished if [ $? -eq 0 ] then mv "${filename_tmp}" "${filename_out}" #delete original movie echo "rm ${i}" rm "${i}" fi fi done |
Im Moment verarbeitet das Script nur avi, mpeg und mpg Dateien (case insensitiv), lässt sich aber leicht erweitern. Zur Sicherheit kann der Teil, der das Orginalvideo löscht, auskommentiert werden.