[{"data":1,"prerenderedAt":287},["ShallowReactive",2],{"project-44123098":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":40,"post_text":42,"what":43,"said":67,"maker_in_thread":153,"shape":155,"grid":160,"attempts":250,"same_week":251,"maker_shows":33,"maker_hidden":279,"reader_version":280,"card":281},"44123098","Typed-FFmpeg","Typed-FFmpeg 3.0–Typed Interface to FFmpeg and Visual Filter Editor","title","Show HN: Typed-FFmpeg 3.0–Typed Interface to FFmpeg and Visual Filter Editor","https:\u002F\u002Fgithub.com\u002Flivingbio\u002Ftyped-ffmpeg","github.com","lucemia51",1748492591,2025,342,41,142,3837,4,"legend","dev_tools","ffmpeg python library","library",[24,25,26,27],"ffmpeg","python typed","filter graph","ffmpeg python","mixed",0.194,{"positive":31,"neutral":32,"mixed":33,"critical":32},7,3,1,14,{"idea":36,"execution":37,"design":39},{"positive":32,"critical":33},{"positive":38,"critical":33},0,{"positive":33,"critical":33},[41,38,38,38,38,38,38,38,38,38,38,33,33,33,38,41,38,38,38,38,38,38,41,38,32,32,32,41,32,38,41,41,41,38,38],5,"Hi HN,\n\nI built typed-ffmpeg, a Python package that lets you build FFmpeg filter graphs with full type safety, autocomplete, and validation. It’s inspired by ffmpeg-python, but addresses some long-standing issues like lack of IDE support and fragile CLI strings.\n\nWhat’s New in v3.0:  •  Source filter support (e.g. color, testsrc, etc.)  •  Input stream selection (e.g. [0:a], [1:v])  •  A new interactive playground where you can:  • Build filter graphs visually  • Generate both FFmpeg CLI and typed Python code  • Paste existing FFmpeg commands and reverse-parse them into graphs\n\nPlayground link",{"problem":44,"audience":50,"pricing":54,"motivation":55,"time_to_build":54,"stack":59,"openness":64,"stage":65,"team_size":66},{"value":45,"source":46,"evidence":47},"Building FFmpeg filter graphs as CLI strings is fragile and lacks IDE support","maker",[48],{"id":49},"post",{"value":51,"source":46,"evidence":52},"Python developers and people learning FFmpeg",[53],{"id":49},null,{"value":56,"source":46,"evidence":57},"Address issues with ffmpeg-python such as lack of IDE support and fragile CLI strings",[58],{"id":49},[60],{"value":61,"source":46,"evidence":62},"Python",[63],{"id":49},"open_source","launched","unknown",{"praise":68,"objections":88,"requests":110,"questions":129,"alternatives":134},[69,77],{"value":70,"source":71,"evidence":72},"Good idea for typing FFmpeg, could help people understand complex CLI tools","commenter",[73],{"id":74,"by":75,"text":76},"44124976","cb321","It is underappreciated that every single command-line option parser\u002Ftoolkit is its own full configuration language with individual tools being \"programs\u002Fconfigs\" in that…",{"value":78,"source":71,"evidence":79},"Visual filter editor is impressive",[80,84],{"id":81,"by":82,"text":83},"44125555","dejobaan","The visual tool seems especially fantastic. FFMPEG seems an example of where modular\u002Fvisual programming could really help, since I don't know all the bits FFMPEG offers. Minor UX…",{"id":85,"by":86,"text":87},"44132422","userbinator","It took this long for someone to finally come up with something resembling MS' DirectShow GraphEdit.",[89,100,106],{"value":90,"source":71,"evidence":91},"String arguments for numeric parameters undermine the type safety claim",[92,96],{"id":93,"by":94,"text":95},"44147208","kopf","Can you explain to me why, despite \"full type safety, autocomplete and validation\" being the focus of \"typed-ffmpeg\", it makes sense to be passing width and height (or the x and…",{"id":97,"by":98,"text":99},"44147696","BGZq7","I think the issue is those aren't integers, they are ffmpeg expressions evaluating to integers. See e.g. this example from the ffmpeg documentation: ``` Draw a 2-pixel red 2.40:1…",{"value":101,"source":71,"evidence":102},"Missing support for source filters without inputs and arbitrary source filters",[103],{"id":104,"by":98,"text":105},"44123606","This is interesting, and it's good to see something that's actively developed, but it seems to have some of the same issues as ffmpeg-python: - It doesn't appear to have any way…",{"value":107,"source":71,"evidence":108},"No way to pass flags to Popen for ffprobe on Windows",[109],{"id":104,"by":98,"text":105},[111,122],{"value":112,"source":71,"evidence":113},"TypeScript version",[114,118],{"id":115,"by":116,"text":117},"44123296","yurifury","Great idea. Personally looking forward to a typescript version of this.",{"id":119,"by":120,"text":121},"44124280","matt-attack","I agree would love to see a typescript version.",{"value":123,"source":71,"evidence":124},"Support for piping frames between commands",[125],{"id":126,"by":127,"text":128},"44127989","mertleee","This is cool, but does it support piping frames between entire commands? In my opinion that's when you start to unlock the most interesting forms of FFMpeg flows.",[130],{"value":131,"source":71,"evidence":132},"Can arbitrary source filters be used like vfilter\u002Fafilter?",[133],{"id":104,"by":98,"text":105},[135,139,146],{"value":136,"source":71,"evidence":137},"ffmpeg-python",[138],{"id":104,"by":98,"text":105},{"value":140,"source":71,"evidence":141},"Vapoursynth",[142],{"id":143,"by":144,"text":145},"44128505","Daiz","If you're going to do script-based video processing in Python, I would highly recommend just going straight for Vapoursynth[1] instead. It's built for the purpose from the ground…",{"value":147,"source":71,"evidence":148},"Other visual FFmpeg editors such as newbeelearn video editor",[149],{"id":150,"by":151,"text":152},"44128213","pdyc","this is great! let me plug my tool as well, in case you want to edit videos visually you can also use this tool https:\u002F\u002Fnewbeelearn.com\u002Ftools\u002Fvideoeditor\u002F it generates ffmpeg…",{"comments":38,"answered":38,"key":154},[],{"commenters":156,"max_depth":157,"maker_replies":38,"first_comment_mins":158,"lifespan_hours":159},23,9,13,159,[161,163,167,169,172,174,176,179,181,183,185,187,189,192,194,195,196,199,201,203,206,208,210,211,215,219,223,226,228,229,231,235,239,243,247],[74,38,41,162,75,38],"project\u002Fpositive\u002Fidea",[164,38,38,165,166,38],"44126400","commenter\u002Fneutral\u002Fnone","plussed_reader",[168,38,38,165,75,38],"44126918",[170,38,38,165,171,38],"44127576","aidenn0",[173,38,38,165,75,38],"44128337",[175,38,38,165,171,38],"44128468",[177,38,38,165,178,38],"44131075","sedatk",[180,38,38,165,75,38],"44134329",[182,38,38,165,178,38],"44139691",[184,38,38,165,75,38],"44140253",[186,38,38,165,178,38],"44184491",[104,33,33,188,98,38],"project\u002Fcritical\u002Fexecution",[143,190,33,191,144,38],2,"project\u002Fcritical\u002Fidea",[93,32,33,193,94,38],"project\u002Fcritical\u002Fdesign",[97,32,38,165,98,38],[115,18,41,162,116,38],[197,18,38,165,198,38],"44123314","CyberDildonics",[200,18,38,165,116,38],"44123360",[202,18,38,165,198,38],"44127683",[204,18,38,165,205,38],"44128170","internetter",[207,18,38,165,198,38],"44128247",[209,18,38,165,116,38],"44143962",[119,18,41,162,120,38],[212,18,38,213,214,38],"44124855","other\u002Fneutral\u002Fnone","teaearlgraycold",[216,18,32,217,218,38],"44131453","project\u002Fneutral\u002Fexecution","barake",[220,41,32,221,222,38],"44125242","project\u002Fneutral\u002Fidea","ape4",[81,224,32,225,82,38],6,"project\u002Fmixed\u002Fdesign",[85,224,41,227,86,38],"project\u002Fpositive\u002Fdesign",[126,31,32,221,127,38],[150,230,38,213,151,38],8,[232,157,41,233,234,38],"44123169","project\u002Fpositive\u002Fnone","TechDebtDevin",[236,237,41,233,238,38],"44124042",10,"pietz",[240,241,41,233,242,38],"44123580",11,"mikelinsi",[244,245,38,213,246,38],"44123733",12,"pbmahol",[248,245,38,213,249,38],"44133002","chrisallick",[],[252,257,262,266,270,275],{"id":253,"name":254,"points":255,"category":256},"44157177","Kan.bn",509,"productivity",{"id":258,"name":259,"points":260,"category":261},"44126612","Command Line Handbook",454,"learning_science",{"id":263,"name":264,"points":265,"category":20},"44127653","Onlook",408,{"id":267,"name":268,"points":269,"category":20},"44159758","Vanta",265,{"id":271,"name":272,"points":273,"category":274},"44147803","Patio",255,"web_saas",{"id":276,"name":277,"points":278,"category":20},"44174190","AirAP AirPlay server",207,false,"v2",{"id":282,"name":5,"line":6,"ai":279,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":283,"top":18,"kw":284,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":285,"url":9,"mix":286,"praise":70,"objection":90,"sub":21},44123098,0.19,[24,25,26,27],"50000000000111050000005033353055500",[31,32,33,32],1794036675813]