UWP为视频制作一组位图

时间:2016-10-26 07:15:42

标签: c# uwp media

我选择了一些jpg图像并将这些图像添加到MediaComposition(合成)。

有效。我得到了剪辑的数量。

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);
}

它将显示错误&#34;参数不正确。&#34;

我的代码出了什么问题?非常感谢!

1 个答案:

答案 0 :(得分:0)

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

因此,要修复此错误,您可以编辑此行:

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

并将TimeSpan设置为您希望图像显示的值,如:

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

在此之后,您的代码应该能够正常工作。