async Task<MediaStreamSource> OpenVideo() { this.progressText.Text = "Downloading video..."; var thumbnailFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Logo.scale-100.png")); var thumbnail = RandomAccessStreamReference.CreateFromFile(thumbnailFile); var url = "http://video.ch9.ms/ch9/4597/8db5a656-b173-4897-b2aa-e2075fb24597/windows10recap.mp4"; var file = await StorageFile.CreateStreamedFileFromUriAsync( "windows10recap.mp4", new Uri(url), thumbnail); this.progressText.Text = "Creating clip..."; var clip = await MediaClip.CreateFromFileAsync(file); clip.VideoEffectDefinitions.Add(new VideoEffectDefinition(typeof(ExampleVideoEffect).FullName)); var composition = new MediaComposition(); composition.Clips.Add(clip); if (ThumbnailGenerator.IsDrawingThumbnail) { customThumbnail = await composition.GetThumbnailAsync(TimeSpan.FromSeconds(10), 1280, 720, VideoFramePrecision.NearestFrame); } return composition.GenerateMediaStreamSource(); }
/// <summary> /// Handle the returned files from file picker /// This method is triggered by ContinuationManager based on ActivationKind /// </summary> /// <param name="args">File open picker continuation activation argment. It cantains the list of files user selected with file open picker </param> public async void ContinueFileOpenPicker(FileOpenPickerContinuationEventArgs args) { if (args.Files.Count > 0) { Debug.WriteLine("Picked video: " + args.Files[0].Name); MediaLoaded = true; m_clip = await MediaClip.CreateFromFileAsync(args.Files[0]); m_composition = new MediaComposition(); m_composition.Clips.Add(m_clip); // Update the sliders to represent the duration in milliseconds // TODO: move this databinding TrimStart.Maximum = m_clip.OriginalDuration.TotalMilliseconds; TrimEnd.Maximum = m_clip.OriginalDuration.TotalMilliseconds; TrimEnd.Value = TrimEnd.Maximum; //// Set up the MediaElement for preview // TODO: pass in the preview streamsource and grab the screensize to determine this in addition to the aspect ratio of the video MediaElement.SetMediaStreamSource(m_composition.GenerateMediaStreamSource()); } else { Debug.WriteLine("Operation cancelled."); } }
public async Task CS_WP_MC_PreviewTranscode(EffectType effectType) { StorageFile source = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Input/Car.mp4")); StorageFile destination = await KnownFolders.VideosLibrary.CreateFileAsync("CS_WP_MC_PreviewTranscode_" + effectType + ".mp4", CreationCollisionOption.ReplaceExisting); var definition = await Utils.CreateEffectDefinitionAsync(effectType); var clip = await MediaClip.CreateFromFileAsync(source); clip.VideoEffectDefinitions.Add(definition); var composition = new MediaComposition(); composition.Clips.Add(clip); MediaStreamSource sourceStreamSource = composition.GenerateMediaStreamSource(); using (IRandomAccessStream destinationStream = await destination.OpenAsync(FileAccessMode.ReadWrite)) { var transcoder = new MediaTranscoder(); var transcode = await transcoder.PrepareMediaStreamSourceTranscodeAsync(sourceStreamSource, destinationStream, MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Qvga)); await transcode.TranscodeAsync(); } }
async Task <MediaStreamSource> OpenVideo() { this.progressText.Text = "Downloading video..."; var thumbnailFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Logo.scale-100.png")); var thumbnail = RandomAccessStreamReference.CreateFromFile(thumbnailFile); var url = "http://video.ch9.ms/ch9/4597/8db5a656-b173-4897-b2aa-e2075fb24597/windows10recap.mp4"; var file = await StorageFile.CreateStreamedFileFromUriAsync( "windows10recap.mp4", new Uri(url), thumbnail); this.progressText.Text = "Creating clip..."; var clip = await MediaClip.CreateFromFileAsync(file); clip.VideoEffectDefinitions.Add(new VideoEffectDefinition(typeof(ExampleVideoEffect).FullName)); var composition = new MediaComposition(); composition.Clips.Add(clip); if (ThumbnailGenerator.IsDrawingThumbnail) { customThumbnail = await composition.GetThumbnailAsync(TimeSpan.FromSeconds(10), 1280, 720, VideoFramePrecision.NearestFrame); } return(composition.GenerateMediaStreamSource()); }
private async void specialVideo_Click(object sender, RoutedEventArgs e) { var picker = new Windows.Storage.Pickers.FileOpenPicker(); picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.VideosLibrary; picker.FileTypeFilter.Add(".mov"); picker.FileTypeFilter.Add(".mp4"); StorageFile pickedFilespecial = await picker.PickSingleFileAsync(); if (pickedFilespecial == null) { return; } var clip = await MediaClip.CreateFromFileAsync(pickedFilespecial); composition = new MediaComposition(); composition.Clips.Add(clip); var videoEffectDefinition = new VideoEffectDefinition("VideoEffectComponent.ExampleVideoEffect", new PropertySet() { { "FadeValue", .9 } }); clip.VideoEffectDefinitions.Add(videoEffectDefinition); MediaStreamSource mediaStreamSource = composition.GenerateMediaStreamSource(); mediaElement.SetMediaStreamSource(mediaStreamSource); }
private async Task StartVideoAsync(StorageFile file) { try { if (this.videoPlayer.CurrentState == MediaElementState.Playing) { this.videoPlayer.Stop(); } FrameRelayVideoEffect.ResetState(); this.currentVideoId = Guid.NewGuid(); await this.ResetStateAsync(); MediaClip clip = await MediaClip.CreateFromFileAsync(file); clip.VideoEffectDefinitions.Add(new VideoEffectDefinition(typeof(FrameRelayVideoEffect).FullName)); MediaComposition compositor = new MediaComposition(); compositor.Clips.Add(clip); this.videoPlayer.SetMediaStreamSource(compositor.GenerateMediaStreamSource()); } catch (Exception ex) { await Util.GenericApiCallExceptionHandler(ex, "Error starting playback."); } }
public void PanelElementChanged() { if (SelectedPanelElement != null) { var clip = SelectedPanelElement.Clip.Clone(); var mediaComposition = new MediaComposition(); mediaComposition.Clips.Add(clip); MediaSource = MediaSource.CreateFromMediaStreamSource(mediaComposition.GenerateMediaStreamSource()); } }
async void OnLoaded(object sender, RoutedEventArgs e) { this.mediaElement.Visibility = Visibility.Collapsed; this.progressInfo.Visibility = Visibility.Visible; this.progressRing.IsActive = true; this.progressText.Text = "Downloading video..."; var thumbnailFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Logo.scale-100.png")); var thumbnail = RandomAccessStreamReference.CreateFromFile(thumbnailFile); var url = "http://video.ch9.ms/ch9/4597/8db5a656-b173-4897-b2aa-e2075fb24597/windows10recap.mp4"; // TODO: replace TemporaryFolder and HttpClient with StorageFile.CreateStreamedFileFromUriAsync once TH:2458060 is fixed //var file = await StorageFile.CreateStreamedFileFromUriAsync( // "windows10recap.mp4", // new Uri(url), // thumbnail); var file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("windows10recap.mp4", CreationCollisionOption.ReplaceExisting); using (var httpClient = new HttpClient()) { byte[] videoData = await httpClient.GetByteArrayAsync(url); using (var writer = await file.OpenAsync(FileAccessMode.ReadWrite)) { await writer.WriteAsync(videoData.AsBuffer()); } } this.progressText.Text = "Creating clip..."; var clip = await MediaClip.CreateFromFileAsync(file); clip.VideoEffectDefinitions.Add(new VideoEffectDefinition(typeof(ExampleVideoEffect).FullName)); var composition = new MediaComposition(); composition.Clips.Add(clip); if (ThumbnailGenerator.IsDrawingThumbnail) { this.thumbnail = await composition.GetThumbnailAsync(TimeSpan.FromSeconds(10), 1280, 720, VideoFramePrecision.NearestFrame); } mediaElement.SetMediaStreamSource(composition.GenerateMediaStreamSource()); mediaElement.IsLooping = true; this.mediaElement.Visibility = Visibility.Visible; this.progressInfo.Visibility = Visibility.Collapsed; this.progressRing.IsActive = false; }
public async Task CS_WP_MC_LumiaCropSquare() { StorageFile source = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Input/Car.mp4")); StorageFile destination = await KnownFolders.VideosLibrary.CreateFileAsync("CS_W_MT_CropSquare.mp4", CreationCollisionOption.ReplaceExisting); // Select the largest centered square area in the input video var encodingProfile = await MediaEncodingProfile.CreateFromFileAsync(source); uint inputWidth = encodingProfile.Video.Width; uint inputHeight = encodingProfile.Video.Height; uint outputLength = Math.Min(inputWidth, inputHeight); Rect cropArea = new Rect( (float)((inputWidth - outputLength) / 2), (float)((inputHeight - outputLength) / 2), (float)outputLength, (float)outputLength ); encodingProfile.Video.Width = outputLength; encodingProfile.Video.Height = outputLength; var definition = new LumiaEffectDefinition(new FilterChainFactory(() => { var filters = new List <IFilter>(); filters.Add(new CropFilter(cropArea)); return(filters); })); definition.InputWidth = inputWidth; definition.InputHeight = inputHeight; definition.OutputWidth = outputLength; definition.OutputHeight = outputLength; var clip = await MediaClip.CreateFromFileAsync(source); clip.VideoEffectDefinitions.Add(definition); var composition = new MediaComposition(); composition.Clips.Add(clip); MediaStreamSource sourceStreamSource = composition.GenerateMediaStreamSource(); using (IRandomAccessStream destinationStream = await destination.OpenAsync(FileAccessMode.ReadWrite)) { var transcoder = new MediaTranscoder(); var transcode = await transcoder.PrepareMediaStreamSourceTranscodeAsync(sourceStreamSource, destinationStream, MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Qvga)); await transcode.TranscodeAsync(); } }
async void OnLoaded(object sender, RoutedEventArgs e) { this.mediaElement.Visibility = Visibility.Collapsed; this.progressInfo.Visibility = Visibility.Visible; this.progressRing.IsActive = true; this.progressText.Text = "Downloading video..."; var thumbnailFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Logo.scale-100.png")); var thumbnail = RandomAccessStreamReference.CreateFromFile(thumbnailFile); var url = "http://video.ch9.ms/ch9/4597/8db5a656-b173-4897-b2aa-e2075fb24597/windows10recap.mp4"; // TODO: replace TemporaryFolder and HttpClient with StorageFile.CreateStreamedFileFromUriAsync once TH:2458060 is fixed //var file = await StorageFile.CreateStreamedFileFromUriAsync( // "windows10recap.mp4", // new Uri(url), // thumbnail); var file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("windows10recap.mp4", CreationCollisionOption.ReplaceExisting); using (var httpClient = new HttpClient()) { byte[] videoData = await httpClient.GetByteArrayAsync(url); using (var writer = await file.OpenAsync(FileAccessMode.ReadWrite)) { await writer.WriteAsync(videoData.AsBuffer()); } } this.progressText.Text = "Creating clip..."; var clip = await MediaClip.CreateFromFileAsync(file); clip.VideoEffectDefinitions.Add(new VideoEffectDefinition(typeof(ExampleVideoEffect).FullName)); var composition = new MediaComposition(); composition.Clips.Add(clip); if (ThumbnailGenerator.IsDrawingThumbnail) { customThumbnail = await composition.GetThumbnailAsync(TimeSpan.FromSeconds(10), 1280, 720, VideoFramePrecision.NearestFrame); } mediaElement.SetMediaStreamSource(composition.GenerateMediaStreamSource()); mediaElement.IsLooping = true; this.mediaElement.Visibility = Visibility.Visible; this.progressInfo.Visibility = Visibility.Collapsed; this.progressRing.IsActive = false; }
public async void ClipAudio() { if (MainViewModel.Current != null) { var clip = await MediaClip.CreateFromFileAsync(MainViewModel.Current.audioFile); clip.TrimTimeFromStart = StartTime.timeSpanFromStart; clip.TrimTimeFromEnd = EndTime.timeSpanFromEnd; composition = new MediaComposition(); composition.Clips.Add(clip); MediaStream = MediaSource.CreateFromMediaStreamSource(composition.GenerateMediaStreamSource(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High))); Debug.WriteLine(MediaStream.State); } }
private async void VideoPlayer_Loaded(object sender, RoutedEventArgs e) { var videoFile = await Package.Current.InstalledLocation.GetFileAsync("big_buck_bunny.mp4"); MediaClip clip = await MediaClip.CreateFromFileAsync(videoFile); var videoEffectDefinition = new VideoEffectDefinition(typeof(RExampleVidoEffect).FullName); clip.VideoEffectDefinitions.Add(videoEffectDefinition); MediaComposition compositor = new MediaComposition(); compositor.Clips.Add(clip); this.VideoPlayer.SetMediaStreamSource(compositor.GenerateMediaStreamSource()); }
private async void VideoPlayer_Loaded(object sender, RoutedEventArgs e) { // Load video file var videoFile = await Package.Current.InstalledLocation.GetFileAsync("big_buck_bunny.mp4"); // Create a MediaClip from the video file and apply our video effect MediaClip clip = await MediaClip.CreateFromFileAsync(videoFile); clip.VideoEffectDefinitions.Add(new VideoEffectDefinition(typeof(GrayscaleVideoEffect).FullName)); // Create a MediaComposition object that will allow us to generate a stream source MediaComposition compositor = new MediaComposition(); compositor.Clips.Add(clip); // Set the stream source to the MediaElement control this.VideoPlayer.SetMediaStreamSource(compositor.GenerateMediaStreamSource()); }
private async void TrimClip_Click(object sender, RoutedEventArgs e) { // Trim the front and back 25% from the clip var clip = await MediaClip.CreateFromFileAsync(pickedFile); clip.TrimTimeFromStart = new TimeSpan((long)(clip.OriginalDuration.Ticks * 0.25)); clip.TrimTimeFromEnd = new TimeSpan((long)(clip.OriginalDuration.Ticks * 0.25)); // Create a MediaComposition containing the clip and set it on the MediaElement. composition = new MediaComposition(); composition.Clips.Add(clip); mediaElement.Position = TimeSpan.Zero; mediaStreamSource = composition.GenerateMediaStreamSource(); mediaElement.SetMediaStreamSource(mediaStreamSource); save.IsEnabled = true; }
private async void LoadVideo() { if (DataContext is ViewMediaMetadata) { var viewMediaMetadata = (ViewMediaMetadata)DataContext; var mediaUri = new Uri($"{App.mediaPath}\\{viewMediaMetadata.YID}.{viewMediaMetadata.MediaType}", UriKind.Absolute); var videoFile = await StorageFile.GetFileFromPathAsync(mediaUri.OriginalString); MediaClip clip = await MediaClip.CreateFromFileAsync(videoFile); var videoEffectDefinition = new VideoEffectDefinition(typeof(SnapshotVidoEffect).FullName); clip.VideoEffectDefinitions.Add(videoEffectDefinition); MediaComposition compositor = new MediaComposition(); compositor.Clips.Add(clip); mePlayer.SetMediaStreamSource(compositor.GenerateMediaStreamSource()); } }
private void AllowToWatchVideoBeforeGenerating(bool allowFlag) { MediaComposition comp = new MediaComposition(); comp.Clips.Add(_video); mediaPlayerElement.Source = null; mediaPlayerElement.AreTransportControlsEnabled = true; var ep = SetVideoPlayer(); if (_mediaPlayer == null) { _mediaPlayer = new MediaPlayer(); } var res = comp.GenerateMediaStreamSource(ep); var md = MediaSource.CreateFromMediaStreamSource(res); mediaPlayerElement.Source = md; _mediaPlayer = mediaPlayerElement.MediaPlayer; }
async void OnLoaded(object sender, RoutedEventArgs e) { this.mediaElement.Visibility = Visibility.Collapsed; this.progressInfo.Visibility = Visibility.Visible; this.progressRing.IsActive = true; this.progressText.Text = "Downloading video..."; var thumbnailFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Logo.scale-100.png")); var thumbnail = RandomAccessStreamReference.CreateFromFile(thumbnailFile); var url = "http://video.ch9.ms/ch9/4597/8db5a656-b173-4897-b2aa-e2075fb24597/windows10recap.mp4"; var file = await StorageFile.CreateStreamedFileFromUriAsync( "windows10recap.mp4", new Uri(url), thumbnail); this.progressText.Text = "Creating clip..."; var clip = await MediaClip.CreateFromFileAsync(file); clip.VideoEffectDefinitions.Add(new VideoEffectDefinition(typeof(ExampleVideoEffect).FullName)); var composition = new MediaComposition(); composition.Clips.Add(clip); if (ThumbnailGenerator.IsDrawingThumbnail) { customThumbnail = await composition.GetThumbnailAsync(TimeSpan.FromSeconds(10), 1280, 720, VideoFramePrecision.NearestFrame); } mediaElement.SetMediaStreamSource(composition.GenerateMediaStreamSource()); mediaElement.IsLooping = true; this.mediaElement.Visibility = Visibility.Visible; this.progressInfo.Visibility = Visibility.Collapsed; this.progressRing.IsActive = false; }
private async void StartMediaCompositionPreview_Click(object sender, RoutedEventArgs e) { StartMediaCompositionPreview.IsEnabled = false; StorageFile source = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Car.mp4")); var encodingProfile = await MediaEncodingProfile.CreateFromFileAsync(source); var definition = await CreateEffectDefinitionAsync(encodingProfile.Video); var clip = await MediaClip.CreateFromFileAsync(source); clip.VideoEffectDefinitions.Add(definition); var composition = new MediaComposition(); composition.Clips.Add(clip); MediaCompositionPreview.SetMediaStreamSource(composition.GenerateMediaStreamSource()); StartMediaCompositionPreview.IsEnabled = true; }
private async void VideoGenTest2(object sender, RoutedEventArgs e) { var ep = SetVideoPlayer(); saveCompositionButton.IsEnabled = false; _composition = new MediaComposition(); mediaPlayerElement.Source = null; SessionCollection sessionCollection = new SessionCollection(); sessionCollection.sessions = new List <Session>(); var listItems = heatmapSessionsListView.SelectedItems.ToList(); foreach (Session s in listItems) { sessionCollection.sessions.Add(s); } HeatmapGenerator generator = new HeatmapGenerator(); generator.CheckHistoryErrors(sessionCollection); FillEffectPropertySet(sessionCollection); if (_mediaPlayer == null) { _mediaPlayer = new MediaPlayer(); } var video = await MediaClip.CreateFromFileAsync(_videoFile); MediaOverlayLayer videoOverlayLayer = new MediaOverlayLayer(); TrimVideo(ref video); ValuePairs.Add("offset", video.TrimTimeFromStart.Ticks); var enc = video.GetVideoEncodingProperties(); ValuePairs.Add("frameLength", (1 / ((double)enc.FrameRate.Numerator / enc.FrameRate.Denominator)) * 1000); _composition.Clips.Add(video); if (_horizonFlag) { _composition.OverlayLayers.Add(await GenerateHorizonLayer((int)video.TrimmedDuration.TotalSeconds, ep.Video.Height, ep.Video.Width)); } var videoEffectDefinition = new VideoEffectDefinition("VideoEffectComponent.HeatmapAddVideoEffect", ValuePairs); video.VideoEffectDefinitions.Add(videoEffectDefinition); MediaStreamSource res; try { ValuePairs.Remove("height"); ValuePairs.Remove("width"); ValuePairs.Add("height", ep.Video.Height); ValuePairs.Add("width", ep.Video.Width); res = _composition.GenerateMediaStreamSource(ep); var md = MediaSource.CreateFromMediaStreamSource(res); mediaPlayerElement.Source = md; } catch (Exception f) { Debug.WriteLine(f.Message); } _mediaPlayer = mediaPlayerElement.MediaPlayer; mediaPlayerElement.AreTransportControlsEnabled = true; saveCompositionButton.IsEnabled = true; }
public async void TranscodeVideo() { bool succeeded = false; StatusBar statusBar = StatusBar.GetForCurrentView(); // Transcoding cannot be used if there is a MediaElement playing; unset it MediaSource = null; // Create a StorageFile to hold the result StorageFile outputFile = await KnownFolders.SavedPictures.CreateFileAsync(fileName + fileNameAppend, CreationCollisionOption.GenerateUniqueName); try { // Set up the progress bar statusBar.ProgressIndicator.ProgressValue = 0.0f; await statusBar.ProgressIndicator.ShowAsync(); // Begin rendering var renderOperation = m_composition.RenderToFileAsync(outputFile); renderOperation.Progress = async(_, progress) => { // Update the progress bar await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { statusBar.ProgressIndicator.ProgressValue = progress / 100.0; }); }; await renderOperation; succeeded = true; } catch (Exception ex) { Utilities.MessageBox(ex.Message); } await statusBar.ProgressIndicator.HideAsync(); // Transcode completed, show result if (succeeded) { ContentDialog complete = new ContentDialog(); complete.Content = "Transcode complete."; complete.PrimaryButtonText = "Play"; complete.SecondaryButtonText = "Cancel"; var result = await complete.ShowAsync(); if (result == ContentDialogResult.Primary) { Uri savedUri = new Uri(outputFile.Path); // TODO: navigate to second page and put a mediaplayer control there //Frame.Navigate(typeof(Preview), savedUri); } } // Reinitialize the MediaElement now that we are done // TODO: use low res here too MediaSource = m_composition.GenerateMediaStreamSource(); }
public async Task CS_WP_MC_LumiaCropSquare() { StorageFile source = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Input/Car.mp4")); StorageFile destination = await KnownFolders.VideosLibrary.CreateFileAsync("CS_W_MT_CropSquare.mp4", CreationCollisionOption.ReplaceExisting); // Select the largest centered square area in the input video var encodingProfile = await MediaEncodingProfile.CreateFromFileAsync(source); uint inputWidth = encodingProfile.Video.Width; uint inputHeight = encodingProfile.Video.Height; uint outputLength = Math.Min(inputWidth, inputHeight); Rect cropArea = new Rect( (float)((inputWidth - outputLength) / 2), (float)((inputHeight - outputLength) / 2), (float)outputLength, (float)outputLength ); encodingProfile.Video.Width = outputLength; encodingProfile.Video.Height = outputLength; var definition = new LumiaEffectDefinition(new FilterChainFactory(() => { var filters = new List<IFilter>(); filters.Add(new CropFilter(cropArea)); return filters; })); definition.InputWidth = inputWidth; definition.InputHeight = inputHeight; definition.OutputWidth = outputLength; definition.OutputHeight = outputLength; var clip = await MediaClip.CreateFromFileAsync(source); clip.VideoEffectDefinitions.Add(definition); var composition = new MediaComposition(); composition.Clips.Add(clip); MediaStreamSource sourceStreamSource = composition.GenerateMediaStreamSource(); using (IRandomAccessStream destinationStream = await destination.OpenAsync(FileAccessMode.ReadWrite)) { var transcoder = new MediaTranscoder(); var transcode = await transcoder.PrepareMediaStreamSourceTranscodeAsync(sourceStreamSource, destinationStream, MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Qvga)); await transcode.TranscodeAsync(); } }