[{"data":1,"prerenderedAt":574},["ShallowReactive",2],{"project-47847558":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":35,"aspects":36,"strip":45,"post_text":48,"what":49,"said":96,"maker_in_thread":232,"shape":244,"grid":249,"attempts":535,"same_week":536,"maker_shows":33,"maker_hidden":566,"reader_version":567,"card":568},"47847558","VidStudio","A browser based video editor that doesn't upload your files","title","Show HN: VidStudio, a browser based video editor that doesn't upload your files","https:\u002F\u002Fvidstudio.app\u002Fvideo-editor","vidstudio.app","kolx",1776772696,2026,301,109,147,4366,4,"legend","creative","browser video editor","web_app",[21,24,25,26,27],"client-side video editing","webcodecs","no upload video editor","ffmpeg wasm","curious",0.077,{"positive":31,"neutral":32,"mixed":33,"critical":34},9,24,1,7,41,{"idea":37,"docs":39,"execution":40,"performance":42,"privacy":43,"pricing":44},{"positive":33,"critical":38},0,{"positive":38,"critical":38},{"positive":38,"critical":41},2,{"positive":33,"critical":41},{"positive":33,"critical":38},{"positive":38,"critical":38},[33,46,46,38,38,38,46,47,38,38,46,38,46,46,46,38,41,46,38,38,38,33,47,38,47,33,46,46,38,38,47,33,38,18,33,47,46,47,47,46],3,5,"Hi HN,\nI built VidStudio, a privacy focused video editor that runs in the browser. I tried to keep it as frictionless as possible, so there are no accounts and no uploads. Everything is persisted on your\nmachine.\n\nSome of the features: multi-track timeline, frame accurate seek, MP4 export, audio, video, image, and text tracks, and a WebGL backed canvas where available. It also works on mobile.\n\nUnder the hood, WebCodecs handles frame decode for timeline playback and scrubbing, which is what makes seeking responsive since decode runs on the hardware decoder when the browser supports it.\nFFmpeg ",{"problem":50,"audience":56,"pricing":57,"motivation":63,"time_to_build":56,"stack":67,"openness":94,"stage":95,"team_size":94},{"value":51,"source":52,"evidence":53},"Editing video without uploading files to a server","maker",[54],{"id":55},"post",null,{"value":58,"source":52,"evidence":59},"Free",[60],{"id":61,"by":11,"text":62},"47862384","Free!",{"value":64,"source":52,"evidence":65},"Privacy-focused, frictionless editing that runs locally",[66],{"id":55},[68,72,76,80,84,88],{"value":69,"source":52,"evidence":70},"WebCodecs",[71],{"id":55},{"value":73,"source":52,"evidence":74},"FFmpeg compiled to WebAssembly",[75],{"id":55},{"value":77,"source":52,"evidence":78},"Pixi.js",[79],{"id":55},{"value":81,"source":52,"evidence":82},"IndexedDB",[83],{"id":55},{"value":85,"source":52,"evidence":86},"Web Workers",[87],{"id":55},{"value":89,"source":52,"evidence":90},"mp4box.js",[91],{"id":92,"by":11,"text":93},"47849022","So FFmpeg is part of the website in general but it is not used in the editor itself. I did built on top of the Video Codec APIs and ofc a muxer library like mp4box.js","unknown","launched",{"praise":97,"objections":128,"requests":165,"questions":185,"alternatives":205},[98,106,121],{"value":99,"source":100,"evidence":101},"Performance is impressive and persistence is transparent","commenter",[102],{"id":103,"by":104,"text":105},"47848422","DoctorOW","Let me just say the performance is absolutely incredible, and the persistence is so transparent. I actually was given access to an in-browser video editor that chokes pretty…",{"value":107,"source":100,"evidence":108},"Local-first, no uploads approach",[109,113,117],{"id":110,"by":111,"text":112},"47848571","kevmo314","Wild that apps used to be completely local, no accounts, no uploads, and we're back to that as a value prop.",{"id":114,"by":115,"text":116},"47849240","Unsponsoredio","Wild that privacy became a feature and not the default. Building in this space too and the no uploads needed angle is surprisingly hard to communicate to users who've been…",{"id":118,"by":119,"text":120},"47864140","zane__chen","Finally see a local first web based video editor. Cool thing!",{"value":122,"source":100,"evidence":123},"Useful compress and convert tools",[124],{"id":125,"by":126,"text":127},"47855634","Vachyas","I really like all the compress-to-X links at the bottom and the convert from X to Y tools. Especially the Discord one with presets for different target file sizes based on…",[129,144,154],{"value":130,"source":100,"evidence":131},"Codec support gaps, e.g. HEVC and 10-bit fail, especially in Firefox",[132,136,140],{"id":133,"by":134,"text":135},"47853668","dsalaj","I am really attracted to the idea of local running in-browser tools, since the website is then used only as a distribution medium which is super easy to use. And I really need…",{"id":137,"by":138,"text":139},"47858576","ArielTM","The hvc1 and 10-bit failures a few comments up aren't a FFmpeg-wasm fallback thing, they're a WebCodecs browser-gap. Firefox's HEVC path is partial and 10-bit paths are worse.…",{"id":141,"by":142,"text":143},"47848212","prhn","You probably already know this, but I could not import 10-bit video on Windows which I think would be fairly common among the target audience. ffmpeg supports decoding 10-bit…",{"value":145,"source":100,"evidence":146},"Possible LGPL licensing non-compliance for closed-source FFmpeg WASM use",[147,151],{"id":148,"by":149,"text":150},"47847898","elpocko","> FFmpeg compiled to WebAssembly handles final encode FFmpeg's license is the LGPL 2.1. VidStudio looks like closed source software, I couldn't see any indication that it's free…",{"id":152,"by":142,"text":153},"47848164","Closed source is fine, but there are a few other things that are required of LGPL, some of which are - Provide links to the source of the version of ffmpeg you used in your code…",{"value":155,"source":100,"evidence":156},"Long videos and memory limits hit browser ceilings",[157,161],{"id":158,"by":159,"text":160},"47852186","meerab","Congrats on shipping this! I went down the same path for https:\u002F\u002Fvideotobe.com, fully client-side with ffmpeg.wasm, and it fell over on longer videos. The memory ceiling and…",{"id":162,"by":163,"text":164},"47859407","alfg","Looks good. Good work on shipping! I love seeing video applications utilizing Web Assembly. However, it usually falls short in when it comes to longer video in the browser's…",[166,174,178],{"value":167,"source":100,"evidence":168},"Fix codec and audio decode support",[169,170],{"id":133,"by":134,"text":135},{"id":171,"by":172,"text":173},"47848158","spuzvabob","I've built a similar video editor and have been considering pure client side implementation vs transcoding into a known format beforehand, went with transcoding for wider format…",{"value":175,"source":100,"evidence":176},"Track reordering and moving clips between tracks",[177],{"id":103,"by":104,"text":105},{"value":179,"source":100,"evidence":180},"Subtitles and transcription",[181],{"id":182,"by":183,"text":184},"47850616","woodydesign","I love no accounts and no cloud a lot! Wondering if it support subtitle and transcript? It would be helpful for non-native speaker use case. Also, can you talk more about the use…",[186,194],{"value":187,"source":100,"evidence":188},"How is seeking and decoder lifecycle handled",[189,190],{"id":171,"by":172,"text":173},{"id":191,"by":192,"text":193},"47866166","paolatauru","webcodecs for timeline scrubbing is the right call. curious how you handle frame caching though - webcodecs decoder buffers are memory mapped and the browser can evict them when…",{"value":195,"source":100,"evidence":196},"How it compares to native FFmpeg performance",[197,201],{"id":198,"by":199,"text":200},"47851379","giancarlostoro","I worked on something similar for a relative who wanted to know if I could build something like this for them using Claude, and sure enough you can, I wound up having to ditch…",{"id":202,"by":203,"text":204},"47852596","j1elo","What is the performance difference between native FFmpeg and WebAssembly-translated FFmpeg running in a web browser?",[206,213,217,228],{"value":207,"source":100,"evidence":208},"omniclip",[209],{"id":210,"by":211,"text":212},"47848101","xnx","How does it compare to https:\u002F\u002Fomniclip.app\u002F or https:\u002F\u002Ftooscut.app ?",{"value":214,"source":100,"evidence":215},"tooscut",[216],{"id":210,"by":211,"text":212},{"value":218,"source":100,"evidence":219},"Remotion",[220,224],{"id":221,"by":222,"text":223},"47851736","mankins","I recently did something similar but as a Mac app. It sounds like a similar stack, but distributed as an app. FFmpeg (LGPL compilation). I haven't tried Pixi.js, looks…",{"id":225,"by":226,"text":227},"47852071","comicink","This is so cool - will try it out. Pure browser based video editing is ambitious. Are you using Remotion ?",{"value":229,"source":100,"evidence":230},"Premiere, iMovie, Final Cut",[231],{"id":182,"by":183,"text":184},{"comments":233,"answered":31,"key":234},21,[235,238,241],{"id":236,"text":237},"47848818","Thanks for sharing. Will look into it",{"id":239,"text":240},"47848317","Thank you for pointing this out, to be completely honest, I did not consider licensing because the website started as a collection of tools I built to run locally and get into…",{"id":242,"text":243},"47848639","I never maintained an open source project and not sure how to even do it properly. I am also not sure how much effort would I have to put to an open source project. I imagine I…",{"commenters":245,"max_depth":246,"maker_replies":233,"first_comment_mins":247,"lifespan_hours":248},68,8,35,319,[250,252,256,258,262,264,267,270,271,274,277,279,282,285,288,291,293,296,298,299,303,306,308,311,314,316,319,322,325,328,330,332,334,337,338,341,344,346,349,352,354,356,359,362,365,368,370,372,373,376,379,382,385,387,388,390,393,396,399,401,405,407,409,411,413,417,420,423,426,428,431,433,434,436,439,441,443,445,449,452,454,456,461,463,467,470,474,478,480,482,484,486,489,490,492,494,496,498,499,501,505,509,513,516,518,522,526,531,533],[148,38,33,251,149,38],"project\u002Fcritical\u002Fnone",[253,38,38,254,255,38],"47847993","commenter\u002Fneutral\u002Fnone","senko",[257,38,38,254,149,38],"47848172",[259,38,46,260,261,38],"47848476","project\u002Fneutral\u002Fnone","trinix912",[263,38,46,260,149,38],"47848595",[265,38,46,260,266,38],"47848660","actionfromafar",[268,38,38,269,255,38],"47848833","other\u002Fneutral\u002Fnone",[152,38,46,260,142,38],[272,38,38,254,273,38],"47848632","xixixao",[275,38,38,254,276,38],"47849466","circuit10",[278,38,38,269,199,38],"47852012",[280,38,38,269,281,38],"47859113","jaakl",[283,38,38,269,284,38],"47848802","mghackerlady",[286,38,38,254,287,38],"47849190","noduerme",[289,38,38,254,290,38],"47851187","maxloh",[292,38,38,269,199,38],"47851462",[294,38,46,260,295,38],"47848184","CodesInChaos",[236,38,38,297,11,33],"maker\u002Fneutral\u002Fnone",[239,38,38,297,11,33],[300,38,47,301,302,38],"47848370","project\u002Fpositive\u002Fidea","freedomben",[304,38,38,254,305,38],"47848435","netdevphoenix",[307,38,38,254,302,38],"47848523",[309,38,38,254,310,38],"47848555","mbesto",[312,38,38,254,313,38],"47849196","afavour",[315,38,38,254,310,38],"47851152",[317,38,38,254,318,38],"47854859","soperj",[320,38,38,254,321,38],"47851635","jpc0",[323,38,46,324,310,38],"47879854","project\u002Fneutral\u002Fdocs",[326,38,38,254,327,38],"47854302","socalgal2",[329,38,38,254,284,38],"47848836",[331,38,38,254,302,38],"47849685",[333,38,38,254,284,38],"47850143",[335,38,38,269,336,38],"47849691","sroussey",[242,38,38,297,11,33],[339,38,46,297,340,38],"47848814","Mashimo",[342,38,46,297,343,38],"47850429","qingcharles",[345,38,46,297,276,38],"47855729",[347,38,46,297,348,38],"47848955","jmaw",[350,38,38,351,11,33],"47849231","maker\u002Fpositive\u002Fnone",[353,38,46,260,287,38],"47849296",[355,38,38,269,163,38],"47859425",[357,38,38,269,358,38],"47851533","zenmac",[360,38,38,269,361,38],"47852189","pdyc",[363,38,46,260,364,38],"47848760","sreekanth850",[366,38,33,251,367,38],"47849881","whateveracct",[103,33,46,369,104,38],"project\u002Fmixed\u002Fexecution",[371,33,38,297,11,33],"47848766",[210,41,46,260,211,38],[374,41,46,260,375,38],"47848444","b1temy",[377,41,38,269,378,38],"47848734","bensyverson",[380,41,38,269,381,38],"47849722","vunderba",[383,41,38,269,384,38],"47850406","abdusco",[386,41,38,297,11,33],"47849062",[110,46,38,269,111,38],[389,46,38,269,11,33],"47848799",[391,46,38,269,392,38],"47851963","nomel",[394,46,38,269,395,38],"47849116","pjmlp",[397,46,33,251,398,38],"47849333","RajT88",[400,46,38,269,395,38],"47849941",[402,46,47,403,404,38],"47854496","project\u002Fpositive\u002Fnone","hiccuphippo",[137,18,46,406,138,38],"project\u002Fneutral\u002Fexecution",[408,18,38,297,11,33],"47862003",[410,18,38,254,138,38],"47870573",[114,47,38,412,115,38],"other\u002Fpositive\u002Fprivacy",[414,47,38,415,416,38],"47849473","other\u002Fneutral\u002Fprivacy","utopiah",[418,47,38,419,327,38],"47854356","other\u002Fcritical\u002Fprivacy",[158,421,47,422,159,38],6,"project\u002Fpositive\u002Fperformance",[424,421,38,425,11,33],"47862103","maker\u002Fneutral\u002Fperformance",[133,34,33,427,134,38],"project\u002Fcritical\u002Fexecution",[429,34,38,430,11,33],"47862255","maker\u002Fneutral\u002Fexecution",[432,34,38,430,11,33],"48013430",[125,246,47,403,126,38],[171,31,33,435,172,38],"project\u002Fcritical\u002Fperformance",[162,437,46,438,163,38],10,"project\u002Fneutral\u002Fperformance",[440,437,38,425,11,33],"47862059",[182,442,46,260,183,38],11,[444,442,38,297,11,33],"47862290",[446,447,38,415,448,38],"47848944",12,"kreco",[450,447,38,415,451,38],"47851448","senkora",[221,453,38,269,222,38],13,[455,453,38,297,11,33],"47864363",[457,458,47,459,460,38],"47861200",14,"project\u002Fpositive\u002Fprivacy","nopointttt",[462,458,38,425,11,33],"47861976",[464,465,38,269,466,38],"47850304",15,"lern_too_spel",[198,468,38,469,199,38],16,"other\u002Fneutral\u002Fperformance",[471,472,46,438,473,38],"47862426",17,"mehmetkeremmtl",[475,476,33,435,477,38],"47861448",18,"roxana_haidiner",[479,476,38,297,11,33],"47861955",[481,476,38,254,477,38],"47867819",[191,483,46,438,192,38],19,[118,485,47,403,119,38],20,[487,233,46,260,488,38],"47848943","jamiehugo30",[92,233,38,406,11,33],[141,491,33,427,142,38],22,[493,491,38,430,11,33],"47848386",[202,495,46,438,203,38],23,[497,495,38,438,11,33],"47862374",[225,32,47,403,226,38],[500,32,38,297,11,33],"47862392",[502,503,46,260,504,38],"47854950",25,"billconan",[506,507,47,351,508,38],"47863404",26,"pacovook",[510,511,38,269,512,38],"47848252",27,"Sergey777",[514,511,38,269,515,38],"47848438","bjord",[517,511,38,269,512,38],"47859585",[519,520,46,260,521,38],"47851637",28,"shardullavekar",[523,524,47,403,525,38],"47859093",29,"0x142857",[527,528,46,529,530,38],"47850813",30,"project\u002Fneutral\u002Fpricing","SilentM68",[61,528,38,532,11,33],"maker\u002Fneutral\u002Fpricing",[534,528,38,269,530,38],"47884286",[],[537,542,547,552,557,562],{"id":538,"name":539,"points":540,"category":541},"47808268","Smol machines",499,"dev_tools",{"id":543,"name":544,"points":545,"category":546},"47812341","interval-calculator",314,"learning_science",{"id":548,"name":549,"points":550,"category":551},"47807809","PanicLock",265,"security_privacy",{"id":553,"name":554,"points":555,"category":556},"47849097","GoModel",217,"infrastructure",{"id":558,"name":559,"points":560,"category":561},"47828896","trellis-mac",202,"ai",{"id":563,"name":564,"points":565,"category":561},"47823460","turboquant-wasm",163,false,"v2",{"id":569,"name":5,"line":6,"ai":566,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":570,"top":18,"kw":571,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":572,"url":9,"mix":573,"praise":99,"objection":130,"sub":21},47847558,0.08,[21,24,25,26,27],"1330003500303330230001505133005104153553",[31,32,33,34],1794036699106]