kangaroo72
Anmeldungsdatum: 20. Mai 2014
Beiträge: 123
|
Hallo ubuntuusers ... ich möchte gerne einen Ordner auslesen, in dem Videos mit einer Tonspur und Videos mit mehreren Tonspuren liegen auslesen (als CSV). Am liebsten wäre mir ein Befehl/Script, der mir anzeigt, welche Videos mehrere Tonspuren haben. Lässt sich das machen?? LG, Kangaroo
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
| for file in *.avi; do
audioStreams=$(mediainfo -f "$file" | grep "audio streams" | awk {'print $6'})
if [ $audioStreams -gt 1 ]; then
echo "$file has $audioStreams audio streams"
fi
done;
|
ungetestet. Damit könntest du die Anzahl an Audiostreams ermitteln.
|
kangaroo72
(Themenstarter)
Anmeldungsdatum: 20. Mai 2014
Beiträge: 123
|
eingepackt in media.sh kommt bei Eingabe von ./media.sh folgendes ... | ./media.sh: Zeile 3: [: -gt: Einstelliger (unärer) Operator erwartet.
|
Ich glaub ich hab's nicht präzise genau formuliert ... die Videos liegen in Unterordnern sorry ...
Ideal wär's z. B. das er den Ordner Videos mit allen Unterordnern durchsucht ...
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Unterordner durchsuchen geht am einfachsten mit find und der option -exec. /edit: Ich hab mal etwas gebastelt: | #Einzeiler mit Ausgabe der Streams:
find /path/to/files -type f -exec sh -c 'echo -n "{}:::AUDIOSTREAMS:"; mediainfo -f "{}" | grep "audio streams" | cut -d: -f2' {} \;
|
Als script:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | #!/bin/bash
if [ $# -eq 0 ]
then
echo "No path given."
echo "Usage: $0 /path/to/files"
exit 0
fi
find "$1" -type f -print0| while IFS= read -r -d $'\0' line
do
audioStreams=$(mediainfo -f "$line" | grep "audio streams" | awk {'print $6'})
if [ $audioStreams -eq 1 ]; then
echo "$line has $audioStreams audio streams"
echo -n "Details: $(ls -lha "$line")"
echo " "
fi
done
|
|
kangaroo72
(Themenstarter)
Anmeldungsdatum: 20. Mai 2014
Beiträge: 123
|
Hi ... erstmal herzlichen Dank für Deine Unterstützung ... Nur so ganz rund läuft's noch nicht. Er zeigt auch Videos mit 1 Audiostream an ... "xxxxxxxx has 1 audio streams" könnte man das zwischen deutsch und englisch trennen?
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Oh. Ich sehe gerade, dass ich auch nach 1 Audiostream gesucht habe (da ich kein Beispielvideo mit mehreren hatte). Nun sollten nur die angezeigt werden, die mehr als 1 Tonspur haben. Eingedeutscht ist es auch. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | #!/bin/bash
if [ $# -eq 0 ]
then
echo "Kein Pfad angegeben."
echo "Benutzung: $0 /Pfad/zu/Dateien"
exit 0
fi
find "$1" -type f -print0| while IFS= read -r -d $'\0' line
do
audioStreams=$(mediainfo -f "$line" | grep "audio streams" | awk {'print $6'})
if [ $audioStreams -gt 1 ]; then
echo "$line enthält $audioStreams Tonspuren"
echo -n "Details: $(ls -lha "$line")"
echo " "
fi
done
|
|
kangaroo72
(Themenstarter)
Anmeldungsdatum: 20. Mai 2014
Beiträge: 123
|
Hätte ich nie hin bekommen. Ich versuche es später...
|
kangaroo72
(Themenstarter)
Anmeldungsdatum: 20. Mai 2014
Beiträge: 123
|
So - es läuft ... Ich bekomme aber neben dem Output noch jede Menge
| /usr/sbin/media: Zeile 13: [: -gt: Einstelliger (unärer) Operator erwartet.
|
Wo könnte das denn noch her kommen? Könnte das von anderen Dateien kommen? - Sollte man die Suche vllt. nur auf MKV beschränken? Und könnte man das Script so anpassen, das er die Videos mit den englischen Tonspuren bzw. den nicht-deutschen Ton-Spuren ausgibt? Jetzt wird's fies, gelle 😛 Gruß und Danke
|
kangaroo72
(Themenstarter)
Anmeldungsdatum: 20. Mai 2014
Beiträge: 123
|
Die "Find-Zeile" hab ich mal umgebaut .. | find "$1" -name *.mkv -print0| while IFS= read -r -d $'\0' line
|
Schön ware noch die Trennung, das er nur Nicht-Deutsch ausgibt
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
kangaroo72 schrieb: So - es läuft ... Ich bekomme aber neben dem Output noch jede Menge
| /usr/sbin/media: Zeile 13: [: -gt: Einstelliger (unärer) Operator erwartet.
|
Wo könnte das denn noch her kommen? Könnte das von anderen Dateien kommen? - Sollte man die Suche vllt. nur auf MKV beschränken? Und könnte man das Script so anpassen, das er die Videos mit den englischen Tonspuren bzw. den nicht-deutschen Ton-Spuren ausgibt? Jetzt wird's fies, gelle 😛 Gruß und Danke
Das kommt dann zustande, wenn die Variable $audioStreams keine Zahl enthält. Dann meckert er (zurecht), weil er mit -gt nur Zahlen vergleichen kann. Und ja, jetzt wird es fies, weil ich keine mehrsprachigen Videos zur Hand habe, um das ausprobieren zu können 😉 Du könntest aber mal manuell ein mediainfo -f auf so eine Datei loslassen und den Output hier posten. Und wenn ich dich richtig verstehe, möchtest du, dass per mediainfo gefiltert wird, wo kein deutscher Stream dabei ist? Auch dazu brauch ich ne Beispielausgabe. An sich ist es aber nicht so schwer...du musst nur nach dem richtigen Begriff "greppen".
|
kangaroo72
(Themenstarter)
Anmeldungsdatum: 20. Mai 2014
Beiträge: 123
|
Hier mal ein Beispiel ... Ein Film hat zwei deutsche Tonspuren (DD 5.1 & DTS) einmal spanisch (DD 5.1) und einmal englisch (DTS) Ich möchte i. d. R. immer nur deutsch behalten - Ich nehme an, Du brauchst dazu die "Variablen" von Mediainfo? Schau mal ... hilft das? http://pastebin.com/LDT0Gk1D Ich denke wir müssten nach Audio_Language_List "greppen"
Kann man in einem Kommande zweimal "greppen"?
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
kangaroo72 schrieb: Ich nehme an, Du brauchst dazu die "Variablen" von Mediainfo?
Nein. Du brauchst die ☺
Ich denke wir müssten nach Audio_Language_List "greppen"
Wäre eine der Möglichkeiten, ja.
Kann man in einem Kommande zweimal "greppen"?
Klar. Aber wozu? mediainfo -f meinFilm.bla | grep Audio_Language_List gibt doch schon die Zeile, die du willst. Du könntest aber ein weiteres grep anhängen z.B.
mediainfo -f meinFilm.bla | grep Language | grep Audio | grep List
|
kangaroo72
(Themenstarter)
Anmeldungsdatum: 20. Mai 2014
Beiträge: 123
|
Rein informativ ... Wenn ich "File Name" greppen möchte, habe ich Probleme mit dem Leerzeichen ...
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
mediainfo -f meinFilm.bla | grep "File Name" sollte klappen. Man kann das Leerzeichen aber auch escapen. Für weitere Infos: Shell/Bash-Skripting-Guide für Anfänger
|
kangaroo72
(Themenstarter)
Anmeldungsdatum: 20. Mai 2014
Beiträge: 123
|
| mediainfo -f "Film.bla" | grep "File name"
|
Funktioniert | mediainfo -f "Film.bla" | grep "Audio_Language_List"
|
Funktioniert | mediainfo -f "Film.bla" | grep "File name" | grep "Audio_Language_List"
|
Bringt leider keine Ausgabe ... Hast 'ne Idee?
|