USF Alpha DirectShow Filter

  • Time/Frame:
    nein. Das wird nicht geschehen. Zeit ist erstens genauer und es sollte bei "echter Normwandlung" auch noch in anderen Fernsehnormen gelten, was bei frames nie der Fall sein wird.

    unmei Kontakt:
    du nutzt doch irc, oder? Dann kannst du ihn auch selber darauf ansprechen. irc://http://irc.corecodec.org/usf . Oder du schreibst ihm ein PN über das Forum.

    AC-Sama(Robert Vincenz)
    (werde für das -Chan zu alt :zunge: )

  • Na dann gehen diese Fragen natürlich gleich an den Hr. unmei!
    Und für mich ist Framebearbeitung genauer als ein Timecode.
    Sarkasmus.on
    Normwandlung macheich nicht, weil ich im 25/50fps Land lebe und nicht in einem, nach dem Komma xyz Wert :)
    Sarkasmus.off

    PS: IRC nix gut für mich. Da treiben sich zu viele Böse rum.

  • also für PAL ist es ja genau dasselbe ob nun timecode oder frame, framenummer*40ms und un einen "vernünftigen" timecode umwandeln. Für NTSC oder irgendwelche krummen frameraten ist's natürlich schon so dass die 1-Millisekunden-Auflösung in USF nicht absolut rundungsfrei ist - Aber ich glaube nicht dass das ein Problem ist. Der video frame ist ja auch dann noch ein paar millis derselbe, da kommts dann auch nicht draufan ob der subtitle frame der darübergelegt wird seinen effect für eine Zeit 0.5 ms zu früh oder zu spät gerendert hat. Dass ein untertitel auf einem frame angezeigt wird wo er nicht hingehört ist eigentlich ausgeschlossen, wenn ein subtitle laut skript um 05.000 anfängt und um 10.0000 aufhört, und eine applikation fordert einen untertitel mit timecode 04.999999 oder 10.000001, dann ist da nix. Der untertitel wird nie "nach vorn oder hinten gerundet". Wenn eine anwendung allerdings von sich aus untertitel für falsche timecodes anfordert, dann ist da natürlich kein kraut dagegen gewachsen:) Interne Rundungsfehler in pixifier sollten eigentlich auch kein problem sein - floats sind immer double und timecodes auch 64bit integer.

    Zudem: AFAIK, ist Matroska ja auch bei Video-Frames Timecode basiert, allerdings etwas mehr als millisekunden auflösung =) (nur so weil USF ja eigentlich "das matroska haus-untertitel-format" ist, obwohl man das nicht so sieht ;))


    Zur Fehlerbehandlung:

    Ich werde den code nicht gegen jeden Müll absichern, aber Attribute und Elemente dies nicht kennt, sollten es eigentlich nicht stören. Wenn du mal den skript-teil posten könntest der picsubu abschiesst obwohl es nur ganz normales, simples, gültiges xml (und ohne namespaces und so) ist... Eigentlich dachte ich, das werde einfach ignoriert, aber möglicherweise manchmal nicht..

    Andererseits kann es aber auch sein, das es crasht, gerade _weil_ es den effekt im image erkennt und zu verarbeiten versucht (dort aber für images noch buggy code rumliegt).

    Was ich aber nicht machen werde, ist versuchen dem XML parser zu helfen. Wenn der etwas nicht als XML akzepiert, dann lass ich das mal schön bleiben. Bei AviSynth hast du immerhin noch den Vorteil, das gerade das ganze script am Anfang eingelesen wird - so knallt VDM bei XML-Fehlern immerhin am Anfang runter und nicht nach X Stunden encoden (beim DS filter PixiShow wird das Skript nur häppchenweise vom Splitter in reingefüttert, so das es ab falschem XML auch mittendrin crashen kann).

    PS: es gibt keine verbotenen Tags/Attribute in USF, nur "XML das USF nicht kennt" ;P Ausser, naja, bei Werten von Attributen, wenn du natürlich sowas wie font-size="Arial" schreibts, weiss nicht wie gut das gegessen wird. Im besten Fall ignoriert, aber es kann auch dazu führen, dass so dann etwas "unterdefiniert" ist und deshalb nichts mehr geht.

  • Danke unmei für die Antwort... hier mal meine Sourcen...

    AviSynth:

    Code
    LoadPlugin("F:\Doom9\SUB_USF\picsubu.dll")BlankClip(length=300,width=768,height=576,fps=25,color=$FFCC33)PicSubU("F:\Doom9\SUB_USF\_CHCB10022.usf")


    USF:


    * Verhalten bei TimeCode 00:00:03.000 (effect="ZoomIn"):
    Avisynth read error: Avisynth: unknown exception
    ** Wenn ich den Effect rausnehme oder den keyframe position="50%" auf 0% setzte funktionierts.

    * Verhalten bei TimeCode 00:00:06.000 (effect="BlendIn"):
    Avisynth: caught an access violation at 0x03aae89c, attempting to read from 0x00000014

    Also es "raucht" erst ab der bestimmten Position ab.

  • Zitat

    <image (...)>F:\Doom9\SUB_USF\CHCB10022.jpg</image>

    so darf das eigentlich nicht gehen.. Pfade für files sind nicht erlaubt (aucht relativ nicht)

    der Rest.. ich werd mal reinschauen, eigentlich sind effekte für <image> nicht gerade zuoberst auf meiner liste.. Aber dass es borkt wegen erstem keyframe != 0%, das ist schlecht :) ..sollte ich wohl schnellstens anschauen (also wenn ich heimkomm..)

  • aber ohne Angabe von Pfaden hab ich sofort access violation, deshalb stehen sie ja auch drin.
    Das seltsame ist, bei reinem Text funktionieren ja die Effekte, wenn man von 0% anfängt. Ich würde ja auch gerne mit Zeit/Frames arbeiten, jedoch die Übergabe und die Auswertung von $start,$end geht gar nicht.
    Aber es sehr schön, das Du Dich darum kümmerst. Feine Sache.

  • Neues picsubu build auf corecodec, welches die meisten dieser Probleme beheben sollte.
    Eigentlich würde der core jetzt ein "Not Found" bildchen produzieren wenn ein <image> nicht gefunden wird, aber irgendwie crashd es in diesem Fall trotzdem in pucsubu - weiss nicht ob da AviSynth Probleme mit delph exception handling hat oder etwas komisches auf meiner Seite passiert, das ich nicht berücksichtigt hab...

    Jedenfalls sollte es jetzt auch ohn Pfad gehen wenn die Bilder im selben Folder sind wie das USF file. Und effects auch...

    Noch zu deinem skript:
    - weight="norm" gibt's nicht (aber "normal") (jaja, da wäre error handling auch angebracht ;))
    - Die Konstruktion im Effekt "BlendIn" ist ja süss, aber so geht das nicht :)
    Versuch mal <fontstyle alpha="50">
    (geht auch nur mit dem neuen build, vorher ignorierten <image>s den fonstyle-Teil eines Keyframe)
    - Effekt "ZoomOut": was du da mit der font-size machst geht nicht (also es scheint nicht zu crashen, aber es ist nicht legales USF). In einem Effekt musst du über alle keyframes entweder relative oder absolute font-sizes benützen, aber nicht mischen!
    (also entweder [-5...+5] oder [6 und grösser] )

    [edit]

    Zitat

    die Übergabe und die Auswertung von $start,$end geht gar nicht


    ??? (Was soll das sein/heissen)

  • das mit den Bildern und fontstyle alpha="*" funktioniert jetzt in der Animation. Obwohl mir nicht klar ist, warum Images über fontstyle verändert werden.

    zu $start,$end: in der USF_V100-LAST.txt von Euch stand es doch unter 3.3 effects drin...

    Aber mal zu einem anderen allg.Problem. Wie erstelle ich Subs mit der Richtigen Fontgröße und dem Resolution/PlayRes.
    AviSynth:

    Code
    LoadPlugin("picsubu.dll")LoadPlugin("VSFilter.dll")v1=ImageReader("Fontsize1.png",0,0,1).Loop(3)v2=ImageReader("Fontsize2.png",0,0,1).Loop(3)AlignedSplice(v1,v2)ConvertToYV12()PicSubU("F:\Doom9\SUB_USF\_Fontsize.usf")TextSub("F:\Doom9\SUB_USF\_Fontsize.ass")


    _Fontsize.usf:

    Code
    <USFSubtitles version="1.0"><metadata>	<author>		<name>katjarella</name>	</author>	<resolution x="640" y="480"></resolution></metadata><styles>	<style name="Default">		<fontstyle face="Georgia" size="48" color="#FFF8CFDC" weight="bold" italic="no" underline="no" strikeout="no" back-color="#FFE5DBF0" outline-color="#FF000000" outline-level="2" shadow-color="#FFFFFFFF" shadow-level="4" wrap="auto" />		<position alignment="TopCenter" horizontal-margin="20" vertical-margin="60" relative-to="Video" rotate-x="0" rotate-y="0" rotate-z="0" />	</style>	<style name="Default2">		<fontstyle face="Georgia" size="48" color="#FFF8CFDC" weight="bold" italic="no" underline="no" strikeout="no" back-color="#FFE5DBF0" outline-color="#FF000000" outline-level="2" shadow-color="#FFFFFFFF" shadow-level="4" wrap="auto" />		<position alignment="MiddleCenter" horizontal-margin="20" vertical-margin="20" relative-to="Video" rotate-x="0" rotate-y="0" rotate-z="0" />	</style></styles><subtitles>	<subtitle start="00:00:01.000" stop="00:00:02.000" >		<text style="Default">ABCDEFG<br/>abcdefg<br/>0123456789</text>	</subtitle>	<subtitle start="00:00:04.000" stop="00:00:05.000" >		<text style="Default2">ABCDEFG<br/>abcdefg<br/>0123456789</text>	</subtitle></subtitles></USFSubtitles>


    _Fontsize.ass:

    siehe das Ergebniss im vorschau.png (links picsubu, rechts VSFilter). Die anderen Bilder sind mit einem GrafikProgi, dem richtigen Fontsize 48 erstellt worden und 640x480. Bitte erklärt mir das mal DANKE.

  • Das Problem ist, das nicht definiert ist in was die Fontgröße angegeben wird(pt, px, % des Subtitle Bereichs). Ausserdem hat das resolution elemewnt im moment noch keine definierte auswirkung(wurde von Liisachan vorgeschlagen und einfach übernommen. Es wurde aber nicht gesagt was die auswirkungen sind. Liisachan wollte damit angeben in welcher auflösung die subs erstellt wurden. Nun könnte man denken das bei abweichender darstellungfläche entsprechen gescaled wird, aber das ist nicht definiert und auch noch nirgents implementiert.).

    AC-Sama(Robert Vincenz)
    (werde für das -Chan zu alt :zunge: )

  • also in picsubu scheint es egal zu sein. Jedoch nicht im VSFilter.

    picsubu: resolution x="256" y="192" & resolution x="1024" y="768"
    VSFilter: PlayResX:256 // PlayResY:192 & PlayResX:1024 // PlayResY:768

    Aber wenn es in USF nicht implementiert ist, warum ist dann die Schrift in picsubu sooo groß?

    Edit: Jetzt hab ich die Angabe mal mit 48px (Pixel) , 48pt (Point) oder 48% (Prozent) gemacht. Erstmal wird hier garnicht unterschieden (gleichgroß) und die Schrift ist viel zu klein.

  • Zitat

    Obwohl mir nicht klar ist, warum Images über fontstyle verändert werden.

    Is mir auch nicht so klar :) Ist schon im draft 0.16 so.., Verständlicher wird es wenn man die zwei style elemente <fontstyle> und <position> also die einzigen ansieht. Was sie im Moment ja auch sind -und ich seh keinen Grund das zu ändern-.
    Position ist alpha ja "so dem Gefühl nach" nicht, obwohl es als einziges fontstyle element auch direkt in <text>/<karaoke>/<image> erscheinen kann... es ist also ein art beides und keines richtig ..zB ist ein <text> mit alpha effekt cacheable, was normal nur mit position attributes geht - andererseits kann man damit auch inline markup betreiben, weils wie all fonstyle attribute in <font> erlaubt ist. Es gibt noch ein zweites "so blödes" attribute (diesmal in position), aber es fällt mir gerade nicht ein.

    Zu den $start $end $position ... ich glaub ich diesen absatz 3.3 noch nie vorher gesehen :O :s :x
    Jedenfalls ist mir da nich ganz klar was es soll, wenns nur für das position (zeit) attribute des keyframes ist, bracucht man das ja wohl nicht. Und wenns für rechnungen (nicht-primitive Ausdrücke) in anderen Attributen erlaubt wäre steht da nicht gerade viel wie das gehen soll. Vielleicht was das auch nur nicht zu ende gedacht und meint eigentlich nichts anderes als was man mit zeit angaben in der psition machen kann. Also <keyframe position="2.000">, der wird dann bei jeder "Anwendung" 2 sec nach der subtitle start-time erreicht - natürlich ausser wenn der sub kürzer als 2 sec ist.

    Zu den Fontgrössen/Auflösung

    kann ich eigentlich nicht viel sagen ausser was AC-Chan schon erwähnte. Pixifier ignoriert im Moment die resolution attribute. Ae wird einfach auf ein Canvas der Grösse
    gezeichnet die bein erstellen des objekts übergeben werden und kein skalierung findet statt. Ebenfalls sind für pixifier video resolution = window resolution = die resolution die ihm übergeben wird. Für picsubu ist das die grösse des video clips auf den picsubu angewendet wird.

    Picsubu hat auch ein Problem wenn du in VDM mit dem skript editor die auflösung änderst und mit F5 neu lädst - das funktioniert meist nicht und VDM muss ganz neu geladen werden damit die neue Auflösung auf picsubu übertragen wird.

    Bei den Fontgrössen lade ich einfach eine Windows LOGFONT bei der ich die grösse setze ..frag mich jetzt nicht ob das pixel oder points sind. Es ist aber scon so dass du mit "SSA-mässigen" Fontgrössen normal viel zu gross fährts ..manche leute haben ja 60 und mehr dort (warsch. wegen resolution 1280x960 oder so..), bei pixifier scheinen eher so Grössen um die 20-24 "normal".
    Ohne da zuhause pixel zu messen kann ich dir nicht sagen ob ich denke dass ich richtig lige oder zu gross bin. Aber skaliere ich ja bisher nichts, das sollte also eigentlich identisch mit anderen Windows Programmen sein :(

  • mm hab das post auf der neuen seite nich gesehen ...

    Zitat

    Edit: Jetzt hab ich die Angabe mal mit 48px (Pixel) , 48pt (Point) oder 48% (Prozent) gemacht. Erstmal wird hier garnicht unterschieden (gleichgroß) und die Schrift ist viel zu klein.


    Ja klar, weil einheiten nicht angegeben werden. Der parser versucht dann "48px" als integer einzulesen - das geht natürlich nicht und so nimmt er in all diesen fällen den default wert. Da picsub noch kein konfig fenster wie pixishow hat ist der default halt nicht veränderar und ich glaub so um 22 für font-size (vielleicht aber auch noch kleiner damit es einem auffällt wenn es auf den default zurückfällt)

Jetzt mitmachen!

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