//public bool IsCropEnabled //{ // get { return this.Cropper.IsCropEnabled; } // set { this.Cropper.IsCropEnabled = value; } //} //public Rect CropRectangle //{ // get { return this.Cropper.CropRectangle; } //} private async void InitializeVideo(StorageFile file) { Media.Source = MediaSource.CreateFromStorageFile(file); Media.MediaPlayer.AutoPlay = true; Media.MediaPlayer.IsMuted = true; Media.MediaPlayer.IsLoopingEnabled = true; Media.MediaPlayer.PlaybackSession.PositionChanged += MediaPlayer_PositionChanged; var clip = await MediaClip.CreateFromFileAsync(file); var composition = new MediaComposition(); composition.Clips.Add(clip); var props = clip.GetVideoEncodingProperties(); double ratioX = (double)40 / props.Width; double ratioY = (double)40 / props.Height; double ratio = Math.Max(ratioY, ratioY); var width = (int)(props.Width * ratio); var height = (int)(props.Height * ratio); var count = Math.Ceiling(280d / width); var times = new List <TimeSpan>(); for (int i = 0; i < count; i++) { times.Add(TimeSpan.FromMilliseconds(clip.OriginalDuration.TotalMilliseconds / count * i)); // TimeSpan.FromMilliseconds for older Frameworks (instead of Divide) } TrimThumbnails.Children.Clear(); #if MOBILE var lumiaScaleFactor = 4; // prevents Catastrophic failure on Lumia 640 & probably others var thumbnails = await composition.GetThumbnailsAsync(times, width *lumiaScaleFactor, height *lumiaScaleFactor, VideoFramePrecision.NearestKeyFrame); #else var thumbnails = await composition.GetThumbnailsAsync(times, width, height, VideoFramePrecision.NearestKeyFrame); #endif foreach (var thumb in thumbnails) { var bitmap = new BitmapImage(); await bitmap.SetSourceAsync(thumb); var image = new Image(); image.Width = width; image.Height = height; image.Stretch = Windows.UI.Xaml.Media.Stretch.UniformToFill; image.Source = bitmap; TrimThumbnails.Children.Add(image); } TrimRange.SetOriginalDuration(clip.OriginalDuration); }
private async void InitializeVideo(StorageFile file) { Media.Source = MediaSource.CreateFromStorageFile(file); Media.MediaPlayer.AutoPlay = true; Media.MediaPlayer.IsMuted = true; Media.MediaPlayer.IsLoopingEnabled = true; Media.MediaPlayer.PlaybackSession.PositionChanged += MediaPlayer_PositionChanged; var clip = await MediaClip.CreateFromFileAsync(file); var composition = new MediaComposition(); composition.Clips.Add(clip); var props = clip.GetVideoEncodingProperties(); double ratioX = (double)40 / props.Width; double ratioY = (double)40 / props.Height; double ratio = Math.Max(ratioY, ratioY); var width = (int)(props.Width * ratio); var height = (int)(props.Height * ratio); var count = Math.Ceiling(296d / width); var times = new List <TimeSpan>(); for (int i = 0; i < count; i++) { times.Add(clip.OriginalDuration / count * i); } TrimThumbnails.Children.Clear(); var thumbnails = await composition.GetThumbnailsAsync(times, width, height, VideoFramePrecision.NearestKeyFrame); foreach (var thumb in thumbnails) { var bitmap = new BitmapImage(); await bitmap.SetSourceAsync(thumb); var image = new Image(); image.Width = width; image.Height = height; image.Stretch = Windows.UI.Xaml.Media.Stretch.UniformToFill; image.Source = bitmap; TrimThumbnails.Children.Add(image); } TrimRange.SetOriginalDuration(clip.OriginalDuration); }