• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Mkvtoolnix Stapelverarbeitung

Morsch9

Newbie
Hi

Ich bin einer dieser Windowsumsteiger und habe mich einigermaßen in die Linux Welt eingearbeitet.

Leider sind noch ein paar offene Frage geblieben ... Ich hoffe ich finde hier ein paar Antworten.

Auf meinem Windowsrechner benutze ich Mkvtoolnix um Tonspuren aus verschiedenen Dateien zu entfernen.

z.b. habe ich einen Batch Datei. Dort schiebe ich meherer MKVs rein und die ID02 wird direkt entfernt. Soetwas müsste doch auch unter Linux möglich sein oder? :???:

Leider gibt es auch Dateien bei denen die nicht benötigte Tonspur nicht die ID02 ist. Da nutze ich ein zusatz Tool welches mir alle Tonspur Signaturen, der entsprechenden Dateien, auflistet und ich mich so für eine Sprache entscheiden kann.

Freue mich schon auf Antworten. ;)
 

lOtz1009

Moderator
Teammitglied
mkvtoolnix ist doch im OSS-Repo. Kann also mit zypper in mkvtoolnix oder pery Yast installiert werden.

Ansonsten auf deren Hompage:
http://www.bunkus.org/videotools/mkvtoolnix/downloads.html#suse
bzw. http://www.bunkus.org/videotools/mkvtoolnix/opensuse/13.1/
 
OP
M

Morsch9

Newbie
mkvtoolnix selber habe ich schon gefunden. Die frage ist nur ob es eine möglichkeit der Stapelverarbeitung gibt bzw ein zusatztool?

Hier einmal die Batch Zeilen in Windows
SET mkvmerge="C:\Program Files (x86)\MKVtoolnix\mkvmerge.exe"

PUSHD %~dp1
if [%1]==[] goto :eof
mkdir remux
:loop
%mkvmerge% -o "%~dp1\remux\%~n1.mkv" --compression 1:none --compression 2:none -a !2 %1
shift
if not [%1]==[] goto loop

kann man doch bestimmt in linux übertragen :???:
 

soyo

Hacker
hi
Verstehe ich jetzt nicht :D
Ich benutze MKVMERGE GUI v6.7.0
Gewünschte Sachen entfernen , Button unten (zur JOBWARTESCHLANGE hinzufügen)
Dann , den Nächsten , usw..
Und dann ausführen lassen.

Dabei sehe ich ja auch immer welches meine gewünschte Tonspur ist.
Mfg soyo
 
OP
M

Morsch9

Newbie
Wenn ich mir sicher bin das ich z.b. ID2 nicht brauche nutze ich im Windows halt diese Zeilen in einer Batch Datei.

20 Files auswähle auf die Batch ziehen abwarten und Fertig. Mit nur einem Klick sind alle Tonspuren weg die ich nicht brauche. Jede einzeln hinzufügen ist natürlich auch machbar dauert aber vergleichsweise lange.

Ich hab mich schon versucht in das Thema Shell programierung einzulesen aber es ist ja doch recht ... naja komplex aber ich bin so motiviert auf Linux zu wechseln ... das bekomme ich mit eurer Hilfe schon hin.

Sollten ich mehrer Dateien verarbeiten müssen bei denen ich mir nicht sicher bin welche ID ich brauche nutze ich http://www.networkedmediatank.com/showthread.php?tid=43845 alle Files rein ... alles außer german weg und fertig ... auch mit nur wenigen klicks ... hoffe soetwas finde ich für Suse auch
 
Hallo Morsch9,

Morsch9 schrieb:
mkvtoolnix selber habe ich schon gefunden. Die frage ist nur ob es eine möglichkeit der Stapelverarbeitung gibt bzw ein zusatztool?
Ich habe das Programm noch nie benutzt, aber die GUI läuft hier wenn ich sie starte. Was man damit tut kann ich Dir nicht sagen.


Morsch9 schrieb:
Code:
SET mkvmerge="C:\Program Files (x86)\MKVtoolnix\mkvmerge.exe"
PUSHD %~dp1
if [%1]==[] goto :eof
mkdir remux
:loop
%mkvmerge% -o "%~dp1\remux\%~n1.mkv" --compression 1:none --compression 2:none -a !2 %1
shift
if not [%1]==[] goto loop
kann man doch bestimmt in linux übertragen :???:

Ich kann kein *.BAT, aber ich kann etwas bash und würde sowas in der Art bauen.

Code:
#!/bin/bash

test -x /home/$(whoami)/remux && echo "Das verzeichnis 'remux' esistiert bereits; Befehl übersprungen" || mkdir /home/$(whoami)/remux

for i in $(ls -1 /pfad/zu/den/mkv/dateien/ | grep 'mkv$') ;
  do
         mkvmerge -o /home/(whoami)remux/output.mkv --compression 1:none --compression 2:none usw..... ;
  done
Das bearbeitet alle im angegebenen Pfad mit dem gleichen Kommando bis die Liste durch ist.

