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();
        }
Ejemplo n.º 2
0
        /// <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.");
            }
        }
Ejemplo n.º 3
0
        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();
            }
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        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.");
            }
        }
Ejemplo n.º 7
0
        public void PanelElementChanged()
        {
            if (SelectedPanelElement != null)
            {
                var clip             = SelectedPanelElement.Clip.Clone();
                var mediaComposition = new MediaComposition();
                mediaComposition.Clips.Add(clip);

                MediaSource = MediaSource.CreateFromMediaStreamSource(mediaComposition.GenerateMediaStreamSource());
            }
        }
Ejemplo n.º 8
0
        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;
        }
Ejemplo n.º 9
0
        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;
        }
Ejemplo n.º 11
0
        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);
            }
        }
Ejemplo n.º 12
0
        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());
        }
Ejemplo n.º 13
0
        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());
        }
Ejemplo n.º 14
0
        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;
        }
Ejemplo n.º 15
0
        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());
        }
Ejemplo n.º 16
0
        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());
            }
        }
Ejemplo n.º 17
0
        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();
            }
        }
Ejemplo n.º 18
0
        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;
        }
Ejemplo n.º 19
0
        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;
        }
Ejemplo n.º 20
0
        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;
        }
        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;
        }
Ejemplo n.º 22
0
        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;
        }
Ejemplo n.º 23
0
        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();
        }
Ejemplo n.º 24
0
        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();
            }
        }
Ejemplo n.º 25
0
        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;
        }