我正在使用媒体元素播放视频和自定义滑块来搜索该视频。当我在滑块上滑过鼠标时,我是否可以预览视频的缩略图(就像在您的视频管中一样)?
<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"/>
答案 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
,但需要更多时间来处理。