<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 王瑞</title>
    <description>The latest articles on DEV Community by 王瑞 (@_ed179994b6c24a61b5e3db).</description>
    <link>https://dev.to/_ed179994b6c24a61b5e3db</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4208689%2F5b67285d-6c7e-4480-8c59-456637d6fb10.png</url>
      <title>DEV Community: 王瑞</title>
      <link>https://dev.to/_ed179994b6c24a61b5e3db</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_ed179994b6c24a61b5e3db"/>
    <language>en</language>
    <item>
      <title>Building a One-Photo Concert Tool: The Work Around the Video Model</title>
      <dc:creator>王瑞</dc:creator>
      <pubDate>Mon, 26 Oct 2026 12:49:05 +0000</pubDate>
      <link>https://dev.to/_ed179994b6c24a61b5e3db/building-a-one-photo-concert-tool-the-work-around-the-video-model-3khc</link>
      <guid>https://dev.to/_ed179994b6c24a61b5e3db/building-a-one-photo-concert-tool-the-work-around-the-video-model-3khc</guid>
      <description>&lt;p&gt;I built &lt;a href="https://ai-tinydesk.com/" rel="noopener noreferrer"&gt;AI Tiny Desk&lt;/a&gt;, a paid one-photo concert generator for the Tiny Desk AI format. The site runs TypeScript with Hono on Cloudflare Workers, D1 for task and credit state, private Backblaze B2 storage, and PayPal/Waffo checkout. This post describes the implementation we actually shipped, rather than substituting a more familiar Next.js/R2/Stripe stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  One input, five roles
&lt;/h2&gt;

&lt;p&gt;The user uploads one consenting adult portrait. That person becomes the lead in two shots; the prepared band retains four fictional identities. Separating dynamic shots from fixed band shots reduced the number of already-approved sections we needed to regenerate.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Time in accepted sample&lt;/th&gt;
&lt;th&gt;Shot&lt;/th&gt;
&lt;th&gt;Identity rule&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0–1.375 s&lt;/td&gt;
&lt;td&gt;Opening singer&lt;/td&gt;
&lt;td&gt;Uploaded adult portrait&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1.375–6.667 s&lt;/td&gt;
&lt;td&gt;Keyboard and backing vocals&lt;/td&gt;
&lt;td&gt;Fixed fictional band&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6.667–13 s&lt;/td&gt;
&lt;td&gt;Singer close-up&lt;/td&gt;
&lt;td&gt;Same portrait as the opening&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13–16.375 s&lt;/td&gt;
&lt;td&gt;Saxophone; keyboard in corner&lt;/td&gt;
&lt;td&gt;Keep these two people distinct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16.375–19.042 s&lt;/td&gt;
&lt;td&gt;Backing group&lt;/td&gt;
&lt;td&gt;Reuse the prepared band&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Reliability spans several independent states
&lt;/h2&gt;

&lt;p&gt;A provider submission is not a finished file. A finished file is not proof of a correct face. A restored credit is not a cash refund. Our UI and support process keep these distinctions visible. Users sign in with Google or an email code, buy one-time credits, and reopen their result from their account.&lt;/p&gt;

&lt;p&gt;The concert route uses Seedance 2.0 Mini through EvoLink. The model output is silent; browser-side Mediabunny remuxing prepares the sound copy. We keep the silent download available, including when sound preparation fails.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small test log, not a benchmark
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Check on October 26, 2026&lt;/th&gt;
&lt;th&gt;Observed result&lt;/th&gt;
&lt;th&gt;Evidence scope&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mixed lead reference, Seedance 2.0 Mini&lt;/td&gt;
&lt;td&gt;Close-up replaced; opening still showed the old lead&lt;/td&gt;
&lt;td&gt;Developer visual review; not a pass-rate study&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Isolated opening, first submission&lt;/td&gt;
&lt;td&gt;Duration validation failed&lt;/td&gt;
&lt;td&gt;Provider status recorded failure; no output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Isolated opening, corrected reference&lt;/td&gt;
&lt;td&gt;Completed in 116 seconds&lt;/td&gt;
&lt;td&gt;Provider reported duration for this one task only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19-second Kling O3 edit experiment&lt;/td&gt;
&lt;td&gt;Rejected for input duration&lt;/td&gt;
&lt;td&gt;Failed experiment; not our production model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser audio remux&lt;/td&gt;
&lt;td&gt;459 encoded video packets unchanged in the production fixture&lt;/td&gt;
&lt;td&gt;Local accepted-sample comparison; not a buyer transaction&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Audio alignment needs a known offset
&lt;/h2&gt;

