You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# UWP开发中如何设置MediaComposition内MediaClip的开始时间

UWP MediaComposition 设置 MediaClip 指定开始时间方案

MediaComposition 默认按Clips集合的添加顺序连续拼接播放,单个MediaClip没有可直接赋值的起始时间属性,根据你的使用场景可以选择以下两种实现方式:

方案1:顺序无重叠播放场景,添加空白占位Clip

如果你的图片素材按时间先后顺序展示、无重叠需求,可以先创建对应时长的透明空白Clip填充目标开始时间前的空白区间,示例代码:

MediaComposition mediaComposition = new MediaComposition();
TimeSpan targetStartTime = TimeSpan.FromSeconds(3); // 替换为你的图片需要开始展示的时间
TimeSpan showDuration = TimeSpan.FromSeconds(5); // 替换为你的图片需要展示的时长

// 1. 创建对应时长的透明空白占位Clip
var placeholderClip = MediaClip.CreateFromColor(Colors.Transparent, targetStartTime);
mediaComposition.Clips.Add(placeholderClip);

// 2. 创建图片Clip并添加
var clipCover = await MediaClip.CreateFromImageFileAsync(stgCover, showDuration);
mediaComposition.Clips.Add(clipCover);

方案2:多素材独立控制/重叠展示场景,使用MediaOverlay

如果你的素材需要独立控制开始时间、甚至重叠展示,更推荐使用MediaComposition.Overlays集合,MediaOverlay自带Delay属性可直接指定在合成中的开始时间,灵活度更高,完全适配你有多张指定时间点素材的需求,示例代码:

MediaComposition mediaComposition = new MediaComposition();
// 先给合成添加底层基础画布,时长设置为你整个项目的总时长即可
var baseClip = MediaClip.CreateFromColor(Colors.Transparent, TimeSpan.FromSeconds(15)); 
mediaComposition.Clips.Add(baseClip);

// 单张图片素材的时间参数,多张素材重复以下逻辑即可
TimeSpan targetStartTime = TimeSpan.FromSeconds(3); // 图片开始展示时间
TimeSpan showDuration = TimeSpan.FromSeconds(5); // 图片展示时长

// 创建图片Clip并封装为MediaOverlay
var clipCover = await MediaClip.CreateFromImageFileAsync(stgCover, showDuration);
var coverOverlay = new MediaOverlay(clipCover);
// 直接指定开始时间
coverOverlay.Delay = targetStartTime;
// 按需额外设置展示位置、透明度等参数
// coverOverlay.Position = new Rect(0, 0, 600, 400);
// coverOverlay.Opacity = 1;

// 添加到合成的Overlay集合
mediaComposition.Overlays.Add(coverOverlay);

内容的提问来源于stack exchange,提问作者Jose Afonso Braga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 09:45:01