2016-10-26 242 views
1

我选择了一些jpg图像并将这些图像添加到MediaComposition(组合)中。UWP将位图集合到视频中

它的工作原理。我得到了剪辑的数量。

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

它会显示错误“参数不正确”。

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

+0

// var composition = new MediaComposition(); 构图是一个全局变量 – Mxtin

回答

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

在此之后,你的代码应该能够工作。

+0

非常感谢。有用! – Mxtin