&lt;p&gt;The complete operator-provided source is aligned from the opening shot, while the video packets remain unchanged. This command illustrates the same sequencing for a local file you are permitted to use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Use your own permitted source audio, aligned to the video start.&lt;/span&gt;
ffmpeg &lt;span class="nt"&gt;-i&lt;/span&gt; supplied-video.mp4 &lt;span class="nt"&gt;-vn&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-af&lt;/span&gt; &lt;span class="s2"&gt;"apad=whole_dur=19.25"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-t&lt;/span&gt; 19.25 &lt;span class="nt"&gt;-c&lt;/span&gt;:a aac &lt;span class="nt"&gt;-b&lt;/span&gt;:a 160k aligned-audio.m4a
ffmpeg &lt;span class="nt"&gt;-i&lt;/span&gt; silent-render.mp4 &lt;span class="nt"&gt;-i&lt;/span&gt; aligned-audio.m4a &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-map&lt;/span&gt; 0:v:0 &lt;span class="nt"&gt;-map&lt;/span&gt; 1:a:0 &lt;span class="nt"&gt;-c&lt;/span&gt;:v copy &lt;span class="nt"&gt;-c&lt;/span&gt;:a copy &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-shortest&lt;/span&gt; &lt;span class="nt"&gt;-movflags&lt;/span&gt; +faststart output.mp4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One practical lesson: measure the input that the provider actually receives. Inspect duration and stream metadata before spending another paid attempt. Another is to inspect the opening and close-up independently; a convincing face in the middle of a clip can hide a failed first shot.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://ai-tinydesk.com/tiny-desk-ai-prompt/" rel="noopener noreferrer"&gt;prompt guide&lt;/a&gt; and &lt;a href="https://ai-tinydesk.com/how-to-make-tiny-desk-ai/" rel="noopener noreferrer"&gt;creation tutorial&lt;/a&gt; document the workflow without exposing private inputs, task URLs, or customer information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product facts and limits
&lt;/h2&gt;

&lt;p&gt;AI Tiny Desk uses ByteDance Seedance 2.0 Mini through EvoLink for the concert workflow. Standard generation is 480p. The output is approximately 19 seconds in vertical MP4. One credit makes a Standard concert; one-time packs are $9.99 / 1 credit, $19.99 / 3 credits, and $29.99 / 5 credits. Credits do not expire. Confirmed generation failures restore credits, while cash refunds and serious visual defects have separate &lt;a href="https://ai-tinydesk.com/refunds" rel="noopener noreferrer"&gt;refund terms&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The current sound version uses performance audio supplied by the site operator including the complete original opening. A silent copy remains available. Buying credits does not grant music rights. We support one consenting adult per input; we do not advertise pet or child support. We do not guarantee exact likeness, a render deadline, search rankings, or that an uploaded photo will pass a model's safety checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources and disclosure
&lt;/h2&gt;

&lt;p&gt;We built and operate &lt;a href="https://ai-tinydesk.com/" rel="noopener noreferrer"&gt;AI Tiny Desk&lt;/a&gt;; this is our own development write-up, not an independent review. Test portraits and our demo band are fictional adults. The tool is independent of NPR, Charlie Wilson, The Gap Band, TikTok, and CapCut. AI assisted the preparation of this write-up; technical statements were checked against our source code and saved test artifacts.&lt;/p&gt;

&lt;p&gt;The original performance is &lt;a href="https://www.youtube.com/watch?v=J3jUEB7qmt8" rel="noopener noreferrer"&gt;Charlie Wilson's NPR Music Tiny Desk Concert&lt;/a&gt;, published June 5, 2023. The artist's &lt;a href="https://www.charliewilsonmusic.com/charlie-wilson-kicks-off-nprs-black-music-month-with-tiny-desk-concert/" rel="noopener noreferrer"&gt;official website&lt;/a&gt; identifies Outstanding in the set. This establishes the performance reference, not the identity of the first AI remix creator.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
