UWP MediaElement - 悬停在预定滑块上时预览缩略图

时间:2018-02-15 08:46:10

标签: c# uwp slider mediaelement video-thumbnails

我正在使用媒体元素播放视频和自定义滑块来搜索该视频。当我在滑块上滑过鼠标时,我是否可以预览视频的缩略图(就像在您的视频管中一样)?

   <MediaElement Name="videoMediaElement" AreTransportControlsEnabled="False"  Stretch="Fill" MediaOpened="videoMediaElement_MediaOpened"      MediaEnded="videoMediaElement_MediaEnded" 
    MediaFailed="videoMediaElement_MediaFailed" PointerPressed="videoMediaElement_PointerPressed"   CurrentStateChanged="Media_State_ChangedAsync" >
   </MediaElement>
   <Slider Name="timelineSlider" IsThumbToolTipEnabled="True" ThumbToolTipValueConverter="{StaticResource TooltipValueConverter}"  HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="5,0,0,6" FontSize="12" Width="700" Height="50"/>

1 个答案:

答案 0 :(得分:1)

您可以使用Windows.Media.Editing.MediaComposition课程预览媒体文件。

首次加载媒体文件时,请创建MediaComposition实例:

mediaComposition = new MediaComposition();
var mediaClip = await MediaClip.CreateFromFileAsync( videoFile );
mediaComposition.Clips.Add(mediaClip);

最好将MediaComposition实例存储为字段,以便可以重复使用。

现在,只要您想显示预览,就可以使用以下方法:

private async Task<BitmapImage> CreatePreviewAsync( TimeSpan atTime, int width, int height )
{        
    var thumbnail = await mediaComposition.GetThumbnailAsync(atTime, width, height, 
                           VideoFramePrecision.NearestKeyFrame);
    BitmapImage bitmapImage = new BitmapImage();
    bitmapImage.SetSource(thumbnail);
    PreviewImage.Source = bitmapImage;
}

要获得更多粒度,您可以使用VideoFramePrecision.NearestFrame,但需要更多时间来处理。