Beiträge von may24

    Hi zusammen,

    ich habe hier ein .wmv file das ich nach AVC re-coden möchte.
    Das funktioniert auch anstandslos, doch danach sind Audio und Video total aus dem Sync.

    Vollkommen egal welcher Decoder benutzt wurde: L-Smash, FFmpeg-source oder DirectShowSource (mit convertfps=true) ...

    Spielt man das Original im MPC-hc ab, passen Bild und Ton zusammen ... Daraufhin hab ich mir den Graph geschnappt (Graphstudio) und es damit versucht ... Gleiches in Grün.
    Auch eine WAV Extraktion via wmv2wav brachte keinen Erfolg

    Es scheint irgendwie das es "Lücken" im Audio Strom gibt ... wahrscheinlich bei den Übergängen der Schwarzblenden.

    Entweder kann der Win codec dies Stille als "Sprung" interpretieren oder er lässt sie einfach weg (d.h. an dieser Stelle befindet sich ganz einfach keine Audio Information und er wartet einfach bis es neue gibt ...)

    Um dem Ganzen irgendwie beizukommen habe ich die Timecodes extrahiert ,,, obwohl ich mir nicht sicher bin ob die sich nun auf das Video oder Audio beziehen ... via wmvtimes.exe

    Meine Frage nun: Wie kann ich die Timecode Information nutzen ?
    Wie kann ich den Audio Stream so korrigieren das die "Lücken" geschlossen werden ?

    Hier mal die Info:

    Hallo zusammen,

    Ich habe hier ein Audio File in AAC das - relativ zum Video - einen Zeitversatz von 100ms aufweist.
    Da das fertige Video noch Untertitel und Kapitelmarken hat soll das Ganze in .mkv gemuxed werden.

    Nun könnte ich einfach dem Container ein Audio Delay von 100ms mitgeben, nur leider ignoriert der SAP dieses und Bild/Ton sind wieder asynchron.

    Deshalb will ich "Stille" am Anfang des Files einfügen um das Ganze wieder gerade zu biegen - und das ohne neu zu komprimieren ...

    Meine erste Idee war mp3DirectCut. Doch leider murkst das rum. Es scheint das es erstens keine Option gibt Stille einzufügen und zweitens die Selektion aus der Timeline nicht linear sonder "irgendwie komisch logarithmisch" zu sein scheint ...
    Also suche ich jetzt nach einer Alternative ...

    Kann ffmpeg sowas ... eac3to oder mencoder ? Und wenn ja, wie ?
    Oder bin ich gezwungen neu zu komprimieren ? (wäre schade ...)

    ... es geht immer noch darum das die englische Tonspur nach dem reencode unsynchron zum Bild läuft ... die deutsche aber passt ...

    Mediainfo sagt folgendes (zum Original)

    Code
    GeneralUnique ID                                : 231980533100289115276168921128645109826 (0xAE85D3555CC31005B2FDFCEF36A32842)Complete name                            : Q:\vid\2\test\bet_ng201dlbd108.mkvFormat                                   : MatroskaFormat version                           : Version 4 / Version 2File size                                : 929 MiBDuration                                 : 21 min 59 sOverall bit rate                         : 5 909 kb/sEncoded date                             : UTC 2013-03-26 21:16:43Writing application                      : mkvmerge v6.1.0 ('Old Devil') built on Mar  2 2013 14:32:37Writing library                          : libebml v1.3.0 + libmatroska v1.4.0VideoID                                       : 1Format                                   : AVCFormat/Info                              : Advanced Video CodecFormat profile                           : High@L4.1Format settings, CABAC                   : YesFormat settings, ReFrames                : 4 framesCodec ID                                 : V_MPEG4/ISO/AVCDuration                                 : 21 min 59 sBit rate                                 : 5 268 kb/sWidth                                    : 1 920 pixelsHeight                                   : 1 080 pixelsDisplay aspect ratio                     : 16:9Frame rate mode                          : ConstantFrame rate                               : 25.000 FPSOriginal frame rate                      : 23.976 (24000/1001) FPSColor space                              : YUVChroma subsampling                       : 4:2:0Bit depth                                : 8 bitsScan type                                : ProgressiveBits/(Pixel*Frame)                       : 0.102Stream size                              : 845 MiB (91%)Writing library                          : x264 core 130 r2273 b3065e6Encoding settings                        : cabac=1 / ref=4 / deblock=1:0:0 / analyse=0x3:0x113 / me=umh / subme=8 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=2 / 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=240 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=2pass / mbtree=1 / bitrate=5268 / ratetol=1.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00Language                                 : GermanDefault                                  : YesForced                                   : NoAudio #1ID                                       : 2Format                                   : AC-3Format/Info                              : Audio Coding 3Format settings, Endianness              : BigCodec ID                                 : A_AC3Duration                                 : 21 min 59 sBit rate mode                            : ConstantBit rate                                 : 224 kb/sChannel(s)                               : 2 channelsChannel positions                        : Front: L RSampling rate                            : 48.0 kHzFrame rate                               : 31.250 FPS (1536 spf)Bit depth                                : 16 bitsCompression mode                         : LossyStream size                              : 35.2 MiB (4%)Language                                 : GermanService kind                             : Complete MainDefault                                  : YesForced                                   : NoAudio #2ID                                       : 3Format                                   : AC-3Format/Info                              : Audio Coding 3Format settings, Endianness              : BigCodec ID                                 : A_AC3Duration                                 : 21 min 59 sBit rate mode                            : ConstantBit rate                                 : 192 kb/sChannel(s)                               : 6 channelsChannel positions                        : Front: L C R, Side: L R, LFESampling rate                            : 44.1 kHzFrame rate                               : 28.711 FPS (1536 spf)Bit depth                                : 16 bitsCompression mode                         : LossyStream size                              : 30.2 MiB (3%)Language                                 : EnglishService kind                             : Complete MainDefault                                  : NoForced                                   : No

    So, jetzt mal die Theorie beisete !
    Im Grunde wird ja alles demultiplext um neucodiert zu werden. AVC -> HEVC (plus noch 'n bisschen Anime gefiltere) und AC3 -> AAC (via eac3to (als Decoder) + qaac).

    Der Videostrom wird neu codier auf 25 fps.
    Die deutsche Audiospur - demuxed - wird neu codier und passt danach zu den 25 fps
    Die englische Audiospur - demuxed mit gaps - wird neu codier und passt danach nicht zu den 25 fps

    Auch ein Speedup 23.97 -> 25 via MeGUI + Qaac hat den Versatz nur verschlimmert !

    Also hab ich jetzt mal Selur's Idee aufgegriffen und das ganze mit mkvextract (aktuelle Version) auseinandergenommen und wiederum den Audio Anteil nach aac gewandelt:

    Code
    for %%f in (*.ac3) do  "C:\Program Files (x86)\Video Tools\eac3to-3.31\eac3to.exe" "%%f" stdout.wav -normalize| "C:\Program Files (x86)\Video Tools\qaac_2.58\qaac_2.58\x64\qaac64.exe" --ignorelength --no-delay -q 2 -V 91 - -o "%%f.mp4"

    ... wie man sieht, kein Speedup !

    Und siehe da: Beide Tonspuren sind auf einmal synchron zum Video !

    Es liegt also an eac3to ... die Frage ist: Fault or Feature ?

    Nun "der Einfachheit wegen" sollte natürlich die englische Tonspur ge-fixed werden - mal abgesehen davon das diese ja Probleme macht.

    Ich kann mir das Ganze nur so erklären:
    Als das Ganze in .mkv gemuxed wurde, wurde dem Video Stream gesagt: "Du bist jetzt 25fps" ... damit du mit der deutschen Tonspur synchon läufst.
    Danach wurde der englische Track hinzugefügt. Damit dieser nun auch synchron lief wurde ihm gesagt: "Du bist jetzt auch 25fps". Da MKVmerge nicht neu codiert hat es wahrscheinlich die Gap's eingefügt damit das ganze von der Spieldauer her wieder passt ...
    Wenn dem so wäre, dann ist die nächste Frage: Wie verhält sich eac3to ? Ignoriert es die Gaps (dropped), füllt es sie mit "Stille" oder "honoriert" es die Gaps und verbiegt es wiederum die Zeitstempel ... ?

    Ich werde es jetzt erst mal mit mkvextract + neuencoden versuchen ... mal sehen was dabei rauskommt

    PS: Ich bin mir eigentlich sehr sicher das die deutsche und die englische Tonspur aus zwei unterschiedlichen Quellen kamen ...

    Hallo zusammen,

    ich konvertieren gerade 'ne Serie mit deutscher und englischer Tonspur.
    Mediainfo erzählt mir das die FPS: 25 sei, das "Original" aber 23.976 ...
    Ich gehe also mal davon aus das der Videostrom tatsächlich in 23.976 ist, im Container (mkv) aber auf 25 gesetzt wurde damit das Vid synchron zur deutschen Tonspur läuft.
    Spielt man das ganze in VLC ab sind sowohl deutsche als auch englische Tonspur lippensyncron.

    Nun nehme ich aber das Ganze auseinander:

    Code
    C:\Program Files (x86)\Video Tools\eac3to-3.31\eac3to.exe" -demux bet_ng101dlwehd108.mkv

    und bekomme dabei:

    Danach ist die englische (a03) Tonsput total unsynchron ... Selbst nach einem "speedup" von 23.976 auf 25.
    Ich gehe mal davon aus das die vielenm kleinen "gaps" dafür verantwortlich sind ...
    Doch wie korrigert man sowas ???

    Wenn ich das also recht verstehe ist es also eher sinnvoll einen höheren qcomp Wert zu wählen wenn die Bilder schnell und großflächig ändern (z.B. Action-Scenes) um wirklich Werte zu berechnen und nicht auf Vorhersagen - die sich ja laufend und stark ändern - zu konzentrien.


    Der Default Wert von x265 ist ja für 2k und höher gedacht. In meinem Fall ist's aber 1080p. D.h. voraussichtlicher mehr Details pro Block als bei UHD ...

    Hm, heißt das wenn ich ein qcomp von 0.6 (default) und einen CRF von 22 habe, der Quantisizer +- 40% beträgt ? - Unter der Annahme das 1.0 = 100% ist
    Und wenn ja, was veranlasst ihn zu schwanken ? Die Bildkomplexität, schon klar, aber wann - oder besser gesagt nach welchen Kriterien - fängt er an die Bitrate hoch bzw. runter zu regeln ?

    Hi zusammen,

    Ich experimentieren gerade etwas mit den x265 Parametern.
    Kann mir jemand die Funktion von "qcomp" näher erläutern ? Was passiert wenn ich den Wer erhöhe/senke ?

    Zitat

    qComp sets the quantizer curve compression factor. It weights the frame quantizer based on the complexity of residual (measured by lookahead). Default value is 0.6. Increasing it to 1 will effectively generate CQP

    Wenn ich den Wer erhöhe, heißt das das der Quantisierungs Faktor "weniger" schwanken kann (als bei dem 0.6 Default Wert) ?

    Was ist mit CQP gemeint ?

    Das liegt daran dan Youtube feste Profile hat was das re-encoding angeht. Die schauern sich nur das Seitenverhältnis des Videos an und suchen dann ihr entsprechendes Profil dazu raus.
    Ob's mit "Pro" Accounts anders ist weiß ich nicht ...

    Soweit mir bekannt kann man an dieser Vorgehensweise nichts ändern. D.h. selbst wenn du die YT Konventionen exakt nachstellst, konvertieren die immer noch.

    ok, werde ich nächstes Mal ausprobieren ... sollte ich es schaffen x265 dahin zu überreden 'ne dynamische Bibliothek zu bauen (.so)

    Derweilen kann ich sagen das es tatsächlich an avs2pipemod lag. Mit der neuen Version (1.1.1) gab keine Probleme.
    Nur wie die Speicher-Allokierung von Avisynth arbeitet scheint ein großes Rätzel zu sein. Vorallem wann der Speicher wieder freigegeben wird ...
    Und die Plugins machen dann nochmal ihr eigenen Ding...

    Wie auch immer, nach dem Motto: Auf einem Auge blöd, aber der Erfolg gibt uns recht ... Es hat auch mit dem DirectShowSource "Umweg" geklappt.
    Gab keine Frame-Drops ...
    Speicherauslastung lag zuletzt bei knapp über 3GB (laut Process Hacker!)

    Insgesammt wurden 24 einzelne Videostreams geöffnet und geschnitten...
    Teilweise mit AviSource (UT-Video), LSmash-Source (TV-Zeug) und FFmpeg-Source (der Rest: Youtube, HandyVideo, Kamera ...)

    Wenn avs2pipemod crashed, was soll dann der Tausch von x265.exe gegen ffmpeg.exe bewirken?


    Hab nie behauptet das ich das machen will ! Noch dazu wo avs2pipemod gecrashed ist ... (ja, ich wiederhole mich)
    ffmpeg sollte an dieser Stelle eher als Decoder arbeiten, obwohl es natürlich volkommen legitim ist dann auch das encoding damit zu machen.


    Zitat


    Das hast Du beim letzten Mal auch behauptet.


    Ich behaupte nur was der Process Hacker sagt ...

    Zugegeben ich hab keine Ahnung wie in einem solchen Fall die Speicherallokierung läuft ... noch dazu da es sich ja um mehrere .avs' Skripte handelt ...

    Zitat

    AviSynth-Skripte über DirectShowSource laden ... wie kommt man auf eine so irre Idee?


    Wie sonst ?
    Weder L-smash noch ffmpeg-source kann das. Und AviSource scheitert am 16 bit output ... Da bleibt nicht mehr viel übrig.

    Wie auch immer. Ich suche ja auch die Möglichkeit das via FFmpeg zu machen ... aber geht das überhaupt ?
    Die Concaternate Funktion funktioniert vielleicht für video Dateien, aber auch für AviSynth scripte ?

    Hm ... bin jetzt mit avs2pipemod 1.1.1 am testen da X265 keine dynamische Library baut:

    Hallo zusammen.

    Ich habe ein "kleines Projekt" das im Grunde aus 5 separaten .avs Scripten besteht.
    Das Ganze soll jetzt in ein großes File zusammengefügt und neu gecoded werden.
    Natürlich könnte man auch 5 Einzelteile coden und die dann zusammenfügen, aber schöner wär's schon wenn alles aus einm Guß ist.

    Mein Erster Versuch:

    Code
    vd1=DirectShowSource("Q:\Film\Mitwoch\alles.avs")vd2=DirectShowSource("Q:\Film\Donnerstag\alles.avs")vd3=DirectShowSource("Q:\Film\Freitag\alles.avs")vd4=DirectShowSource("Q:\Film\Samstag\alles.avs")vd5=DirectShowSource("Q:\Film\xoutro\alles.avs")vd1++vd2++vd3++vd4++vd5return(last)
    Code
    "C:\Program Files (x86)\Video Tools\avs2pipemod-0.4.2m\avs2pipemod.exe" -rawvideo "alles.avs" | "C:\Program Files\x265\x265-2.1_66.exe" --preset slower --crf 24 --psy-rd 2.0 --psy-rdoq 10.0 --aq-mode 3 --me star --no-open-gop --no-sao --limit-modes --input-res 1280x720 --input-depth 16 --fps 50000/1000 --output "Wacken-2016.h265" --input -

    Nun wie man schnell sieht handelt es sich um 10-Bit Material das in die x265.exe gepiped wird.
    Nur leider crashed avs2pipemod nach etwas mehr als 50% ... Und nein, Speicher war nur 1,6 GB allokiert. Kritisch ja, aber noch im "gelben" Bereich :D

    Nun ist meine Nächste Idee das Ganze mal mit ffmpeg zu versuchen. Doch wie geht's ?
    Oder anders gesagt, wie kann ich die 5 einzelnen .avs Scripte als "input" setzen und dann die x265 Optionen hinterher ?

    Super, das scheint zu klappen :)

    Code
    "C:\Program Files (x86)\Video Tools\ffmpeg-20161007-c45ba26-win64-static\bin\ffmpeg.exe" -i "org.dts" -f wav - | "C:\Program Files (x86)\Video Tools\qaac_2.58\qaac_2.58\x64\qaac64.exe" --ignorelength --no-delay -q 2 -V 91 - -o "track1.mp4"