UWP将位图集合到视频中

本文关键字:视频 集合 位图 UWP | 更新日期: 2023-09-27 18:14:53

我选择了一些jpg图像,并将这些图像添加到MediaComposition(composition)中。

它的工作原理。我有夹子的计数。

private async void encodeImages_Click(object sender, RoutedEventArgs e)
{
    FileOpenPicker openPicker = new FileOpenPicker();
    foreach (string extension in FileExtensions.Image)
    {
        openPicker.FileTypeFilter.Add(extension);
    }
    IReadOnlyList<StorageFile> files = await openPicker.PickMultipleFilesAsync();
    composition = new MediaComposition();
    foreach (StorageFile file in files)
    {
        m_files.Add(file);
        var clip =await MediaClip.CreateFromImageFileAsync(file, TimeSpan.Zero);
        composition.Clips.Add(clip);
    }
    Debug.WriteLine(composition.Clips.Count);
}

然后我想使用MediaComposition生成一个MediaStreamSource.

private  void showVideo_Click(object sender, RoutedEventArgs e)
{
    GC.Collect();
    //FileSavePicker savePicker = new FileSavePicker();
    //savePicker.SuggestedStartLocation = PickerLocationId.VideosLibrary;
    //savePicker.FileTypeChoices.Add("MP4 File", new List<string>() { ".mp4" });
    //savePicker.SuggestedFileName = "output";
    //StorageFile videoFile = await savePicker.PickSaveFileAsync();
    //await composition.RenderToFileAsync(videoFile);
    encodeImagesResult.Position = TimeSpan.Zero;
    IMediaSource mediaStreamSource = composition.GeneratePreviewMediaStreamSource(400, 400);
    encodeImagesResult.SetMediaStreamSource(mediaStreamSource);
}

将显示错误" the parameter is incorrect "。

我的代码有什么问题?很多谢谢!

UWP将位图集合到视频中

这里的错误The parameter is incorrect.是指MediaClip中的参数。CreateFromImageFileAsync方法错误。在此方法中,第二个参数originalDuration表示在视频剪辑中显示图像的时间。对于视频剪辑,其持续时间不能为零。

所以要修复这个错误,你可以编辑这一行:

var clip =await MediaClip.CreateFromImageFileAsync(file, TimeSpan.Zero);

并将TimeSpan设置为您想要显示的图像的值,例如:

var clip = await MediaClip.CreateFromImageFileAsync(file, TimeSpan.FromSeconds(1)); 
在此之后,您的代码应该能够工作。