{"id":1185,"date":"2026-02-25T04:32:49","date_gmt":"2026-02-25T04:32:49","guid":{"rendered":"https:\/\/wiro.ai\/blog\/?p=1185"},"modified":"2026-09-27T18:26:10","modified_gmt":"2026-09-27T18:26:10","slug":"dreamactor-image-to-video-motion-transfer-in-5-tests","status":"publish","type":"post","link":"https:\/\/wiro.ai\/blog\/dreamactor-image-to-video-motion-transfer-in-5-tests\/","title":{"rendered":"DreamActor: Image-to-Video Motion Transfer in 5 Tests"},"content":{"rendered":"<p><strong>DreamActor motion transfer<\/strong> takes one still image and one driving clip, then renders the person, character, or pet in the still image performing the movement from the video. These five tests use the sample input pairs supplied with <a href=\"https:\/\/wiro.ai\/models\/bytedance\/dreamactor\">DreamActor on Wiro<\/a>. They are not text-to-video prompts: the reference image carries appearance, while the driving video supplies expression, head motion, pose, and timing.<\/p>\n<p>The aim was simple. Check whether the same workflow holds up at portrait, upper-body, and full-body scale, then deliberately mismatch the appearance and motion sources once. Every input and output below is hosted in this WordPress post, so the clips remain viewable instead of relying on an expiring output URL.<\/p>\n<h2>What DreamActor motion transfer accepts<\/h2>\n<p>Each run uses two required parameters: <code>inputImage<\/code> and <code>inputVideo<\/code>. Wiro documents JPEG, JPG, or PNG images from 480 x 480 to 1920 x 1080, with a 4.7 MB image limit. The driver can be MP4 or WebM, up to 30 seconds, from 200 x 200 to 2048 x 1440. The model page says it supports face and body driving for real people, animation, and pets. No prompt, seed, motion-strength setting, or output-resolution control was exposed for these tests, so the inputs are the meaningful parameters to compare.<\/p>\n<p>The Wiro API documentation includes a completed task example with <code>elapsedseconds<\/code> of 6 seconds. That is an API example, not a timing measurement for the five clips below, so it should not be treated as a promised runtime. The documentation does not state a price for a completed DreamActor output. Rather than infer a cost from a separate cancellation example, this review leaves cost per output unreported.<\/p>\n<h2>Test setup<\/h2>\n<ul>\n<li>Tests 1-4: matched reference image and driving video from the same numbered sample set.<\/li>\n<li>Test 5: reference image from set 2 with the driving motion from set 1.<\/li>\n<li>Constant workflow: one image plus one video, with no text prompt or optional controls added.<\/li>\n<li>What to inspect: face stability, pose following, clothing and hair continuity, and whether the reference identity still reads when the driver changes.<\/li>\n<\/ul>\n<h2>Test 1: Portrait driver and portrait reference<\/h2>\n<p><strong>Parameters:<\/strong> <code>inputImage<\/code> = sample set 1 portrait; <code>inputVideo<\/code> = sample set 1 driving clip. This is the cleanest matched case: the framing, subject scale, and source motion belong together. The output video below shows the set 1 reference subject animated by the movement sequence in the set 1 driver. It is the useful baseline for judging the later runs, because there is no scale or identity mismatch to explain away.<\/p>\n<h3>Reference image<\/h3>\n<figure><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1429\" class=\"wp-image-1132\" src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-01-scaled.jpg\" alt=\"DreamActor motion transfer reference image set 1 portrait\" srcset=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-01-scaled.jpg 2560w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-01-510x285.jpg 510w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-01-900x502.jpg 900w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-01-768x429.jpg 768w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-01-1536x857.jpg 1536w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-01-2048x1143.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption>Test 1 inputImage: the set 1 portrait reference.<\/figcaption><\/figure>\n<h3>Driving video<\/h3>\n<figure><video style=\"max-width: 100%; height: auto;\" preload=\"metadata\" controls=\"controls\" width=\"300\" height=\"150\"><source src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-driving-01.mp4\" type=\"video\/mp4\" \/><\/video><figcaption>Test 1 inputVideo: the set 1 motion source.<\/figcaption><\/figure>\n<h3>Output<\/h3>\n<figure><video style=\"max-width: 100%; height: auto;\" preload=\"metadata\" controls=\"controls\" width=\"300\" height=\"150\"><source src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-out-01.mp4\" type=\"video\/mp4\" \/><\/video><figcaption>Test 1 output: the set 1 appearance driven by the set 1 motion sequence.<\/figcaption><\/figure>\n<h2>Test 2: Full-body matched transfer<\/h2>\n<p><strong>Parameters:<\/strong> <code>inputImage<\/code> = sample set 2 full-body image; <code>inputVideo<\/code> = sample set 2 driving clip. This output tests the harder case: a full figure has more joints, more clothing area, and more chances for proportions to drift. The result shows the set 2 figure following set 2 body motion. It is the clip to inspect when deciding whether a source image has enough body visibility for a planned dance, walk, or gesture. The practical lesson is not that every full-body source works equally well. A reference whose crop and subject scale resemble the driver gives the model less reconstruction work.<\/p>\n<h3>Reference image<\/h3>\n<figure><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1344\" class=\"wp-image-1133\" src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-02.jpg\" alt=\"DreamActor motion transfer reference image set 2 full body\" srcset=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-02.jpg 768w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-02-291x510.jpg 291w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-02-514x900.jpg 514w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>Test 2 inputImage: the set 2 full-body reference.<\/figcaption><\/figure>\n<h3>Driving video<\/h3>\n<figure><video style=\"max-width: 100%; height: auto;\" preload=\"metadata\" controls=\"controls\" width=\"300\" height=\"150\"><source src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-driving-02.mp4\" type=\"video\/mp4\" \/><\/video><figcaption>Test 2 inputVideo: the matched full-body motion source.<\/figcaption><\/figure>\n<h3>Output<\/h3>\n<figure><video style=\"max-width: 100%; height: auto;\" preload=\"metadata\" controls=\"controls\" width=\"300\" height=\"150\"><source src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-out-02.mp4\" type=\"video\/mp4\" \/><\/video><figcaption>Test 2 output: set 2 appearance with set 2 full-body motion.<\/figcaption><\/figure>\n<h2>Test 3: Upper-body transfer<\/h2>\n<p><strong>Parameters:<\/strong> <code>inputImage<\/code> = sample set 3 upper-body image; <code>inputVideo<\/code> = sample set 3 driving clip. The output sits between the first two tests. It has enough of the torso to evaluate shoulder and upper-body motion, while leaving less unseen clothing than a full-body shot. The resulting clip shows the set 3 reference animated by its paired driver. For explainers, presenter footage, and character reactions, this crop is often the safer choice: it gives the model face and torso context without asking it to invent a complete lower body.<\/p>\n<h3>Reference image<\/h3>\n<figure><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"416\" class=\"wp-image-1134\" src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-03.jpg\" alt=\"DreamActor upper-body motion transfer reference image set 3\" srcset=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-03.jpg 624w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-03-510x340.jpg 510w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><figcaption>Test 3 inputImage: the set 3 upper-body reference.<\/figcaption><\/figure>\n<h3>Driving video<\/h3>\n<figure><video style=\"max-width: 100%; height: auto;\" preload=\"metadata\" controls=\"controls\" width=\"300\" height=\"150\"><source src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-driving-03.mp4\" type=\"video\/mp4\" \/><\/video><figcaption>Test 3 inputVideo: the set 3 upper-body motion source.<\/figcaption><\/figure>\n<h3>Output<\/h3>\n<figure><video style=\"max-width: 100%; height: auto;\" preload=\"metadata\" controls=\"controls\" width=\"300\" height=\"150\"><source src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-out-03.mp4\" type=\"video\/mp4\" \/><\/video><figcaption>Test 3 output: set 3 appearance with set 3 upper-body motion.<\/figcaption><\/figure>\n<h2>Test 4: A second portrait transfer<\/h2>\n<p><strong>Parameters:<\/strong> <code>inputImage<\/code> = sample set 4 portrait; <code>inputVideo<\/code> = sample set 4 driving clip. This is another matched portrait, not a duplicate benchmark. It checks whether the workflow can start from a different portrait crop and still produce the corresponding driver movement. The output shows the set 4 reference taking on the set 4 motion. Compare it with Test 1 for the things that matter in portrait work: head rotation, expression changes, and how consistently the output keeps the reference face recognizable from frame to frame.<\/p>\n<h3>Reference image<\/h3>\n<figure><img loading=\"lazy\" decoding=\"async\" width=\"1429\" height=\"2560\" class=\"wp-image-1135\" src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-04-scaled.jpg\" alt=\"DreamActor portrait motion transfer reference image set 4\" srcset=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-04-scaled.jpg 1429w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-04-285x510.jpg 285w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-04-502x900.jpg 502w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-04-768x1376.jpg 768w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-04-857x1536.jpg 857w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-04-1143x2048.jpg 1143w\" sizes=\"auto, (max-width: 1429px) 100vw, 1429px\" \/><figcaption>Test 4 inputImage: the set 4 portrait reference.<\/figcaption><\/figure>\n<h3>Driving video<\/h3>\n<figure><video style=\"max-width: 100%; height: auto;\" preload=\"metadata\" controls=\"controls\" width=\"300\" height=\"150\"><source src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-driving-04.mp4\" type=\"video\/mp4\" \/><\/video><figcaption>Test 4 inputVideo: the set 4 motion source.<\/figcaption><\/figure>\n<h3>Output<\/h3>\n<figure><video style=\"max-width: 100%; height: auto;\" preload=\"metadata\" controls=\"controls\" width=\"300\" height=\"150\"><source src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-out-04.mp4\" type=\"video\/mp4\" \/><\/video><figcaption>Test 4 output: set 4 appearance with set 4 portrait motion.<\/figcaption><\/figure>\n<h2>Test 5: Cross-drive stress test<\/h2>\n<p><strong>Parameters:<\/strong> <code>inputImage<\/code> = sample set 2 full-body image; <code>inputVideo<\/code> = sample set 1 driving clip. This is the only deliberately mismatched run. The output shows the appearance from set 2 performing motion drawn from set 1, so it answers a more practical question than the matched tests: can a creator reuse a motion clip with a different character? One initial request returned a provider error and was rerun. The completed output demonstrates that the pairing can work, but it also makes the tradeoff visible. When body proportions, camera distance, or framing differ, motion transfer has to reconcile information that is not present in the reference. Review this clip closely before shipping a cross-drive result.<\/p>\n<h3>Reference image<\/h3>\n<figure><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1344\" class=\"wp-image-1133\" src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-02.jpg\" alt=\"DreamActor cross-drive reference image from set 2\" srcset=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-02.jpg 768w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-02-291x510.jpg 291w, https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-input-02-514x900.jpg 514w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>Test 5 inputImage: set 2 supplies appearance.<\/figcaption><\/figure>\n<h3>Driving video<\/h3>\n<figure><video style=\"max-width: 100%; height: auto;\" preload=\"metadata\" controls=\"controls\" width=\"300\" height=\"150\"><source src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-driving-01.mp4\" type=\"video\/mp4\" \/><\/video><figcaption>Test 5 inputVideo: set 1 supplies motion.<\/figcaption><\/figure>\n<h3>Output<\/h3>\n<figure><video style=\"max-width: 100%; height: auto;\" preload=\"metadata\" controls=\"controls\" width=\"300\" height=\"150\"><source src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/02\/dreamactor-out-05-cross.mp4\" type=\"video\/mp4\" \/><\/video><figcaption>Test 5 output: set 2 appearance driven by set 1 motion.<\/figcaption><\/figure>\n<h2>When to pick DreamActor<\/h2>\n<p>Pick DreamActor when the desired motion already exists in a short video and the goal is to apply it to a single image. It fits portrait acting, presenter-style upper-body motion, and matched full-body movement. Start with a sharp, well-lit reference that shows the part of the subject expected to move. Keep the driver under Wiro&#8217;s 30-second limit, and match framing where possible. For a cross-drive, use a driver with similar subject scale and a simple, readable pose sequence; treat the first result as a review render, not an automatic final.<\/p>\n<p>For a broader look at image-to-video choices, see <a href=\"https:\/\/wiro.ai\/blog\/top-5-image-to-video-apis-in-2026-1-base-image-test\/\">these image-to-video API tests<\/a>, <a href=\"https:\/\/wiro.ai\/blog\/animate-a-photo-6-motion-transfer-tests\/\">six photo-animation motion-transfer tests<\/a>, and <a href=\"https:\/\/wiro.ai\/blog\/kling-v3-motion-control-motion-transfer-in-3-tests\/\">Kling V3 Motion Control in three transfer tests<\/a>. DreamActor is the better fit when a driving clip, rather than a text instruction, defines the movement.<\/p>\n<h2>Sources and model link<\/h2>\n<p>The underlying DreamActor-M1 project describes a diffusion-transformer approach that combines facial, head, and body guidance for portrait-to-full-body animation. Read the <a href=\"https:\/\/grisoon.github.io\/DreamActor-M1\/\" target=\"_blank\" rel=\"noopener\">official DreamActor-M1 project page<\/a> and the <a href=\"https:\/\/huggingface.co\/papers\/2504.01724\" target=\"_blank\" rel=\"noopener\">DreamActor-M1 paper on Hugging Face<\/a> for the method details. To run the image-and-driver workflow, open <a href=\"https:\/\/wiro.ai\/models\/bytedance\/dreamactor\">DreamActor on Wiro<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>DreamActor motion transfer takes one still image and one driving clip, then renders the person, character, or pet in the still image&hellip;<\/p>\n","protected":false},"author":4,"featured_media":1146,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[52],"tags":[88,96,58],"class_list":["post-1185","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-model-reviews","tag-bytedance","tag-dreamactor","tag-image-to-video"],"_links":{"self":[{"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/posts\/1185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/comments?post=1185"}],"version-history":[{"count":2,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/posts\/1185\/revisions"}],"predecessor-version":[{"id":4205,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/posts\/1185\/revisions\/4205"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/media\/1146"}],"wp:attachment":[{"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/media?parent=1185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/categories?post=1185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/tags?post=1185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}