Was machen: 'PUSHD %~dp1' und '-a !2 %1'
Und was überprüft diese if-Anweisung?
Ich gehe mal davon aus das mkvmerke die gleichen Optionen und Aufrufe auf jedem System kennt, kannst also Deine Kommandos anpassen indem Du nur den DOS-Teil weg lässt.

Morsch9 schrieb:
20 Files auswähle auf die Batch ziehen abwarten und Fertig.
Man kann das Script auch entsprechen bauen.

Morsch9 schrieb:
aber ich bin so motiviert auf Linux zu wechseln ... das bekomme ich mit eurer Hilfe schon hin.
Das bleibt hoffentlich noch länger so :)

Lieben Gruß aus Hessen
 
OP
M

Morsch9

Newbie
Hey super ich werde das gleich am nächsten Samstag testen!

-a !2 %1 entfert die Tonspur mit dem ID2 Tag. Wird denke ich mal super funktionieren. Ich gebe in einer Woche die Rückmeldung
 

josef-wien

Ultimate Guru
Morsch9 schrieb:
ich werde das gleich am nächsten Samstag testen
Dabei solltest Du nicht notwendige Programmaufrufe vermeiden (neben grep und whoami in dem genannten Beispiel fällt mir vor allem das am öftesten unnötig gebrauchte cat ein):
/home/$(whoami)/remux
~/remux oder $HOME/remux
for i in $(ls -1 /pfad/zu/den/mkv/dateien/ | grep 'mkv$') ;
for i in "$(ls -1 /pfad/zu/den/mkv/dateien/*mkv)"

P. S. Strichpunkt und neue Zeile ist übrigens "doppelt gemoppelt".
"Lesestoff": http://tldp.org/LDP/abs/html/index.html
(z. B. http://tldp.org/LDP/abs/html/internalvariables.html#POSPARAMREF)
 
OP
M

Morsch9

Newbie
Super danke für deine verbesserungs Vorschläge! Sollte das ganze dann so aussehen?

Code:
#!/bin/bash

test -x /home/remux && echo "Das verzeichnis 'remux' esistiert bereits; Befehl übersprungen" || mkdir /home/remux

for i in "$(ls -1 /pfad/zu/den/mkv/dateien/*mkv)"
  do
         mkvmerge -o /home/remux/output.mkv --compression 1:none --compression 2:none usw-a !2 %1 ;
  done

wenn ich das richtig sehe werde die Dateien dann aber output.mkv genannt oder ?? gibt es einen Befehl um den Dateinamen zu übernehmen? %~n1.mkv ?
 

josef-wien

Ultimate Guru
Du sollst überall
/home/$(whoami)/remux
durch ~/remux oder $HOME/remux ersetzen.

Man soll die Dinge doch vorher ordentlich testen, die Anführungszeichen müssen weg, dafür verkraftet das Ding allerdings Leerzeichen im Verzeichnis- bzw. Dateinamen nicht:
Code:
for i in $(ls -1 /pfad/zu/den/mkv/dateien/*mkv)
  do
    mkvmerge -o ~/remux/$(basename $i) --compression 1:none --compression 2:none -a !2 $i
  done
Zu mkvmerge selbst kann ich aber nichts sagen, zum Testen habe ich dem mkvmerge-Befehl
Code:
echo
vorangestellt und mir damit den erzeugten Programmaufruf ausgeben, aber nicht durchführen lassen.
 
Hallo,

Morsch9 schrieb:
ich werde das gleich am nächsten Samstag testen
-a !2 %1 entfert die Tonspur mit dem ID2 Tag. Wird denke ich mal super funktionieren. Ich gebe in einer Woche die Rückmeldung
Mein Schipsel war nur als Denkanstoß gedacht und nicht als "fertig zur Übernahme" gedacht.
Ach so, das ist schon ein Parameter für mkvmerge, ich gehe, wie gesagt, davon aus das die Syntax unter GNU/Linux gleich ist.

josef-wien schrieb:
Dabei solltest Du nicht notwendige Programmaufrufe vermeiden (neben grep und whoami in dem genannten Beispiel fällt mir vor allem das am öftesten unnötig gebrauchte cat ein):
Das $(whoami) habe ich auch nur genommen da ich den Benutzernamen des TE nicht kenne.
Ich würde auch keine Tilde im Script, sondern einen absoluten Pfad verwenden wenn ich es nur bei mir ausführen würde.

Morsch9 schrieb:
wenn ich das richtig sehe werde die Dateien dann aber output.mkv genannt oder ?? gibt es einen Befehl um den Dateinamen zu übernehmen? %~n1.mkv ?
Natürlich dafür gibt es ja $(basename)

josef-wien schrieb:
Du sollst überall
/home/$(whoami)/remux
durch ~/remux oder $HOME/remux ersetzen.
oder gleich durch den kompletten richtigen Pfad ;)

Lieben Gruß aus Hessen
 
Oben