{"id":976,"date":"2026-11-05T13:32:52","date_gmt":"2026-11-05T05:32:52","guid":{"rendered":"https:\/\/en.meishesdk.com\/blog\/?p=976"},"modified":"2026-11-05T13:32:52","modified_gmt":"2026-11-05T05:32:52","slug":"meishe-make-videos-programmatically-2","status":"publish","type":"post","link":"https:\/\/en.meishesdk.com\/blog\/976.html","title":{"rendered":"Meishe Make Videos Programmatically"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">&#8220;Make videos programmatically&#8221; is the whole idea in three words: describe a video as data or code, hand that description to an engine, and get finished video back \u2014 no editing suite, no clicking, no render button babysitting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Meishe&#8217;s product line is built around exactly that loop. A C++ audio\/video engine \u2014 the same core that has powered Meishe&#8217;s native SDKs across mobile and desktop \u2014 compiled to WebAssembly for the browser, paired with a server-side rendering pipeline and a JSON project format that ties everything together. Code is the source of truth; the video is the output.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Three Ways to Command the Same Engine<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Programmatic video tools usually give you one door: an API, or a framework, or an editor. Meishe gives you three, all speaking the same project format:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. JSON \u2014 videos as data.<\/strong><br>A Meishe project is a JSON document: clips on tracks, text with timing, effects with parameters, audio at volumes. Feed that document to the rendering pipeline and video comes out. The server-side rendering JSON examples show complete, parseable payloads \u2014 timelines, transitions, captions, stickers, watermarks \u2014 that run as-is against the synthesis API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. APIs \u2014 videos as function calls.<\/strong><br>Wrap the JSON in your backend: build payloads from your data, submit synthesis tasks, poll for completion, deliver files. One engine handles validation, queueing, and rendering; your code handles business logic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. The editor \u2014 videos people can touch.<\/strong><br>The same project format opens in a full interactive timeline editor: multi-track, drag-and-drop, trimming, keyframes. Automation and human editing share one source of truth, so a template output and a user draft are the same kind of object.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That third door is what makes the first two stronger. Most programmatic video systems are render-only: when a human needs to adjust the output, the pipeline has no answer. Here, the machine&#8217;s output is the editor&#8217;s input \u2014 the loop closes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/en.meishesdk.com\/blog\/wp-content\/uploads\/2026\/11\/202611050532358.jpg\" alt=\"Meishe Make Videos Programmatically\" title=\"Meishe Make Videos Programmatically\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"572\" src=\"https:\/\/en.meishesdk.com\/blog\/wp-content\/uploads\/2026\/11\/202611050532358-1024x572.jpg\" alt=\"Meishe Make Videos Programmatically\" alt=\"\" class=\"wp-image-977\" srcset=\"https:\/\/en.meishesdk.com\/blog\/wp-content\/uploads\/2026\/11\/202611050532358-1024x572.jpg 1024w, https:\/\/en.meishesdk.com\/blog\/wp-content\/uploads\/2026\/11\/202611050532358-300x168.jpg 300w, https:\/\/en.meishesdk.com\/blog\/wp-content\/uploads\/2026\/11\/202611050532358-768x429.jpg 768w, https:\/\/en.meishesdk.com\/blog\/wp-content\/uploads\/2026\/11\/202611050532358-1536x858.jpg 1536w, https:\/\/en.meishesdk.com\/blog\/wp-content\/uploads\/2026\/11\/202611050532358.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Two Modes, One Platform<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The interactive editor and the programmatic pipeline aren&#8217;t two products bundled together \u2014 they&#8217;re two front doors to the same engine, speaking the same project format. A team can run pure automation (JSON in, video out, no UI ever mounted), pure interactive editing, or both: templates generated by pipeline, refined by users in the embedded editor, re-rendered by pipeline. Switch workflows at any time; code remains the source of truth either way.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And the deployment follows the same flexibility: the SDK and rendering pipeline run on your own infrastructure \u2014 on-premise servers or your private cloud. Nothing about your media, your projects, or your rendering jobs passes through anyone else&#8217;s machines. For teams in regulated industries or with strict data policies, programmatic video doesn&#8217;t have to mean handing content to a vendor: the whole stack deploys inside your perimeter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What &#8220;Programmatically&#8221; Buys You<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The point of describing videos as data isn&#8217;t technical elegance. It&#8217;s what becomes possible:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Volume.<\/strong>&nbsp;One template plus a catalog feed equals a thousand product videos overnight. The batch pipeline \u2014 a task scheduler dispatching to compile and transcode workers \u2014 starts on a single server and grows to a multi-worker or Kubernetes cluster without changing how your app submits tasks. The batch rendering docs map the full deployment path.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consistency.<\/strong>&nbsp;Every video renders from the same engine with the same behavior \u2014 the layout, the timing, the transitions \u2014 whether it renders in a browser, on a server, or on a phone. Deterministic output means &#8220;render it again&#8221; means &#8220;the same video.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Personalization.<\/strong>&nbsp;Because the project is data, generating variants is data manipulation: swap the text field, point the clip URL at a different asset, adjust the duration. A\/B variants, per-customer cuts, localized versions \u2014 all the same pipeline.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Speed to change.<\/strong>&nbsp;Marketing wants the end card to hold half a second longer? Change one value in the template, re-render. No timeline surgery, no editor round-trip.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Engine Underneath<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">What separates an engine-driven approach from a template service is the layer below the JSON:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Broadcast-grade media stack:<\/strong>\u00a0multi-track audio with EQ, keyframes and B\u00e9zier speed curves, professional color, 8K\/HDR support<\/li>\n\n\n\n<li><strong>AI built in:<\/strong>\u00a0speech-to-captions, background removal and portraits, beauty \u2014 invocable as pipeline steps, not integrations to assemble<\/li>\n\n\n\n<li><strong>An effects ecosystem:<\/strong>\u00a0filters, transitions, stickers, AR effects as installable asset packages (browse the library)<\/li>\n\n\n\n<li><strong>The same core compiled everywhere:<\/strong>\u00a0WebAssembly in the browser, native on iOS\/Android\/desktop, server workers in the render farm \u2014 one project format, every platform<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For teams building with AI agents, the same surfaces agents need \u2014 JSON in, video out, deterministic rendering \u2014 are the surfaces Meishe exposes. The agent skills catalog shows the SDK&#8217;s capabilities wrapped for coding agents across platforms.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Where the Loop Closes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The shortest path to seeing the loop run: the editor demo puts the engine in your browser \u2014 scrub a timeline, feel the responsiveness, then remember every interaction there is also an API call and a JSON field. The overall process documentation walks the server side end to end: environment, task submission, rendering, delivery.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Make videos programmatically \u2014 with an engine that also lets people make videos personally. That combination is the whole product.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Make videos programmatically&#8221; is the whole idea in three words: describe a video as data or code, hand that description to an engine, and get finished video back \u2014 no editing suite, no clicking, no render button babysitting. Meishe&#8217;s product line is built around exactly that loop. A C++ audio\/video engine \u2014 the same core [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":977,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[155,4,12],"class_list":["post-976","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-video-editor-sdk","tag-make-videos-programmatically","tag-meishe","tag-video-editing"],"_links":{"self":[{"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/posts\/976","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/comments?post=976"}],"version-history":[{"count":1,"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/posts\/976\/revisions"}],"predecessor-version":[{"id":978,"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/posts\/976\/revisions\/978"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/media\/977"}],"wp:attachment":[{"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/media?parent=976"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/categories?post=976"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/en.meishesdk.com\/blog\/wp-json\/wp\/v2\/tags?post=976"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}