我选择了一些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;
我的代码出了什么问题?非常感谢!
答案 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));
在此之后,您的代码应该能够正常工作。