staging.inyokaproject.org

Fehleranalyse von Videos

Status: Ungelöst | Ubuntu-Version: Ubuntu MATE 24.04 (Noble Numbat)
Antworten |

DummiVonWert

Anmeldungsdatum:
22. Januar 2025

Beiträge: 46

Die Analyse benutzt libx264, wie kann man eine Ausgabe erstellen (im Terminal), dass alle videos + Ergebnisse angezeigt werden : UPS. ich hab die Lösung :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash

while IFS= read -r -d $'\0' video
do
    filename=$(basename -- "$video")
    filename="${filename%.*}"
    
    ffmpeg -y -i "$video" -vcodec libx264 -crf 51 -preset ultrafast -acodec copy -f mp4 -movflags frag_keyframe+empty_moov+delay_moov pipe:1 >/dev/null 2>"${filename}.txt" </dev/null
    TxtFileName="${filename}.txt" 
    mystring=${TxtFileName}
    echo $mystring
    grep -i -n 'error\|duplicate\|failure\|missing\|POCs\|corrupt' "${TxtFileName}"
    echo "Ready"
    
done < <(find -iregex ".*\.\(mp4\|mkv\|m2ts\|mpg\|ts\)" -print0)
#dos2unix -c mac "${TxtFileName}"
#grep -C 5 -i -n 'error\|duplicate\|failure' "${TxtFileName}"
echo "Ready"
read pause

Die Administration sollte dies jetzt nicht in die Blah, Blah, Blah Abteilung verdammen, weil keine Hilfe angefordert wurde, OH, einen Beitrag leisten, ohne euch, ist das erlaubt ?

Moderiert von sebix:

Thema in einen passenden Forenbereich verschoben, da keine Frage erkennbar ist. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) in jedem Forenbereich. Danke.

DummiVonWert

(Themenstarter)

Anmeldungsdatum:
22. Januar 2025

Beiträge: 46

Seahawk hat da mitgeholfen.

CarstenHa

Avatar von CarstenHa

Anmeldungsdatum:
1. Mai 2020

Beiträge: 154

Da ich gerade an einer ähnlichen Sache dran war und das hier ganz interessant fand, habe ich das noch ein bisschen erweitert:

 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/bash
# Quelle: https://forum.ubuntuusers.de/topic/fehleranalyse-von-videos/

usage() {
cat <<EOU

Programm zur Fehleranalyse von Videodateien.
Ohne weitere Angaben werden die entsprechenden Dateien im aktuellen Verzeichnis untersucht.
Man kann auch eine/mehrere bestimmte Datei(en) angeben oder mit Option -r rekursiv ab PWD
untersuchen.
Untersucht werden folgende Dateitypen:
mp4,mkv,m2ts,mpg,ts

Synopsis:
$0 [OPTION...] [FILE...]

Liste der Optionen:

   -h

	ruft diese Hilfe auf.

   -l

	listet die Dateien vor der Überprüfung auf und fragt den weiteren Ablauf ab.

   -r

	Untersucht rekursiv die entsprechenden Dateitypen.

EOU
}

while getopts hlr opt
do
   case $opt in
       h) usage
          exit
       ;;
       l) listfiles="yes"
       ;;
       r) rsearch="yes"
          cmd='find -iregex ".*\.\(mp4\|mkv\|m2ts\|mpg\|ts\)" -print0'
       ;;
   esac
done

shift $((OPTIND - 1))

if [ ! "$rsearch" == "yes" ]; then 
 if [ -n "$*" ]; then
  singlefile="yes"
  cmd='printf '\''%s\0'\'' "$@"'
 else
  cmd='find -maxdepth 1 -iregex ".*\.\(mp4\|mkv\|m2ts\|mpg\|ts\)" -print0'
 fi
fi

if [ "$listfiles" == "yes" ]; then
 echo "Folgende Dateien werden geprüft:"
 . <(echo $cmd) | tr '\0' '\n'
 read -p "Weiter mit [ENTER]. Abbruch mit [STRG]+[C]"
fi

echo ""
while IFS= read -r -d $'\0' video; do

 if [ -z "$video" ]; then
  echo "Nichts passendes gefunden."
  exit
 fi

 if [ "$singlefile" == "yes" ] && ([[ ! "$video" =~ \.(mp4|mkv|m2ts|mpg|ts)$ ]] || [ ! -f "$video" ]); then
  echo "Ungültige Datei: (${video})."
  continue
 fi

 beginnanalyse="$(date +%s)"
 LogFileName="${video}.log"
 echo "Analysiere ${video} ..."
 ffmpeg -y -i "$video" -vcodec libx264 -crf 51 -preset ultrafast -acodec copy -f mp4 -movflags frag_keyframe+empty_moov+delay_moov pipe:1 >/dev/null 2>"${LogFileName}" </dev/null
 # Entfernt Rückläufe, damit Zeilenangaben von grep passen.
 sed -i 's/\r/\n/g' "${LogFileName}"
 errcontent="$(grep -i -n 'cannot\|error\|duplicate\|dropped\|failure\|invalid\|missing\|POCs\|corrupt\|too large' "${LogFileName}")"
 if [ -n "$errcontent" ]; then
  echo "***** Warnungen und Fehler *****"
  echo "$errcontent"
  echo "Vollständige Analyse siehe Datei: ${LogFileName}"
  echo "********************************"
 fi
 zeitdiff=$(("$(date +%s)" - beginnanalyse))
 printf 'Datei %s analysiert in %02dh:%02dm:%02ds\n' "$video" $(($zeitdiff/3600)) $(($zeitdiff%3600/60)) $(($zeitdiff%60))
 echo ""
    
done < <(. <(echo $cmd))

printf "Fertig.\n"

Es können jetzt auch einzelne Dateien oder Dateien im aktuellen Verzeichnis überprüft werden.

Gruß

Carsten

Antworten |