Probleme beim Spulen von mkv auf Standalone-Player

  • Hallo zusammen,

    ich habe ein Problem und ich weiß nicht ob es an der Kodierung oder am muxen liegt...

    Seit geraumer Zeit kodiere ich ja nicht mehr per StaxRip sondern mit einer Batch-Datei, also auf Kommandozeilenebene...das ganze klappte soweit gut, ich war mit den Ergebnissen zufrieden und ich hatte weniger Arbeit...

    Nur heute ist mir etwas aufgefallen: Im Gegensatz zu meinen alten StaxRip-Kodierungen kann ich die neuen nicht Vorspulen. Ok, gar nicht stimmt so nicht, zweifach geht, aber dann ist Sense. Versuche ich mehr steigt mein Player aus und geht zum nächsten Film. Auch wenn ich über die direkte Spring-FUnktion gehe, spult er quasi zweifach bis dahin vor. Ich hab keine Ahnung, woran das liegt, irgendwas muss bei mir falsch gelaufen sein.

    Ich habe hier mal zwei Auszüge aus MediaINfo genommen:

    So sehen die aktuellen Kodierungen aus:

    Code
    AllgemeinUniqueID/String                          : 238709939152050129405557405679988626294 (0xB395DCAAF4B0CA2AB7C1C0CE3155D376)Vollständiger Name                      xxxFormat                                   : MatroskaFormat-Version                           : Version 4 / Version 2Dateigröße                               : 13,5 GiBDauer                                    : 2h 49minGesamte Bitrate                          : 11,4 MbpsKodierungs-Datum                         : UTC 2013-04-07 17:39:05Kodierendes Programm                     : mkvmerge v6.1.0 ('Old Devil') built on Mar  2 2013 14:32:37verwendete Encoder-Bibliothek            : libebml v1.3.0 + libmatroska v1.4.0VideoID                                       : 1Format                                   : AVCFormat/Info                              : Advanced Video CodecFormat-Profil                            : High@L4.1Format-Einstellungen für CABAC           : JaFormat-Einstellungen für ReFrames        : 5 framesCodec-ID                                 : V_MPEG4/ISO/AVCDauer                                    : 2h 49minBitrate                                  : 8 164 KbpsBreite                                   : 1 920 PixelHöhe                                     : 800 PixelBildseitenverhältnis                     : 16:9Ursprüngliches Bildseitenverhältnis      : 2,40:1Modus der Bildwiederholungsrate          : konstantBildwiederholungsrate                    : 23,976 FPSColorSpace                               : YUVChromaSubsampling                        : 4:2:0BitDepth/String                          : 8 bitsScantyp                                  : progressivBits/(Pixel*Frame)                       : 0.222Stream-Größe                             : 9,67 GiB (72%)Titel                                    : xxxverwendete Encoder-Bibliothek            : x264 core 128 r2216 198a7eaKodierungseinstellungen                  : cabac=1 / ref=5 / deblock=1:-1:-1 / analyse=0x3:0x113 / me=umh / subme=8 / psy=1 / psy_rd=1.00:0.15 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-3 / threads=6 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=crf / mbtree=1 / crf=18.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00Sprache                                  : DeutschDefault                                  : JaForced                                   : NeinAudio #1ID                                       : 2Format                                   : DTSFormat/Info                              : Digital Theater SystemsFormat_Settings_Mode                     : 16Format-Einstellungen für Endianess       : BigCodec-ID                                 : A_DTSDauer                                    : 2h 49minBitraten-Modus                           : konstantBitrate                                  : 1 509 KbpsKanäle                                   : 6 KanäleKanal-Positionen                         : Front: L C R, Side: L R, LFESamplingrate                             : 48,0 KHzBitDepth/String                          : 24 bitsStream-Größe                             : 1,79 GiB (13%)Titel                                    : xxxSprache                                  : DeutschDefault                                  : JaForced                                   : NeinAudio #2ID                                       : 3Format                                   : DTSFormat/Info                              : Digital Theater SystemsFormat_Settings_Mode                     : 16Format-Einstellungen für Endianess       : BigCodec-ID                                 : A_DTSDauer                                    : 2h 49minBitraten-Modus                           : konstantBitrate                                  : 1 509 KbpsKanäle                                   : 6 KanäleKanal-Positionen                         : Front: L C R, Side: L R, LFESamplingrate                             : 48,0 KHzBitDepth/String                          : 24 bitsStream-Größe                             : 1,79 GiB (13%)Titel                                    : xxxSprache                                  : EnglischDefault                                  : NeinForced                                   : NeinText #1ID                                       : 4Format                                   : PGSMuxing-Modus                             : zlibCodec-ID                                 : S_HDMV/PGSCodec-ID/Info                            : The same subtitle format used on BDs/HD-DVDsTitel                                    : xxxSprache                                  : DeutschDefault                                  : JaForced                                   : JaText #2ID                                       : 5Format                                   : PGSMuxing-Modus                             : zlibCodec-ID                                 : S_HDMV/PGSCodec-ID/Info                            : The same subtitle format used on BDs/HD-DVDsTitel                                    : xxxSprache                                  : DeutschDefault                                  : NeinForced                                   : NeinText #3ID                                       : 6Format                                   : PGSMuxing-Modus                             : zlibCodec-ID                                 : S_HDMV/PGSCodec-ID/Info                            : The same subtitle format used on BDs/HD-DVDsTitel                                    : xxxSprache                                  : EnglischDefault                                  : NeinForced                                   : Nein

    Das habe ich mit

    Zitat


    C:\Programme\StaxRip\Applications\x264\x264.exe "avs.avs" --output "%%~ni.h264" --preset slow --tune film --profile high --level 4.1 --crf 18


    kodiert. Damit ist kein Vorspulen möglich...


    Hiermit

    Kann mir jemand sagen was bei Staxrip anders läuft?

    Besten dank

    Lapje

  • OK, damit komme ich der Sache schon näher...

    Ich habs gerade mal per Hand mit einer älteren Version versucht und das hat wieder funktioniert...

    Ein Problem habe ich aber noch:

    Ich habe in den Links nichts darüber gefunden, wie ich

    Zitat


    --engage no_cue_duration
    --engage no_cue_relative_position
    --engage no_simpleblocks
    --disable-lacing
    --clusters-in-meta-seek

    in die Batch-Datei einbinden kann, also wie das in der Kommandozeile aussehen müsste...ich habs einfach mal in Anführungsstriche gesetzt, hat aber nicht funktioniert...

  • Wenn euch das hilft..;-)

    Denkt euch die Zeilenumbrüche bitte weg, ich habs wegen der besseren Übersicht so gemacht, normalerweise steht alles in einer Zeile... habe es noch nicht geschaft, dass es mit Zeilenumbrüchen klappt, obwohl sowas bei Kommandozeilen funzen soll...

    Besten dank

  • Ich wäre sehr verwundert, wenn es mit in Anführungszeichen eingeschlossenen Parametern funktionieren sollte. Dass man die Werte der Parameter, in denen Dateinamen enthalten sein können, einschließt, damit auch Namen mit Leerzeichen unterstützt werden, sehe ich ja noch ein. Aber doch nicht die Parameter selber?

    Beispiel: -o "%ziel%\%%~ni.mkv" (da hat der Parameter -o keine, der dazugehörige Parameterwert aber wegen des Platzhalters %~ni)

    Also auch eher --track-name als "--track-name"; und der Parameterwert dazu möglicherweise eher 0:"%%~ni" statt "0:%%~ni". Aber das weiß ich nicht aus praktischer Erfahrung, da kennt sich Selur sicher viel besser aus.

    Außerdem scheint mir das noch nicht mal die vollständige Batchdatei zu sein. Die Variable %ziel% wird nirgends definiert. Und die Variable %i gehört zu einer FOR-Schleife, die da ebenso wenig zu sehen ist. Alles in allem also anscheinend irgendwo aus dem Zusammenhang herauskopiert.

  • Hallo,

    doch, das ganze funktioniert wunderbar...

    Klar ist das ganze nur ein Teil der ganzen Datei, es ging hier ja nur um den Teil mit mkvmerge, daher habe ich den anderen Teil weggelassen...hier mal der ganze Dummy, der so bis jetzt schon einige Zeit in Gebrauch ist:

    Das Mit den Anführungsstriche ist auch immer seltsam, manche Anweisungen müssen darin gesetzt sein, andere nicht. Warum habe ich nie verstanden, ich bin da aber auch nicht der Experte, hier war sehr viel Try & Error am Werk...,-)

    Aber wie gesagt, es funktioniert vom Ablauf her ohne Probleme. Es muss dazu aber auch gesagt werden, dass mkvmerge die Anweisungen selber so setzt, man kann sich ja die Einstellungen im Prog als Kommandozeile ausgeben lassen, daran habe ich mich auch dann orientiert...

    Wenn Du aber Ideen hast wie das ganze verbessert werden kann, immer her damit...

    Gruß

    Lapje

  • Zitat

    Ich wäre sehr verwundert, wenn es mit in Anführungszeichen eingeschlossenen Parametern funktionieren sollte.


    Die Anführungszeichen kommen davon, wenn man die Parameter aus mmgs angezeigten Aufrufen kopiert, sollte i.d.R. aber nichts ausmachen.
    Ein Problem sehe ich vor allem bei der Festlegung des Inputs, da dort runde Klammern sind, die da meiner Ansicht nach nicht hingehören.

    Hier noch mal die Übersicht wie ein mkvmerge Befehl aufgebaut ist:

    Zitat

    mkvmerge [global options] {-o out} [options1] {file1} [[options2] {file2}] [@optionsfile]


    Quelle: https://www.bunkus.org/videotools/mkv…c/mkvmerge.html

    Hier noch mal der Aufruf aufgeteilt:

    • festlegen wo mkvmerge gefunden werden kann: "C:\Programme\MKVtoolnix\mkvmerge.exe"
    • festlegen von globalen Optionen*: --clusters-in-meta-seek --engage no_simpleblocks --disable-lacing --no-global-tags --engage no_cue_duration --engage no_cue_relative_position --track-order 0:0,1:0,2:0,3:0,4:0
    • festlegen des Outputs: -o "%ziel%\%%~ni.mkv"
    • festlegen der Optionen des Videostreams: --language 0:ger --track-name 0:"%%~ni" --forced-track 0:no --display-dimensions 0:1920x1080 --default-duration 0:24p --compression 0:none -d 0 -A -S -T --no-global-tags
    • festlegen des Videostreams:--no-chapters "%%~ni.h264"
    • festlegen der Optionen ersten Audiostreams: --language 0:ger --track-name 0:"%%~ni Ger" --forced-track 0:no --compression 0:none -a 0 -D -S -T --no-global-tags --no-chapters
    • festlegen des ersten Audiostreams: "%%~ni_ger.dts"
    • festlegen der Optionen des zweiten Audiostreams: --language 0:eng --track-name 0:"%%~ni Eng" --forced-track 0:no --compression 0:none -a 0 -D -S -T --no-global-tags --no-chapters
    • festlegen des zweiten Audiostreams: "%%~ni_eng.dts"
    • festlegen der Optionen des ersten Untertitelstreams: --language 0:ger --track-name 0:"%%~ni Ger" --forced-track 0:no -s 0 -D -A -T --no-global-tags --no-chapters
    • festlegen des ersten Untertitelstreams: "%%~ni_ger.sup"
    • festlegen der Optionen zweiten Untertitelstreams: --language 0:eng --track-name 0:"%%~ni Eng" --forced-track 0:no -s 0 -D -A -T --no-global-tags --no-chapters
    • festlegen des zweiten Untertitelstreams: "%%~ni_eng.sup"


    * Optionen die nicht zu einem bestimmten Input gehören können an sich überall stehen (https://www.bunkus.org/videotools/mkv…ge.option_order) ich schreib sie aber lieber zusammen

    Nebenbei:

    1. den TrackOrderaufrufs sollte man sich sparen können.
    2. '--language 0:eng' macht (bei neueren mkvmerge Versionen) das Gleiche als wenn man den Track auf 'und' (undefiniert) setzt, da 'eng' der Standard ist. -> Man kann '--language 0:eng' also auch weglassen.
    3. da Du raw streams multiplexed kannst Du viele Optionen weglassen (ein raw stream hat eh keine Chapter oder andere Inhalte als er selber, sprich man muss Untertitel&Co nicht immer deaktivieren
    4. wenn man keine Track forced, muss man auch nicht jedes mal '--forced-track 0:no' verwenden
    5. würde empfehlen immer die '--' schreibweise der Parameter zu verwenden, da die Befehle dann sprechender sind, also eher '--no-video' anstatt '-D', siehe: https://www.bunkus.org/videotools/mkv…c/mkvmerge.html (2.7. Options that can be used for each input file)
    6. eventuell kann die Länge des Aufrufes in der Batch Probleme machen, d.h. man muss eventuell auf eine Optionsdatei umsteigen.

    jetzt zu Deiner Frage:

    Zitat

    Ich habe in den Links nichts darüber gefunden, wie ich .... in die Batch-Datei einbinden kann


    Wie Du bei https://www.bunkus.org/videotools/mkv…c/mkvmerge.html sehen kannst sind diese Optionen alle keine eingabespezifischen Parameter, d.h. sie können alle in die globalen Optionen (bzw. über all hin, so lange sie nicht in den Parametern eines Inputs stehens)

    Generelle Empfehlung:
    Wenn Du eine Batch schreiben willst, solltest Du Dir die Syntax des Tools durchlesen welches Du benutzt, in diesem Fall wäre es also zu empfehlen in Ruhe https://www.bunkus.org/videotools/mkv…c/mkvmerge.html zu lesen. (Keine Panik! Fehler macht man dabei öfter mal mit der Dokumentation, findet man aber i.d.R. recht flott wo etwas nicht stimmt.)

    Cu Selur

  • Die Anführungszeichen kommen davon, wenn man die Parameter aus mmgs angezeigten Aufrufen kopiert, sollte i.d.R. aber nichts ausmachen.
    Ein Problem sehe ich vor allem bei der Festlegung des Inputs, da dort runde Klammern sind, die da meiner Ansicht nach nicht hingehören.

    Runde Klammern sollten kein Problem sein, sind hier aber überflüssig. Sie dienen dazu mehrere Quelldateien zusammenzufügen und zwar auf unterster Ebene bereits vor dem Lesen, also quasi "binary merge".

    [*]'--language 0:eng' macht (bei neueren mkvmerge Versionen) das Gleiche als wenn man den Track auf 'und' (undefiniert) setzt, da 'eng' der Standard ist. -> Man kann '--language 0:eng' also auch weglassen.

    Dies ist nicht korrekt. Bei "--language 0:und" oder gar keiner Nutzung von "--language" wird der Wert "und" geschrieben, bei "--language 0:eng" wird kein Wert geschrieben.


    Zum Thema selbst: würde mich erst mal auf folgende drei Parameter beschränken:
    --engage no_cue_duration
    --engage no_cue_relative_position
    --clusters-in-meta-seek

  • Zitat

    Sie dienen dazu mehrere Quelldateien zusammenzufügen ...


    Gut zu wissen. :)

    Zitat

    Bei "--language 0:und" wird der Wert "und" geschrieben, bei "--language 0:eng" wird kein Wert geschrieben.


    Ah okay, undefiniert und nicht vorhanden haben also unterschiedliche Effekte. :)

  • Selur

    Besten dank für die Ausführungen, werde das mal so probieren. Ich habe das jetzt so verwendet, weil mkvmerge sie mir so für die Kommandozeile ausgegeben hat - daher dachte ich das sollte so sein. Wenn ich dadurch aber die Anweisung kürzer machen kann, um so besser...

    Ich überlege aber noch ob ich überhaupt die neuen Anweisungen ausprobieren oder doch bei der 5.8 bleiben soll - anscheinend bringen neue Versionen eh immer nur Stress...^^

    Ich werde mich da nacher mal drann setzen und das Ergebnis posten...


    Gruß

    Lapje

  • So...

    Das funktioniert jetzt unter der 5.8 soweit...

    Und ist schon mal wesentlich kürzer...compression habe ich drinnbehalten da ich da 100% sicher gehen will - wenn die an ist läuft bei mir gar nix...

    Leider bekomme ich die zusätzlichen Anweisungen für die 6.1 nicht zum laufen...

    Da bekomme ich die Fehlermeldung, dass diese nicht geöffnet werden können...

    In der Doku steht aber auch nur dass ich in der " mkvmerge --engage list" nachschauen soll...aber Google spukt dazu nichts aus...

  • Yep, habe ich, sowohl einzelnd als auch alle zusammen...

    Ich hab auch generell mal versucht die Zeile ohne Anführungszeichen zu setzen...da gab es auch nur Fehlermeldungen...also müssen die Sein (mkvmerge setzt die ja auch selber)

  • Ich würde unbedingt dazu raten, Anführungszeichen nur dort zu verwenden, wo Leerzeichen oder Sonderzeichen missverstanden werden könnten. Solange nur klar für "Bezeichner" gültige Zeichen auftauchen (alphanummerisch, Unterstrich, Minus), also jedes Leerzeichen klar eine Trennung zwischen mehreren Parametern oder zu dazugehörigen Werten sein muss, lass sie besser weg.
    __

    mkvmerge unterstützt ja auch eine @Optionsdatei ... vielleicht ist es besser, so riesige Parameterlisten mit ECHO in so eine Datei zu schreiben, dann dürften auch Zeilenumbrüche kein Problem sein. Deren Inhalt würde dann vielleicht in etwa so aussehen dürfen (die FOR-Variablen-Platzhalter wurden da schon im ECHO ersetzt):

    Code
    --engage no_cue_duration
    --engage no_cue_relative_position
    --engage clusters-in-meta-seek
    --language "0:ger" --track-name "0:[I]%%~ni[/I]" --display-dimensions "0:1280x720" --default-duration "0:24000/1001p" --compression "0:none" "[I]%%~ni[/I].h264"
    --language "0:ger" --track-name "0:[I]%%~ni[/I] Ger" --compression "0:none" "[I]%%~ni[/I]_ger.mp3"
    --language "0:eng" --track-name "0:[I]%%~ni[/I] Eng" --compression "0:none" "[I]%%~ni[/I]_eng.mp3"
    --language "0:ger" --track-name "0:[I]%%~ni[/I] Ger" "[I]%%~ni[/I]_ger.sup" 
    --language "0:eng" --track-name "0:[I]%%~ni[/I] Eng" "[I]%%~ni[/I]_eng.sup" 
    --track-order "0:0,1:0,2:0,3:0,4:0"
  • O.k...Optionsdateien sind wieder was ganz neues...

    Das Problem was ich dann nur sehe:Wie würde der Dateiname in die Datei kommen? Das Script speichert ja von den .h264-Dateien den Namen und verwendet ihn dann weiter...wenn der durch ist kommt der nächste Name...

  • Die Optionsdatei wird jedes Mal neu erzeugt und enthält jedes Mal die aktuellen Namen. Wenn was schiefgeht, dann kann man auch mal nur eine Videodatei in das Verzeichnis tun, dann läuft die FOR-Schleife nur einmal, und in der Optionsdatei steht danach die zusammengebaute Kommandozeile(ngruppe) halbwegs lesbar, gut zum Zitieren hier im Board.

    Das liefe dann in etwa so (auch nur ein Ausschnitt innerhalb der FOR-Schleife):

    Code
    ...
    (
    echo --engage no_cue_duration > %%~ni.opt
    echo --engage no_cue_relative_position >> %%~ni.opt
    echo --engage clusters-in-meta-seek >> %%~ni.opt
    ...
    
    
    "C:\Programme\MKVtoolnix\mkvmerge.exe" -o "%ziel%\%%~ni.mkv" @%%~ni.opt
    )

    Das ganze hat nur den Haken, dass ich nicht weiß, welche Optionen in die Optionsdatei dürfen. Immerhin ist ja die Reihenfolge wichtig, und da müssten ja irgendwie ein paar davon vor der ersten Input-Datei stehen und andere wieder danach. So einfach wird es also wohl nicht...

    Dafür hab ich aber zumindest das mit den Klammern verstanden: Die können nützlich sein, um zusammenhängende (binär gesplittete) Input-Dateien logisch zusammenzufassen (z.B. alle VOBs einer VTS). Das ist hier aber nicht der Grund. Die andere Funktion ist, das gleiche zu tun wie das "=": Verhindern, dass Input-Dateien mit laufenden Nummern im Dateinamen (z.B. "Episode1.avi" und "Episode2.avi") hintereinander weg wie eine Datei gelesen werden, wenn man das nicht möchte.

  • Mir gefallen in deiner batch ein paar Dinge nicht, hab's mal korrigiert:

    und Zeilenumbrüche in einer FOR-Schleife, wo keine hingehören, solltest du weglassen - jede Zeile mit einem Zeilenumbruch wird vom cmd-interpreter als neuer Befehl interpretiert...
    Hab jetzt keine entfernt, da du sie hier wohl nur zur besseren Übersicht entfernt hast.
    Der cmd-interpreter sollte meines Erachtens übrigens rund 8000 Zeichen pro Zeile verarbeiten können, da ist also noch genug Luft ;)

    Die Fehler, die in einer FOR-Schleife passieren bekommst du übrigens ohne deaktiviertes @echo off möglicherweise nie zu Gesicht.
    Mit der mkvmerge-cli kenn ich mich nicht aus, aber ich würde nur " um pfade oder dateinamen machen, also z.B. --O:"%%~ni"

    10 Mal editiert, zuletzt von mogobime (9. April 2013 um 21:33)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!