Tonverzerrung durch joining 32 kHz mit 48 kHz

  • Hallo ihr,

    hab jetzt selbst ein kleines Problem mit avisynth.

    Ich hab mehrere Avis mit Ton 32000 Hz und 16 Bit und das letzte hat 48000 Hz un 16 Bit. Es handelt sich dabei um DV-Material (interlaced).
    da ich mit Trim auch noch schneide würde ich den Ton gerne mit VD über das AVS-File als Wave speichern. So bleibt er synchron.
    Jetzt wird aber leider der Ton für das letzte AVI (48kHz) zu langsam abgespielt (auch im Mediaplayer).

    Wie kann ich jetzt erreichen , das sofort 48 kHz mit 16 Bit rauskommen und auch noch synchron das ganze (würde mir ne Umwandlung zusätzlich sparen)? Falls das nicht geht, wie krieg ich das hin, das der Ton in der richtigen geschwindigkeit abläuft?

    Hier mein Script.

    v0="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_00.avi"
    v1="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_01.avi"
    v2="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_02.avi"
    v3="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_03.avi"
    v4="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_04.avi"
    v5="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_05.avi"
    v6="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_06.avi"
    v7="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_07.avi"
    v8="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_08.avi"
    v9="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_09.avi"
    v10="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_10.avi"
    v11="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_11.avi"
    v12="D:\Video\DV-Out\Le_Jo_So2003_ges-CDV_12.avi"
    v13="D:\Video\DV-Out\Lena_Jonas_Keller-07_2003-CDV(AVI2).AVI" ##dieses hat 48kHz##
    AviSource(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13)
    #AssumeFrameBased()
    SeparateFields()
    BilinearResize(688,272,0,0,720,288)
    DoubleWeave().SelectOdd()
    Weave
    AddBorders(16,16,16,16)
    Trim(0,34298)+Trim(34305,41723)+Trim(41770,45495)+Trim(58370,73880)+Trim(73890,83289)+Trim(89450,93200)

    Danke schon im voraus.

    Gruss

    G-B

  • und schon hast Du ein 48kHz-Video mit synchronem Ton

  • Danke scharfis_brain,

    entweder ich war zu blöd zum suchen oder ich bin in zu vielen foren mit lesen beschäftigt. Irgendwie kommt mir das dann bekannt vor.

    Na ja, was würden wir Hobby-Avisynthler ohne dich und die anderen machen.

    Ach ja, da wär so ne Frage nebenbei.
    Die Parameter für das resizen sind aus F2D. Das eine ist die ursprüngliche größe das andere die resultierende. So nun was sind das für zwei nullen dazwischen.
    Manch einer hat bei der zweiten auch mal 0.75 stehen und ich meine etwas von Detailschärfe gelesen zu haben.
    Ich will natürlich meine Aussenaufnahmen so Scharf wie möglich haben.
    Vielleicht nimmst du (oder ein anderer) sich nochmal Zeit für nen kurzen Tip.

    Also Danke nochmals für die schnelle Hilfe.

    Gruss

    G-B

  • wenn dein Bild so scharf, wie moeglich sein soll,
    darfst Du GARNICHT resizen. um dennoch in den genuss der
    Macroblockblockoptimierung (16px schwarzer rand) zu kommen,
    reicht ein einfaches cropping mit folgendem addborders, wie folgt:

    anstatt
    SeparateFields()
    BilinearResize(688,272,0,0,720,288)
    DoubleWeave().SelectOdd()
    Weave
    AddBorders(16,16,16,16)

    reicht dann einfach
    crop(16,16,-16,-16)
    addborders(16,16,16,16)

    als netter nebeneffekt laeuft dein script um einiges schneller, da Du Dir das resizing sparst.

  • Zitat

    wenn dein Bild so scharf, wie moeglich sein soll,
    darfst Du GARNICHT resizen.

    Naja,eigentlich ist Lanczos ja ein Schaerfefilter...
    ...mit ihm sollte auch noch einiges an Schaerfe machbar sein gegenueber einem "ohne Resize"...

    Wenn du es ganz arg magst solltest du dich mal mit mf's SharpTools auseinander setzen..

  • scharfis_brain
    Na gut aber ich verlier dann Bildinformationen. Ich weis ja nicht wieviel Bitrate in den Rand-Macroblöcken verloren geht (denke nicht arg viel), aber dann kann ich auch einfach ohne Ränder encoden. Hab dann wenigstens am PC das ganze Bild.
    Muss ich mir noch überlegen.
    Ganz so kann ich das Script nicht ersetzen. Ich kann nur resize durch den Crop-Befehl ersetzen. Das ändern von BFF zu TFF brauch ich trotzdem.

    Hybrid
    Na gut die Geschwindigkeit mit Lanczos geht ja noch mal in den Keller. Macht nix. Aber wie sehen da denn die Parameter für aus bei Standard DV-Material?

    Gruss

    Gerhard

  • Ich weiss ja nicht, was Du fuer ein Zielformat erstellen willst.
    Ich gehe mal von DVD aus. Dann brauchst Du weder resizen noch croppen, da ja genuegend Bitrate zur verfuegung stehen sollte.
    IMO gilt: Niemals resizen, es sei denn es ist ZWINGEND notwendig!

    von bff nach tff gehts so:
    complementparity()
    assumetff()

  • Du liegst richtig. Es wird ne DVD.

    Aber erstens soll das ne Sammlung einzelner Kurzvideos meiner Kinder werden. Damit eben vielleicht bis zu 1,75 h lang.
    Und zweitens werde ich mir (bzw. meine Kinder) das eigentlich nur am Fernseher ansehen. Sprich die Bildinformation vom Rand hätte ich eben dann durch das resizen eben am fernseher im sichtbaren Bereich. Manche Dinge sind eben am Rand bzw. mein kleiner ist manchmal fast in die Kamera gekrabbelt und füllt das gesamte Bild.

    Deswegen mein wunsch.
    Resizen mit bester Qualität.

    Ach ja ich weis immer noch nicht was die ganzen Zahlen sollen.
    Reicht denn nicht

    LanczosResize(688,272)

    oder was passiert da.

    Passt zwar nicht mehr zum eigentichen Thread, aber na ja.

    Gruss

    Gerhard

    Edit: Danke für die Angaben zu BFF/TFF. Encode gerade nen Test und probiers aus.

  • hi g-b,

    lad dir einfach mal fitcd runter-das macht das noetigste fuer dich von selber(resizen,fields tauschen....)
    http://shh.dvdboard.de/
    sehr gutes gratis Programm sollte in keinem Haushalt fehlen!

    @scharfi
    wenn man zum beispiel mit dem CCE encoded halte ich es durchaus fuer notwendig Lanczos resize zu benutzen(war auch wenn ich mich recht entsinne eine emfehlung von mrbass...)Die Interlaced Struktur kannst du ja auch unberuerht lasssen(resize ohne das Bild zu verkleinern)

  • Zitat

    Die Interlaced Struktur kannst du ja auch unberuerht lasssen(resize ohne das Bild zu verkleinern)


    ich kann Dir nicht ganz folgen? ich soll den lanczosresize ohne groeszenveranederung ins script einbinden?
    Das haette zur folge, dass der lanczosresize garnichts macht, denn bei gleichen eingangs und ausgangsgroeszen werden die resizer intern auf passthrough gestellt.

  • hm...habs gerade getestet...
    ...hast recht:heul:
    aber er koennte doch auf 704x576 gehen..das tut der Zeilenstruktur ja auch nichts und Bitrate sparts auch noch

  • Zitat

    aber er koennte doch auf 704x576 gehen..das tut der Zeilenstruktur ja auch nichts und Bitrate sparts auch noch

    wenn Du mit Eierkoeppen leben kannst? ich jedenfalls nicht.
    720 und 704 pixel repraesentieren exakt das selbe aspect ratio, d.h.:
    704 pixel entsprechen bei 4:3 (Quadratische Pixel) 768 pixeln
    und
    720 pixel entsprechen bei 4:3 (Quadratische Pixel) 786 pixeln. d.h. bei 720 sieht man mehr, bzw. bei 720 wird den 704 pixeln noch ein rand von jeweils 8pixeln links und rechts gegeben.

  • Hallo scharfis_brain,


    bin jetzt endlich zu dem Test wegen der Fieldorder gekommen.
    Leider hab ich auf dem Fernseher dieses blöde flackern bei Bewegungen.

    Hier das verwendete Script:

    AviSource(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12).resampleaudio(48000) + Avisource(v13)
    #AssumeFrameBased()
    complementparity()
    assumetff()
    SeparateFields()
    LanczosResize(688,272,0,0,720,288)
    Weave
    AddBorders(16,16,16,16)

    Also trotz deiner Meinung durch die Befehle complementparity(), assumetff() kein bff.

    Muss dazu sagen, dass ich aus bekanntem Grund mit CCE 2.66 ohne den Haken bei Upper Fiel First encodiert habe.

    Kann es sein, dass ich die beiden Befehle am Ende anhängen müsste?

    Oder doch wie vorher, so wie ich es schon mehrfach gelesen habe?

    Gruss

    G-B

  • Versuchs mal so...(Interlaced Resize !ohne! bff->tff)

    Zitat

    AviSource(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v1 2).resampleaudio(48000) + Avisource(v13)
    SeparateFields()
    LanczosResize(688,272,0,0,720,288).Weave()
    AddBorders(16,16,16,16)

  • Leute,
    hab ich doch geschrieben.

    Ich krieg das typische Ruckeln am Fernseher.

    Der CCE Encoded nun mal nun TFF egal ob er mit BFF oder TFF gefüttert wird.
    Dadurch hat der Stream dann die falsche Fieldorder und Bewegungen ruckeln.

    Stellt man nun das beschriebene Upper Field First ein lässt er einfach die erste Zeile weg und schiebt alles nach oben. So weit ich weiß ist die letzt Zeile dann zweimal vorhanden. Das hilft mir mit meinen schwarzen Rändern dann auch nix wenn dann oben 15 Pixel und unten 17 sind.

    Natürlich könnte ich bei Addborder auch oben 17 und unten 15 machen dann müsste es stimmen.
    Bin mir ertens nicht ganz sicher und zweitens ists mit Avisynth die bessere Methode.

    Gruss

    G-B

  • Wenn ichs mit Doublewaeve() und SelectOdd() gemacht hab war ja auch kein ruckeln da.
    Jetzt mit dem angegebenem Script ist es wie wenn ich gar nix mach. Also BFF lasse wies ist.

    Muss ich vielleicht bei deinen Befehlen zuerst SeparateFields()
    ausführen damit es funktioniert.

    Wie gesagt ist als hätt sich die Fieldorder nicht verändert.

    G-B

Jetzt mitmachen!

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