[{"data":1,"prerenderedAt":473},["ShallowReactive",2],{"project-40646741":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":43,"post_text":46,"what":47,"said":105,"maker_in_thread":217,"shape":230,"grid":235,"attempts":427,"same_week":435,"maker_shows":33,"maker_hidden":465,"reader_version":466,"card":467},"40646741","Revideo","Create Videos with Code","title","Show HN: Revideo – Create Videos with Code","https:\u002F\u002Fgithub.com\u002Fredotvideo\u002Frevideo","github.com","hkonsti",1718117011,2024,298,76,208,3515,6,"legend","dev_tools","video rendering framework","library",[24,25,26,27],"programmatic video","typescript video","video rendering api","open source video editing","curious",0.188,{"positive":31,"neutral":32,"mixed":33,"critical":34},9,36,1,2,48,{"idea":37,"execution":39,"performance":40,"design":41,"docs":42},{"positive":34,"critical":38},0,{"positive":38,"critical":33},{"positive":38,"critical":38},{"positive":38,"critical":33},{"positive":38,"critical":38},[44,38,44,44,44,38,33,44,45,38,44,44,44,38,44,44,44,45,44,45,44,45,45,44,45,44,33,44,44,44,44,44,44,45,45,44,44,44,44,44],3,5,"Hey HN! We’re building Revideo (https:\u002F\u002Fgithub.com\u002Fredotvideo\u002Frevideo), an open source framework for programmatic video editing.\n\nRevideo lets you create video templates in Typescript and render them with dynamic inputs through an API. It also comes with a \u003CPlayer \u002F> component that lets you preview your projects in the browser and integrate video editing functionality into web apps.\n\nThe project is useful for anyone who wants to build apps that automate certain video editing tasks. A lot of companies in the space build their own custom stack for this, like Opus (https:\u002F\u002Fwww.opus.pro\u002F), which a",{"problem":48,"audience":57,"pricing":64,"motivation":72,"time_to_build":76,"stack":77,"openness":102,"stage":103,"team_size":104},{"value":49,"source":50,"evidence":51},"Automating video editing and creating videos from code, with browser preview","maker",[52,54],{"id":53},"post",{"id":55,"by":11,"text":56},"40651241","The fact that it is JS actually implies more than just being written in a different language. You can ship Revideo as part of your website and run it inside the browser. One of…",{"value":58,"source":50,"evidence":59},"Developers building apps that automate video editing or video creation",[60,61],{"id":53},{"id":62,"by":11,"text":63},"40650309","Certainly! You can pretty much build full video editors with Revideo. There are many companies with video-editing at the core of their product that could have been built with us…",{"value":65,"source":50,"evidence":66},"Free MIT-licensed framework; plans to sell a rendering service later",[67,68],{"id":53},{"id":69,"by":70,"text":71},"40650713","justusm","Revideo is different to Remotion.dev in a couple of ways: First, we use generator functions to describe the flow of animations - every yield within the generator function…",{"value":73,"source":50,"evidence":74},"Frustration with MoviePy and Remotion licensing; wanted a FOSS tool for AI-driven video apps",[75],{"id":53},null,[78,85,89,93],{"value":79,"source":50,"evidence":80},"TypeScript",[81,82],{"id":53},{"id":83,"by":11,"text":84},"40649350","This is unfortunately not something that is currently on the roadmap. Revideo mainly runs inside the browser which is why we built it entirely in Typescript. You can check out…",{"value":86,"source":50,"evidence":87},"HTML Canvas API",[88],{"id":53},{"value":90,"source":50,"evidence":91},"Motion Canvas (forked)",[92],{"id":53},{"value":94,"source":50,"evidence":95},"FFmpeg (server-side encoding)",[96,99],{"id":97,"by":11,"text":98},"40656474","Thanks! We're using a server side ffmpeg process for the encoding right now, so running a server is required for rendering. We are exploring fully client-side rendering too but…",{"id":100,"by":11,"text":101},"40649807","Encoding the video in the browser is on the roadmap, but currently we stream the frames one by one to an ffmpeg backend process and concatenate them into a video there. This has…","open_source","launched","team",{"praise":106,"objections":126,"requests":141,"questions":167,"alternatives":186},[107,118],{"value":108,"source":109,"evidence":110},"Open source MIT license is a clear advantage over Remotion","commenter",[111,114],{"id":112,"by":70,"text":113},"40656963","In the simplest form: Revideo is MIT-licensed. That basically means that you can do anything you want with our code - you can modify it, fork it, build commercial products,…",{"id":115,"by":116,"text":117},"40655710","probson","This looks very cool! I have built a project using remotion to bake in subtitles with some effects to a video from a .srt file, but this approach looks nicer and FOSS is amazing…",{"value":119,"source":109,"evidence":120},"Browser-based live preview is useful",[121,122],{"id":55,"by":11,"text":56},{"id":123,"by":124,"text":125},"40650062","earlyriser","I have used Revideo for a personal project and I really like what you're doing.",[127,137],{"value":128,"source":109,"evidence":129},"Forking Motion Canvas instead of using plugins or upstream changes",[130,134],{"id":131,"by":132,"text":133},"40656638","supermatt","You mention in your README that you had to fork it in order to make it so you could trigger renders programatically instead of having to click a button. Couldn't you have just…",{"id":135,"by":70,"text":136},"40657073","You can use the render function from motion canvas to trigger headless renders (which is what we do!) without forking the project. However, this is not the only change we made.…",{"value":138,"source":109,"evidence":139},"Server-side ffmpeg is required for rendering",[140],{"id":97,"by":11,"text":98},[142,149,160],{"value":143,"source":109,"evidence":144},"Python support",[145],{"id":146,"by":147,"text":148},"40649250","bobosha","python support?",{"value":150,"source":109,"evidence":151},"Client-side video encoding in browser",[152,156],{"id":153,"by":154,"text":155},"40649672","rjeli","Very cool! I assume it uses WebCodec VideoEncoder to encode in browser, maybe with a wasm ffmpeg fallback? How reliable\u002Feasy to use have you found that?",{"id":157,"by":158,"text":159},"40656425","mattdesl","Looks great. How are you encoding the video into MP4? Ffmpeg with wasm? Or WebCodecs? I’ve struggled to find a pure client-side encoder that is as fast, lightweight and high…",{"value":161,"source":109,"evidence":162},"Vue support",[163],{"id":164,"by":165,"text":166},"40651920","popalchemist","Does it work with vue\u002Fvite? I am really hoping someone will make such a solution some day.",[168,179],{"value":169,"source":109,"evidence":170},"How does it compare to Remotion",[171,175],{"id":172,"by":173,"text":174},"40650337","andrewstuart","How is this different to \u002F better than remotion.dev?",{"id":176,"by":177,"text":178},"40649236","pavi2410","I see that Revideo uses generator functions which seems intuitive to me as it linearizes frame sequences wrt time as the function yields. How does this compare to Remotion^ which…",{"value":180,"source":109,"evidence":181},"Can rendering run faster than playback",[182],{"id":183,"by":184,"text":185},"40656843","matsemann","Is it possible to render and export the video in browser, preferably faster than playback speed? Use case is a service where people can upload certain data and I use that to…",[187,195,206,210],{"value":188,"source":109,"evidence":189},"Remotion",[190,191],{"id":172,"by":173,"text":174},{"id":192,"by":193,"text":194},"40656657","mike31fr","> Remotion is pretty good, but we didn’t want to rely on it as it is not FOSS (source-available only). Noob question : How would you explain in the simplest form the difference…",{"value":196,"source":109,"evidence":197},"MoviePy",[198,202],{"id":199,"by":200,"text":201},"40651194","simonbarker87","How does this compare to MoviePy beyond the JSX like syntax and being JS?",{"id":203,"by":204,"text":205},"40656341","fanfanfly","Does Revideo equivalent with Pymovie or it has some advantages?",{"value":207,"source":109,"evidence":208},"Motion Canvas",[209],{"id":131,"by":132,"text":133},{"value":211,"source":109,"evidence":212},"VapourSynth \u002F AviSynth",[213],{"id":214,"by":215,"text":216},"40650462","liampulles","How does this compare to VapourSynth or AviSynth?",{"comments":218,"answered":219,"key":220},20,15,[221,224,227],{"id":222,"text":223},"40649409","I agree! We were definitely motivated by the emergence of AI tools for video when building Revideo - as mentioned in the post, we think that a lot of video creation can be…",{"id":225,"text":226},"40656277","Thank you, I'll try to disable it! I noticed the little yanks too but didn't know where to look and therefore didn't take the time to try and get rid of it. Just checked out the…",{"id":228,"text":229},"40651770","Thank you! As of now, many people use Revideo to programatically create Youtube videos (primarily entertainment content, think of AI generated memes and Youtube Shorts) and for…",{"commenters":231,"max_depth":232,"maker_replies":218,"first_comment_mins":233,"lifespan_hours":234},39,4,178,27,[236,240,241,245,249,251,254,255,257,260,263,265,267,269,271,272,276,279,281,284,285,288,291,293,296,298,300,303,305,309,311,315,317,322,324,328,330,332,334,337,340,342,344,348,350,351,355,357,359,360,365,367,369,371,372,374,376,380,382,384,385,388,390,392,395,397,401,405,407,410,412,416,418,422,424,426],[237,38,44,238,239,38],"40649290","project\u002Fneutral\u002Fidea","KhoomeiK",[222,38,38,238,11,33],[242,33,38,243,244,38],"40650770","other\u002Fneutral\u002Fnone","Beefin",[246,34,44,247,248,38],"40656022","project\u002Fmixed\u002Fexecution","franciscop",[225,34,38,250,11,33],"maker\u002Fneutral\u002Fexecution",[252,44,44,238,253,38],"40651517","thenorthbay",[228,44,38,238,11,33],[256,44,44,238,253,38],"40652015",[258,44,38,259,11,33],"40652147","maker\u002Fneutral\u002Fnone",[261,232,38,243,262,38],"40651837","sansseriff",[264,232,38,259,11,33],"40652022",[131,232,33,266,132,38],"project\u002Fcritical\u002Fexecution",[135,232,44,268,70,38],"project\u002Fneutral\u002Fexecution",[157,45,44,270,158,38],"project\u002Fneutral\u002Fperformance",[97,45,38,268,11,33],[273,18,45,274,275,38],"40651355","maker\u002Fpositive\u002Fnone","mvoodarla",[277,18,38,278,11,33],"40651482","commenter\u002Fneutral\u002Fnone",[192,280,38,243,193,38],7,[282,280,38,243,283,38],"40656948","LelouBil",[112,280,44,238,70,38],[286,280,38,278,287,38],"40657112","ramengrowth",[176,289,44,290,177,38],8,"project\u002Fneutral\u002Fdesign",[292,289,38,290,11,33],"40649330",[294,31,44,259,295,38],"40650461","hubraumhugo",[297,31,38,259,11,33],"40650603",[299,31,38,243,173,38],"40650926",[301,31,44,302,70,38],"40651083","maker\u002Fneutral\u002Fidea",[183,304,44,270,184,38],10,[306,307,44,259,308,38],"40655908",11,"rikroots",[310,307,44,290,70,38],"40656211",[312,313,44,238,314,38],"40652141",12,"creativenolo",[316,313,38,238,11,33],"40652231",[318,319,45,320,321,38],"40651288",13,"project\u002Fpositive\u002Fnone","epiccoleman",[323,319,38,278,11,33],"40651320",[325,326,44,290,327,38],"40649859",14,"ashia",[329,326,44,290,70,38],"40649998",[331,326,44,259,173,38],"40650808",[115,219,45,333,116,38],"project\u002Fpositive\u002Fidea",[335,219,44,336,70,38],"40655769","maker\u002Fneutral\u002Fdocs",[338,219,44,339,70,38],"40655866","project\u002Fneutral\u002Fdocs",[123,341,45,320,124,38],16,[343,341,38,278,70,38],"40650151",[345,346,45,320,347,38],"40652240",17,"Loiro",[153,349,44,268,154,38],18,[100,349,38,270,11,33],[352,353,45,333,354,38],"40656368",19,"albert_e",[356,353,44,238,70,38],"40656502",[358,218,44,238,173,38],"40650146",[62,218,38,238,11,33],[361,362,33,363,364,38],"40660721",21,"project\u002Fcritical\u002Fdesign","darepublic",[164,366,44,339,165,38],22,[368,366,38,278,11,33],"40652078",[199,370,44,290,200,38],23,[55,370,38,270,11,33],[203,373,44,238,204,38],24,[375,373,38,290,11,33],"40656434",[377,378,44,339,379,38],"40656202",25,"SquidJack",[381,378,44,339,70,38],"40656270",[172,383,44,238,173,38],26,[69,383,44,290,70,38],[386,383,44,270,387,38],"40653433","kgritesh",[389,383,38,278,173,38],"40653490",[391,383,38,270,11,33],"40655238",[393,234,45,320,394,38],"40650501","akio10",[396,234,45,274,70,38],"40650656",[398,399,45,274,400,38],"40653953",28,"LittleOtter",[402,403,44,290,404,38],"40655879",29,"hobofan",[406,403,44,290,70,38],"40655949",[214,408,44,409,215,38],30,"project\u002Fneutral\u002Fnone",[411,408,38,409,11,33],"40650842",[413,414,44,409,415,38],"40656993",31,"Jayakumark",[417,414,44,409,70,38],"40657093",[419,420,44,238,421,38],"40649306",32,"fiehtle",[423,420,38,238,11,33],"40649525",[146,425,44,409,147,38],33,[83,425,38,409,11,33],[428,431,434],{"id":429,"t":430,"points":289,"comments":38},"40038583",1713176063,{"id":432,"t":433,"points":34,"comments":38},"40113063",1713782835,{"id":4,"t":12,"points":14,"comments":15},[436,441,446,451,456,460],{"id":437,"name":438,"points":439,"category":440},"40632773","at.hn",459,"consumer_social",{"id":442,"name":443,"points":444,"category":445},"40635397","Probabilistic Tic-Tac-Toe",293,"games",{"id":447,"name":448,"points":449,"category":450},"40645743","Unforget",274,"productivity",{"id":452,"name":453,"points":454,"category":455},"40607889","sol-mate-eink",229,"hardware",{"id":457,"name":458,"points":459,"category":20},"40632533","mpa-archive",223,{"id":461,"name":462,"points":463,"category":464},"40623883","Inspectus",197,"ai",false,"v2",{"id":468,"name":5,"line":6,"ai":465,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":469,"top":18,"kw":470,"maker":11,"domain":10,"tier":19,"attempts":44,"strip":471,"url":9,"mix":472,"praise":108,"objection":128,"sub":21},40646741,0.19,[24,25,26,27],"3033301350333033353535535313333335533333",[31,32,33,34],1793991093555]