private void Play(Grid parent, GalleryItem item, File file)
        {
            try
            {
                if (!file.Local.IsDownloadingCompleted)
                {
                    return;
                }

                if (_surface != null && _mediaPlayerElement != null)
                {
                    _surface.Children.Remove(_mediaPlayerElement);
                    _surface = null;
                }

                if (_mediaPlayer == null)
                {
                    _mediaPlayer = new MediaPlayer();
                    _mediaPlayer.SourceChanged += OnSourceChanged;
                    _mediaPlayer.PlaybackSession.PlaybackStateChanged += OnPlaybackStateChanged;
                    _mediaPlayerElement.SetMediaPlayer(_mediaPlayer);
                }

                var dpi = DisplayInformation.GetForCurrentView().LogicalDpi / 96.0f;
                _mediaPlayer.SetSurfaceSize(new Size(parent.ActualWidth * dpi, parent.ActualHeight * dpi));

                _mediaPlayer.Source           = MediaSource.CreateFromUri(new Uri("file:///" + file.Local.Path));
                _mediaPlayer.IsLoopingEnabled = item.IsLoop;
                _mediaPlayer.Play();

                _surface = parent;
                _surface.Children.Add(_mediaPlayerElement);
            }
            catch { }
        }
예제 #2
0
        private async void Play(Grid parent, GalleryContent item, File file)
        {
            try
            {
                if (!file.Local.IsDownloadingCompleted && !SettingsService.Current.IsStreamingEnabled)
                {
                    return;
                }

                if (_surface != null && _mediaPlayerElement != null)
                {
                    _surface.Children.Remove(_mediaPlayerElement);
                    _surface = null;
                }

                if (_mediaPlayer == null)
                {
                    _mediaPlayer = Task.Run(() => new MediaPlayer()).Result;
                    _mediaPlayer.VolumeChanged += OnVolumeChanged;
                    _mediaPlayer.SourceChanged += OnSourceChanged;
                    _mediaPlayer.MediaOpened   += OnMediaOpened;
                    _mediaPlayer.PlaybackSession.PlaybackStateChanged += OnPlaybackStateChanged;
                    _mediaPlayerElement.SetMediaPlayer(_mediaPlayer);
                }

                var dpi = DisplayInformation.GetForCurrentView().LogicalDpi / 96.0f;
                _mediaPlayer.SetSurfaceSize(new Size(parent.ActualWidth * dpi, parent.ActualHeight * dpi));

                _surface = parent;
                _surface.Children.Add(_mediaPlayerElement);

                if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.Controls.MediaTransportControls", "ShowAndHideAutomatically"))
                {
                    Transport.ShowAndHideAutomatically = true;
                }

                Transport.DownloadMaximum = file.Size;
                Transport.DownloadValue   = file.Local.DownloadOffset + file.Local.DownloadedPrefixSize;

                var streamable = SettingsService.Current.IsStreamingEnabled && item.IsStreamable && !file.Local.IsDownloadingCompleted;
                if (streamable)
                {
                    _streamingInterop = new FFmpegInteropMSS(new FFmpegInteropConfig());
                    var interop = await _streamingInterop.CreateFromFileAsync(ViewModel.ProtoService.Client, file);

                    _mediaPlayer.Source = interop.CreateMediaPlaybackItem();

                    Transport.DownloadMaximum = file.Size;
                    Transport.DownloadValue   = file.Local.DownloadOffset + file.Local.DownloadedPrefixSize;
                }
                else
                {
                    _mediaPlayer.Source = MediaSource.CreateFromUri(new Uri("file:///" + file.Local.Path));
                }

                _mediaPlayer.IsLoopingEnabled = item.IsLoop;
                _mediaPlayer.Play();
            }
            catch { }
        }
예제 #3
0
        private void Play(Grid parent, GalleryContent item, File file)
        {
            try
            {
                if (!file.Local.IsDownloadingCompleted && !SettingsService.Current.IsStreamingEnabled)
                {
                    return;
                }

                if (_surface != null && _mediaPlayerElement != null)
                {
                    _surface.Children.Remove(_mediaPlayerElement);
                    _surface = null;
                }

                if (_mediaPlayer == null)
                {
                    _mediaPlayer = Task.Run(() => new MediaPlayer()).Result;
                    _mediaPlayer.VolumeChanged += OnVolumeChanged;
                    _mediaPlayer.SourceChanged += OnSourceChanged;
                    _mediaPlayer.MediaOpened   += OnMediaOpened;
                    _mediaPlayer.PlaybackSession.PlaybackStateChanged += OnPlaybackStateChanged;
                    _mediaPlayerElement.SetMediaPlayer(_mediaPlayer);
                }

                var dpi = DisplayInformation.GetForCurrentView().LogicalDpi / 96.0f;
                _mediaPlayer.SetSurfaceSize(new Size(parent.ActualWidth * dpi, parent.ActualHeight * dpi));

                _surface = parent;
                _surface.Children.Add(_mediaPlayerElement);

                if (ApiInfo.IsUniversalApiContract5Present) //if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.Controls.MediaTransportControls", "ShowAndHideAutomatically"))
                {
                    Transport.ShowAndHideAutomatically = true;
                }

                Transport.DownloadMaximum = file.Size;
                Transport.DownloadValue   = file.Local.DownloadOffset + file.Local.DownloadedPrefixSize;

                var streamable = SettingsService.Current.IsStreamingEnabled && item.IsStreamable /*&& !file.Local.IsDownloadingCompleted*/;
                if (streamable)
                {
                    _streamingInterop   = new RemoteFileStream(item.ProtoService, file, TimeSpan.FromSeconds(item.Duration));
                    _mediaPlayer.Source = MediaSource.CreateFromStream(_streamingInterop, item.MimeType);

                    Transport.DownloadMaximum = file.Size;
                    Transport.DownloadValue   = file.Local.DownloadOffset + file.Local.DownloadedPrefixSize;
                }
                else
                {
                    _mediaPlayer.Source = MediaSource.CreateFromUri(UriEx.GetLocal(file.Local.Path));
                }

                _mediaPlayer.IsLoopingEnabled = item.IsLoop;
                _mediaPlayer.Play();
            }
            catch { }
        }
예제 #4
0
        private void Play(Grid parent, GalleryContent item, File file)
        {
            if (_unloaded)
            {
                return;
            }

            try
            {
                if (!file.Local.IsDownloadingCompleted && !SettingsService.Current.IsStreamingEnabled)
                {
                    return;
                }

                if (_surface != null && _mediaPlayerElement != null)
                {
                    _surface.Children.Remove(_mediaPlayerElement);
                    _surface = null;
                }

                if (_mediaPlayer == null)
                {
                    _mediaPlayer = Task.Run(() => new MediaPlayer()).Result;
                    _mediaPlayer.VolumeChanged += OnVolumeChanged;
                    _mediaPlayer.SourceChanged += OnSourceChanged;
                    _mediaPlayer.MediaOpened   += OnMediaOpened;
                    _mediaPlayer.PlaybackSession.PlaybackStateChanged += OnPlaybackStateChanged;
                    _mediaPlayerElement.SetMediaPlayer(_mediaPlayer);
                }

                var dpi = DisplayInformation.GetForCurrentView().LogicalDpi / 96.0f;
                _mediaPlayer.SetSurfaceSize(new Size(parent.ActualWidth * dpi, parent.ActualHeight * dpi));

                _surface = parent;
                _surface.Children.Add(_mediaPlayerElement);

                //Transport.DownloadMaximum = file.Size;
                //Transport.DownloadValue = file.Local.DownloadOffset + file.Local.DownloadedPrefixSize;

                var streamable = SettingsService.Current.IsStreamingEnabled && item.IsStreamable /*&& !file.Local.IsDownloadingCompleted*/;
                if (streamable)
                {
                    _fileStream         = new RemoteFileStream(item.ProtoService, file, item.Duration);
                    _mediaPlayer.Source = MediaSource.CreateFromStream(_fileStream, item.MimeType);

                    //Transport.DownloadMaximum = file.Size;
                    //Transport.DownloadValue = file.Local.DownloadOffset + file.Local.DownloadedPrefixSize;
                }
                else
                {
                    _mediaPlayer.Source = MediaSource.CreateFromUri(UriEx.ToLocal(file.Local.Path));
                }

                _mediaPlayer.IsLoopingEnabled = item.IsLoop;
                _mediaPlayer.Play();
            }
            catch { }
        }
예제 #5
0
        protected override void OnElementChanged(ElementChangedEventArgs <Xamarin.Forms.Page> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null || Element == null)
            {
                return;
            }
            app  = Application.Current;
            page = new Page();
            var stack = new StackPanel();

            page.Content = stack;
            stack.HorizontalAlignment = HorizontalAlignment.Stretch;
            stack.VerticalAlignment   = VerticalAlignment.Stretch;



            var _mediaPlayer = new MediaPlayer();

            _mediaPlayer.Source = MediaSource.CreateFromUri(new Uri("ms-appx:///IntroGladys.mp4"));

            mediaplayer = new MediaPlayerElement();
            mediaplayer.AreTransportControlsEnabled = false;
            mediaplayer.Name = "Player";
            mediaplayer.SetMediaPlayer(_mediaPlayer);
            mediaplayer.HorizontalAlignment = HorizontalAlignment.Stretch;
            mediaplayer.VerticalAlignment   = VerticalAlignment.Center;
            mediaplayer.Stretch             = Stretch.Uniform;
            stack.Children.Add(mediaplayer);

            this.Children.Add(page);
            mediaplayer.MediaPlayer.Play();
        }
예제 #6
0
        private GalleryView()
        {
            InitializeComponent();

            _layer  = ElementCompositionPreview.GetElementVisual(Layer);
            _bottom = ElementCompositionPreview.GetElementVisual(BottomPanel);

            _layer.Opacity  = 0;
            _bottom.Opacity = 0;

            _mediaPlayerElement = new MediaPlayerElement {
                Style = Resources["TransportLessMediaPlayerStyle"] as Style
            };
            _mediaPlayerElement.AreTransportControlsEnabled = true;
            _mediaPlayerElement.TransportControls           = Transport;
            _mediaPlayerElement.SetMediaPlayer(_mediaPlayer);

            _inactivityTimer          = new DispatcherTimer();
            _inactivityTimer.Tick    += OnTick;
            _inactivityTimer.Interval = TimeSpan.FromSeconds(2);
            _inactivityTimer.Start();

            Transport.Visibility = Visibility.Collapsed;

            Initialize();
        }
    public async void Open(MediaPlayerElement display)
    {
        try
        {
            FileOpenPicker picker = new FileOpenPicker()
            {
                SuggestedStartLocation = PickerLocationId.PicturesLibrary
            };
            picker.FileTypeFilter.Add(".mp4");
            StorageFile open = await picker.PickSingleFileAsync();

            if (open != null)
            {
                if (_element == null)
                {
                    _element = display;
                }
                _player = new MediaPlayer
                {
                    Source = MediaSource.CreateFromStorageFile(open)
                };
                _player.MediaOpened += Player_MediaOpened;
                _element.SetMediaPlayer(_player);
            }
        }
        finally
        {
            // Ignore Exceptions
        }
    }
예제 #8
0
        /// <summary>
        /// set the cast source that should render on the ui
        /// </summary>
        /// <param name="castPlayer">the player to render on the ui</param>
        public void SetCastSource(UWPMediaPlayer castPlayer)
        {
            //hide pin display
            lPin.Visible = false;

            //clear old mediaplayer element
            if (mediaPlayerElement != null)
            {
                Controls.Remove(mediaPlayerElement);
                mediaPlayerElement.Dispose();
            }

            //init new media player element
            mediaPlayerElement = new MediaPlayerElement()
            {
                Location  = new Point(0, 0),
                Margin    = new Padding(0),
                Dock      = DockStyle.Fill,
                BackColor = Color.Black,
                Stretch   = Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT.Stretch.UniformToFill
            };

            //set player to render to media element
            mediaPlayerElement.SetMediaPlayer(castPlayer);

            //add to window
            Controls.Add(mediaPlayerElement);
        }
예제 #9
0
        protected override void OnElementChanged(ElementChangedEventArgs <Image> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement == null)
            {
                return;
            }

            _player = new MediaPlayer()
            {
                AutoPlay         = true,
                IsLoopingEnabled = true,
                IsMuted          = true
            };
            _playerElement = new MediaPlayerElement()
            {
                AutoPlay            = true,
                Visibility          = Visibility.Visible,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                Stretch             = Stretch.UniformToFill,
                Background          = new SolidColorBrush(Colors.Brown)
            };

            _playerElement.SetMediaPlayer(_player);
            this.Children.Add(_playerElement);
        }
예제 #10
0
        private async Task <FFmpegInteropMSS> CreateMediaSourceAndPlayer(MediaPlayerElement playerElement, FFmpegInteropMSS ffmpegMss, Clip clip)
        {
            if (ffmpegMss != null)
            {
                ffmpegMss.Dispose();
            }

            FFmpegInteropConfig conf = new FFmpegInteropConfig();

            conf.StreamBufferSize = BufferSizeInBytes;

            MediaPlayer player = playerElement.MediaPlayer;

            if (player == null)
            {
                player = CreatePlayer();
            }

            using (var stream = await clip.ClipFile.OpenAsync(Windows.Storage.FileAccessMode.Read))
            {
                ffmpegMss = await FFmpegInteropMSS.CreateFromStreamAsync(stream, conf);
            }

            player.Source = ffmpegMss.CreateMediaPlaybackItem();
            playerElement.SetMediaPlayer(player);

            return(ffmpegMss);
        }
예제 #11
0
        public VideoInput(IStorageFile file)
        {
            // Initialize the video mediaPlayer and retrieve the video from file
            UploadVideo = new MediaPlayerElement();
            var mediaSource = MediaSource.CreateFromStorageFile(file);
            var mediaPlayer = new MediaPlayer {
                Source = mediaSource
            };

            UploadVideo.SetMediaPlayer(mediaPlayer);
            // Play the video
            mediaPlayer.Play();
            // Center the video in the user view
            UploadVideo.Margin = new Thickness(
                (OffsetX + ViewWidth / 2) / Zoom,
                (OffsetY + ViewHeight / 2) / Zoom,
                0, 0);

            // Enable touch, pinch, and drag event responses
            AllowTouch(UploadVideo);
            AllowResize(UploadVideo);
            AllowTranslation(UploadVideo);

            // Add the video node to connector's dictionary
            Connector.Scales.Add(UploadVideo, 1);
        }
예제 #12
0
        private async void MenuFlyoutItem_OnClickAsync(object sender, RoutedEventArgs e)
        {
            FileOpenPicker openPicker = new FileOpenPicker
            {
                ViewMode = PickerViewMode.Thumbnail,
                SuggestedStartLocation = PickerLocationId.PicturesLibrary
            };

            openPicker.FileTypeFilter.Add(".mp3");
            openPicker.FileTypeFilter.Add(".mp4");

            StorageFile file = await openPicker.PickSingleFileAsync();

            if (file != null)
            {
                _mediaSource = MediaSource.CreateFromStorageFile(file);
                //简单访问
                if (_mediaPlayer == null)
                {
                    _mediaPlayer = new MediaPlayer();
                }

                _mediaPlayer.Source = _mediaSource;
                _mediaPlayer.Play();
                MediaPlayerElement.SetMediaPlayer(_mediaPlayer);
            }
        }
예제 #13
0
 void SetMediaTransportControls()
 {
     mpElement = new MediaPlayerElement();
     mpElement.SetMediaPlayer(Player);
     mpElement.AreTransportControlsEnabled = true;
     mpElement.TransportControls           = MainPageTransportControls;
 }
예제 #14
0
 void CreateUI()
 {
     mediaPlayerElement = new MediaPlayerElement
     {
         AreTransportControlsEnabled = true
     };
     mediaPlayerElement.SetMediaPlayer(_mediaPlayer);
     Window.Current.Content = mediaPlayerElement;
 }
예제 #15
0
        private GalleryView()
        {
            InitializeComponent();

            #region Localizations

            FlyoutSaveAs.Text = Strings.Additional.SaveAs;

            #endregion

            if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.UIElement", "KeyboardAccelerators"))
            {
                FlyoutCopy.KeyboardAccelerators.Add(new KeyboardAccelerator {
                    Modifiers = Windows.System.VirtualKeyModifiers.Control, Key = Windows.System.VirtualKey.C, ScopeOwner = this
                });
                FlyoutSaveAs.KeyboardAccelerators.Add(new KeyboardAccelerator {
                    Modifiers = Windows.System.VirtualKeyModifiers.Control, Key = Windows.System.VirtualKey.S, ScopeOwner = this
                });
            }

            Layer.Visibility = Visibility.Collapsed;

            _layer = ElementCompositionPreview.GetElementVisual(Layer);

            _mediaPlayerElement = new MediaPlayerElement {
                Style = Resources["TransportLessMediaPlayerStyle"] as Style
            };
            _mediaPlayerElement.AreTransportControlsEnabled = true;
            _mediaPlayerElement.TransportControls           = Transport;
            _mediaPlayerElement.SetMediaPlayer(_mediaPlayer);

            Initialize();

            Transport.Focus(FocusState.Programmatic);

            if (ApiInformation.IsMethodPresent("Windows.UI.Xaml.Hosting.ElementCompositionPreview", "SetImplicitShowAnimation"))
            {
                var easing   = ConnectedAnimationService.GetForCurrentView().DefaultEasingFunction;
                var duration = ConnectedAnimationService.GetForCurrentView().DefaultDuration;

                var layerShowAnimation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();
                layerShowAnimation.InsertKeyFrame(0.0f, 0.0f, easing);
                layerShowAnimation.InsertKeyFrame(1.0f, 1.0f, easing);
                layerShowAnimation.Target   = nameof(Visual.Opacity);
                layerShowAnimation.Duration = duration;

                var layerHideAnimation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();
                layerHideAnimation.InsertKeyFrame(0.0f, 1.0f, easing);
                layerHideAnimation.InsertKeyFrame(1.0f, 0.0f, easing);
                layerHideAnimation.Target   = nameof(Visual.Opacity);
                layerHideAnimation.Duration = duration;

                ElementCompositionPreview.SetImplicitShowAnimation(Layer, layerShowAnimation);
                ElementCompositionPreview.SetImplicitHideAnimation(Layer, layerHideAnimation);
            }
        }
예제 #16
0
        /// <summary>
        /// 播放声音或视频
        /// </summary>
        /// <param name="p_file">待播放文件</param>
        async void Play(string p_file)
        {
            if (_playerHost == this)
            {
                if (FileType == FileItemType.Video)
                {
                    var player = _mediaPlayer.MediaPlayer;
                    if (player.PlaybackSession.PlaybackState == Windows.Media.Playback.MediaPlaybackState.Playing)
                    {
                        _mediaPlayer.AreTransportControlsEnabled = true;
                        player.Pause();
                    }
                    else if (player.PlaybackSession.PlaybackState == Windows.Media.Playback.MediaPlaybackState.Paused)
                    {
                        _mediaPlayer.AreTransportControlsEnabled = false;
                        player.Play();
                    }
                }
                return;
            }

            if (_mediaPlayer == null)
            {
                // 初始化播放器
                _mediaPlayer          = new MediaPlayerElement();
                _mediaPlayer.AutoPlay = true;

                var player = _mediaPlayer.MediaPlayer;
                if (player == null)
                {
                    player = new Windows.Media.Playback.MediaPlayer();
                    _mediaPlayer.SetMediaPlayer(player);
                }
                player.MediaEnded  += (sender, e) => StopPlayer();
                player.MediaFailed += (sender, e) => StopPlayer();

                // 自定义播放器内容
                //_mediaPlayer.AreTransportControlsEnabled = true;
                //var con = _mediaPlayer.TransportControls;
                //con.IsCompact = true;
                //con.IsVolumeButtonVisible = false;
                //con.IsVolumeEnabled = false;
                //con.IsZoomButtonVisible = false;
                //con.IsZoomEnabled = false;
            }
            else
            {
                await StopPlayer();
            }

            _mediaPlayer.AreTransportControlsEnabled = (FileType == FileItemType.Sound);
            LoadPlayer();
            _mediaPlayer.Source = MediaSource.CreateFromUri(new Uri(p_file));
        }
 private async Task RemovePlayingSoundAsync()
 {
     if (PlayingSound.MediaPlayer != null)
     {
         PlayingSound.MediaPlayer.Pause();
         MediaPlayerElement.MediaPlayer.MediaEnded -= Player_MediaEnded;
         ((MediaPlaybackList)PlayingSound.MediaPlayer.Source).CurrentItemChanged -= PlayingSoundTemplate_CurrentItemChanged;
         MediaPlayerElement.SetMediaPlayer(null);
         PlayingSoundName.Text = "";
         PlayingSound.MediaPlayer.SystemMediaTransportControls.IsEnabled = false;
         PlayingSound.MediaPlayer = null;
     }
     await SoundPage.RemovePlayingSoundAsync(PlayingSound);
 }
예제 #18
0
        private void OnlineListen_Click(object sender, RoutedEventArgs e)
        {
            Uri uri = new Uri(Uri.Text);

            _mediaSource = MediaSource.CreateFromUri(uri);
            //简单访问
            if (_mediaPlayer == null)
            {
                _mediaPlayer = new MediaPlayer();
            }

            _mediaPlayer.Source = _mediaSource;
            _mediaPlayer.Play();
            MediaPlayerElement.SetMediaPlayer(_mediaPlayer);
        }
예제 #19
0
        private GalleryView()
        {
            InitializeComponent();

            _layer         = ElementCompositionPreview.GetElementVisual(Layer);
            _layer.Opacity = 0;

            _mediaPlayerElement = new MediaPlayerElement {
                Style = Resources["TransportLessMediaPlayerStyle"] as Style
            };
            _mediaPlayerElement.AreTransportControlsEnabled = true;
            _mediaPlayerElement.TransportControls           = Transport;
            _mediaPlayerElement.SetMediaPlayer(_mediaPlayer);

            Initialize();
        }
예제 #20
0
        private async void ListView_OnItemClickAsync(object sender, ItemClickEventArgs e)
        {
            StorageFolder folder = KnownFolders.MusicLibrary;
            string        m      = (string)e.ClickedItem;
            StorageFile   a      = await folder.GetFileAsync(m);

            _mediaSource = MediaSource.CreateFromStorageFile(a);
            //简单访问
            if (_mediaPlayer == null)
            {
                _mediaPlayer = new MediaPlayer();
            }

            _mediaPlayer.Source = _mediaSource;
            _mediaPlayer.Play();
            MediaPlayerElement.SetMediaPlayer(_mediaPlayer);
        }
예제 #21
0
        private GalleryView()
        {
            InitializeComponent();

            #region Localizations

            FlyoutSaveAs.Text = Strings.Additional.SaveAs;

            #endregion

            Layer.Visibility = Visibility.Collapsed;

            _layer = ElementCompositionPreview.GetElementVisual(Layer);

            _mediaPlayerElement = new MediaPlayerElement {
                Style = Resources["TransportLessMediaPlayerStyle"] as Style
            };
            _mediaPlayerElement.AreTransportControlsEnabled = true;
            _mediaPlayerElement.TransportControls           = Transport;
            _mediaPlayerElement.SetMediaPlayer(_mediaPlayer);

            Initialize();

            if (ApiInformation.IsMethodPresent("Windows.UI.Xaml.Hosting.ElementCompositionPreview", "SetImplicitShowAnimation"))
            {
                var easing   = ConnectedAnimationService.GetForCurrentView().DefaultEasingFunction;
                var duration = ConnectedAnimationService.GetForCurrentView().DefaultDuration;

                var layerShowAnimation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();
                layerShowAnimation.InsertKeyFrame(0.0f, 0.0f, easing);
                layerShowAnimation.InsertKeyFrame(1.0f, 1.0f, easing);
                layerShowAnimation.Target   = nameof(Visual.Opacity);
                layerShowAnimation.Duration = duration;

                var layerHideAnimation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();
                layerHideAnimation.InsertKeyFrame(0.0f, 1.0f, easing);
                layerHideAnimation.InsertKeyFrame(1.0f, 0.0f, easing);
                layerHideAnimation.Target   = nameof(Visual.Opacity);
                layerHideAnimation.Duration = duration;

                ElementCompositionPreview.SetImplicitShowAnimation(Layer, layerShowAnimation);
                ElementCompositionPreview.SetImplicitHideAnimation(Layer, layerHideAnimation);
            }
        }
        private void InitializePlayingSound()
        {
            if (PlayingSound != null)
            {
                if (PlayingSound.MediaPlayer != null)
                {
                    MediaPlayerElement.SetMediaPlayer(PlayingSound.MediaPlayer);
                    MediaPlayerElement.MediaPlayer.MediaEnded -= Player_MediaEnded;
                    MediaPlayerElement.MediaPlayer.MediaEnded += Player_MediaEnded;
                    PlayingSound.MediaPlayer.CommandManager.PreviousReceived += MediaPlayerCommandManager_PreviousReceived;
                    ((MediaPlaybackList)PlayingSound.MediaPlayer.Source).CurrentItemChanged -= PlayingSoundTemplate_CurrentItemChanged;
                    ((MediaPlaybackList)PlayingSound.MediaPlayer.Source).CurrentItemChanged += PlayingSoundTemplate_CurrentItemChanged;
                    PlayingSound.MediaPlayer.CurrentStateChanged += MediaPlayer_CurrentStateChanged;
                    PlayingSoundName.Text = PlayingSound.CurrentSound.Name;

                    AdjustLayout();
                }
            }
        }
예제 #23
0
        private async void ButtonBase_OnClickAsync(object sender, RoutedEventArgs e)
        {
            FileOpenPicker openPicker = new FileOpenPicker
            {
                ViewMode = PickerViewMode.Thumbnail,
                SuggestedStartLocation = PickerLocationId.PicturesLibrary
            };

            openPicker.FileTypeFilter.Add(".mp3");
            openPicker.FileTypeFilter.Add(".mp4");

            StorageFile file = await openPicker.PickSingleFileAsync();

            if (file != null)
            {
                // Application now has read/write access to the picked file
                _mediaSource = MediaSource.CreateFromStorageFile(file);
                //简单访问
                if (_mediaPlayer == null)
                {
                    _mediaPlayer = new MediaPlayer();
                }

                _mediaPlayer.Source = _mediaSource;
                _mediaPlayer.Play();
                MediaPlayerElement.SetMediaPlayer(_mediaPlayer);
                path.Text = file.FileType;

                //高级访问

                /*var mediaPlaybackItem = new MediaPlaybackItem(_mediaSource);
                 *
                 * _mediaPlayer.Source = mediaPlaybackItem;*/
            }
            else
            {
                path.Text = "no file";
            }
        }
예제 #24
0
        private GalleryView()
        {
            InitializeComponent();

            //CreateKeyboardAccelerator(Windows.System.VirtualKey.C);
            //CreateKeyboardAccelerator(Windows.System.VirtualKey.S);
            //CreateKeyboardAccelerator(Windows.System.VirtualKey.Left, Windows.System.VirtualKeyModifiers.None);
            //CreateKeyboardAccelerator(Windows.System.VirtualKey.GamepadLeftShoulder, Windows.System.VirtualKeyModifiers.None);
            //CreateKeyboardAccelerator(Windows.System.VirtualKey.Right, Windows.System.VirtualKeyModifiers.None);
            //CreateKeyboardAccelerator(Windows.System.VirtualKey.GamepadRightShoulder, Windows.System.VirtualKeyModifiers.None);

            _layer         = ElementCompositionPreview.GetElementVisual(Layer);
            _layer.Opacity = 0;

            _mediaPlayerElement = new MediaPlayerElement {
                Style = Resources["TransportLessMediaPlayerStyle"] as Style
            };
            _mediaPlayerElement.AreTransportControlsEnabled = true;
            _mediaPlayerElement.TransportControls           = Transport;
            _mediaPlayerElement.SetMediaPlayer(_mediaPlayer);

            Initialize();
        }
        private async void StartMediaPlayerElement()
        {
            HttpClient client = new HttpClient();

            // Add custom headers or credentials.
            client.DefaultRequestHeaders.Add("Foo", "Bar");

            // Authenticate with username 'foo' and password 'bar'.
            client.DefaultRequestHeaders.Add("Authorization", "Basic Zm9vOmJhcg==");

            // Try any of the following Uris (audio or video).
            Uri uri = new Uri("http://heyhttp.org/song.mp3?basic=1&user=foo&password=bar&lastModified=true");
            //Uri uri = new Uri("http://video.ch9.ms/ch9/70cc/83e17e76-8be8-441b-b469-87cf0e6a70cc/ASPNETwithScottHunter_high.mp4");

            HttpRandomAccessStream stream = await HttpRandomAccessStream.CreateAsync(client, uri);

            mediaPlayerElement = new MediaPlayerElement();
            mediaPlayerElement.AreTransportControlsEnabled = true;
            mediaPlayerElement.AutoPlay = true;
            this.Content = mediaPlayerElement;
            mediaPlayerElement.SetMediaPlayer(new Windows.Media.Playback.MediaPlayer());
            mediaPlayerElement.Source = Windows.Media.Core.MediaSource.CreateFromStream(stream, stream.ContentType);
        }
예제 #26
0
        public SpeakerWithSMTC()
        {
            //InitializeComponent();
            synthesizer                  = new SpeechSynthesizer();
            mediaPlayerElement           = new MediaPlayerElement();
            systemMediaTransportControls = SystemMediaTransportControls.GetForCurrentView();

            var mediaPlayer = new MediaPlayer();

            mediaPlayer.AutoPlay = false;
            mediaPlayer.CommandManager.IsEnabled = false;
            mediaPlayer.MediaEnded += media_MediaEnded;

            mediaPlayerElement.SetMediaPlayer(mediaPlayer);

            synthesizer.Options.AppendedSilence = SpeechAppendedSilence.Min;

            systemMediaTransportControls.IsPlayEnabled     = true;
            systemMediaTransportControls.IsNextEnabled     = true;
            systemMediaTransportControls.IsPauseEnabled    = true;
            systemMediaTransportControls.IsPreviousEnabled = true;

            systemMediaTransportControls.ButtonPressed += SystemMediaTransportControls_ButtonPressed;
        }
예제 #27
0
        //private Visual _topBarVisual;
        //private Visual _botBarVisual;

        private GalleryView()
        {
            InitializeComponent();

            Layer.Visibility  = Visibility.Collapsed;
            TopBar.Visibility = Visibility.Collapsed;
            BotBar.Visibility = Visibility.Collapsed;

            _mediaPlayer = new MediaPlayerElement {
                Style = Resources["yolo"] as Style
            };
            _mediaPlayer.AreTransportControlsEnabled = true;
            _mediaPlayer.TransportControls           = Transport;
            _mediaPlayer.SetMediaPlayer(new MediaPlayer());
            _mediaPlayer.MediaPlayer.PlaybackSession.PlaybackStateChanged += OnPlaybackStateChanged;

            _layerVisual = ElementCompositionPreview.GetElementVisual(Layer);
            //_topBarVisual = ElementCompositionPreview.GetElementVisual(TopBar);
            //_botBarVisual = ElementCompositionPreview.GetElementVisual(BotBar);

            //_layerVisual.Opacity = 0;
            //_topBarVisual.Offset = new Vector3(0, -48, 0);
            //_botBarVisual.Offset = new Vector3(0, 48, 0);

            if (ApiInformation.IsMethodPresent("Windows.UI.Xaml.Hosting.ElementCompositionPreview", "SetImplicitShowAnimation"))
            {
                var easing   = ConnectedAnimationService.GetForCurrentView().DefaultEasingFunction;
                var duration = ConnectedAnimationService.GetForCurrentView().DefaultDuration;

                var topShowAnimation = Window.Current.Compositor.CreateVector3KeyFrameAnimation();
                topShowAnimation.InsertKeyFrame(0.0f, new Vector3(0, -48, 0), easing);
                topShowAnimation.InsertKeyFrame(1.0f, new Vector3(), easing);
                topShowAnimation.Target   = nameof(Visual.Offset);
                topShowAnimation.Duration = duration;

                var botHideAnimation = Window.Current.Compositor.CreateVector3KeyFrameAnimation();
                botHideAnimation.InsertKeyFrame(0.0f, new Vector3(), easing);
                botHideAnimation.InsertKeyFrame(1.0f, new Vector3(0, 48, 0), easing);
                botHideAnimation.Target   = nameof(Visual.Offset);
                botHideAnimation.Duration = duration;

                var topHideAnimation = Window.Current.Compositor.CreateVector3KeyFrameAnimation();
                topHideAnimation.InsertKeyFrame(0.0f, new Vector3(), easing);
                topHideAnimation.InsertKeyFrame(1.0f, new Vector3(0, -48, 0), easing);
                topHideAnimation.Target   = nameof(Visual.Offset);
                topHideAnimation.Duration = duration;

                var botShowAnimation = Window.Current.Compositor.CreateVector3KeyFrameAnimation();
                botShowAnimation.InsertKeyFrame(0.0f, new Vector3(0, 48, 0), easing);
                botShowAnimation.InsertKeyFrame(1.0f, new Vector3(), easing);
                botShowAnimation.Target   = nameof(Visual.Offset);
                botShowAnimation.Duration = duration;

                var layerShowAnimation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();
                layerShowAnimation.InsertKeyFrame(0.0f, 0.0f, easing);
                layerShowAnimation.InsertKeyFrame(1.0f, 1.0f, easing);
                layerShowAnimation.Target   = nameof(Visual.Opacity);
                layerShowAnimation.Duration = duration;

                var layerHideAnimation = Window.Current.Compositor.CreateScalarKeyFrameAnimation();
                layerHideAnimation.InsertKeyFrame(0.0f, 1.0f, easing);
                layerHideAnimation.InsertKeyFrame(1.0f, 0.0f, easing);
                layerHideAnimation.Target   = nameof(Visual.Opacity);
                layerHideAnimation.Duration = duration;

                ElementCompositionPreview.SetImplicitShowAnimation(TopBar, topShowAnimation);
                ElementCompositionPreview.SetImplicitHideAnimation(TopBar, topHideAnimation);
                ElementCompositionPreview.SetImplicitShowAnimation(BotBar, botShowAnimation);
                ElementCompositionPreview.SetImplicitHideAnimation(BotBar, botHideAnimation);
                ElementCompositionPreview.SetImplicitShowAnimation(Layer, layerShowAnimation);
                ElementCompositionPreview.SetImplicitHideAnimation(Layer, layerHideAnimation);
            }
        }
예제 #28
0
 public static void Attach(MediaPlayerElement mediaPlayerElement)
 {
     mediaPlayerElement.SetMediaPlayer(Player);
 }
예제 #29
0
        private async void MediaPlayerElement_Loaded(object sender, RoutedEventArgs e)
        {
            MediaPlayerElement mediaPlayerElement = sender as MediaPlayerElement;

            if (mediaPlayerElement != null)
            {
                System.Diagnostics.Debug.WriteLine("MPE: " + mediaPlayerElement.Name + " loaded");
                MediaItem item = GetItem();
                if (item != null)
                {
                    var player = new MediaPlayer();
                    if (player != null)
                    {
                        string url = item.mediaUrl;
                        player.MediaEnded += Player_MediaEnded;
                        player.AutoPlay    = true;
                        player.IsMuted     = false;
                        if (!url.StartsWith("video://"))
                        {
                            var uri = new Uri(url);
                            if (uri != null)
                            {
                                player.Source = Windows.Media.Core.MediaSource.CreateFromUri(uri);
                            }
                        }
                        else
                        {
                            var path = url.Replace("video://", "");
                            if (path != null)
                            {
                                try
                                {
                                    Windows.Storage.StorageFolder folder = Windows.Storage.KnownFolders.VideosLibrary;
                                    Windows.Storage.StorageFile   file   = null;
                                    string ext       = System.IO.Path.GetExtension(path);
                                    string filename  = System.IO.Path.GetFileName(path);
                                    string directory = System.IO.Path.GetDirectoryName(path);
                                    while (!string.IsNullOrEmpty(directory))
                                    {
                                        string subdirectory = directory;
                                        int    pos          = -1;
                                        if ((pos = directory.IndexOf('\\')) > 0)
                                        {
                                            subdirectory = directory.Substring(0, pos);
                                        }
                                        folder = await folder.GetFolderAsync(subdirectory);

                                        if (folder != null)
                                        {
                                            if (pos > 0)
                                            {
                                                directory = directory.Substring(pos + 1);
                                            }
                                            else
                                            {
                                                directory = string.Empty;
                                            }
                                        }
                                    }
                                    if (folder != null)
                                    {
                                        file = await folder.GetFileAsync(filename);

                                        if (file != null)
                                        {
                                            player.Source = Windows.Media.Core.MediaSource.CreateFromStorageFile(file);
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    System.Diagnostics.Debug.WriteLine("Exception while opening file: " + ex.Message);
                                }
                            }
                        }
                        mediaPlayerElement.SetMediaPlayer(player);
                    }
                }
            }
        }
예제 #30
0
        private async void Compact_Click(object sender, RoutedEventArgs e)
        {
            var item = ViewModel.SelectedItem;

            if (item == null)
            {
                return;
            }

            _viewService = TLContainer.Current.Resolve <IViewService>();

            if (_mediaPlayer == null || _mediaPlayer.Source == null)
            {
                Play(item, item.GetFile());
            }

            _mediaPlayerElement.SetMediaPlayer(null);

            var width  = 340d;
            var height = 200d;

            var constraint = item.Constraint;

            if (constraint is MessageAnimation messageAnimation)
            {
                constraint = messageAnimation.Animation;
            }
            else if (constraint is MessageVideo messageVideo)
            {
                constraint = messageVideo.Video;
            }

            if (constraint is Animation animation)
            {
                width  = animation.Width;
                height = animation.Height;
            }
            else if (constraint is Video video)
            {
                width  = video.Width;
                height = video.Height;
            }

            if (width > 500 || height > 500)
            {
                var ratioX = 500d / width;
                var ratioY = 500d / height;
                var ratio  = Math.Min(ratioX, ratioY);

                width  *= ratio;
                height *= ratio;
            }

            _compactLifetime = await _viewService.OpenAsync(() =>
            {
                var element            = new MediaPlayerElement();
                element.RequestedTheme = ElementTheme.Dark;
                element.SetMediaPlayer(_mediaPlayer);
                element.TransportControls = new MediaTransportControls
                {
                    IsCompact = true,
                    IsCompactOverlayButtonVisible = false,
                    IsFastForwardButtonVisible    = false,
                    IsFastRewindButtonVisible     = false,
                    IsFullWindowButtonVisible     = false,
                    IsNextTrackButtonVisible      = false,
                    IsPlaybackRateButtonVisible   = false,
                    IsPreviousTrackButtonVisible  = false,
                    IsRepeatButtonVisible         = false,
                    IsSkipBackwardButtonVisible   = false,
                    IsSkipForwardButtonVisible    = false,
                    IsVolumeButtonVisible         = false,
                    IsStopButtonVisible           = false,
                    IsZoomButtonVisible           = false,
                };
                element.AreTransportControlsEnabled = true;
                return(element);
            }, "PIP", width, height);

            _compactLifetime.WindowWrapper.ApplicationView().Consolidated += (s, args) =>
            {
                if (_compactLifetime != null)
                {
                    _compactLifetime.StopViewInUse();
                    _compactLifetime.WindowWrapper.Window.Close();
                    _compactLifetime = null;
                }

                this.BeginOnUIThread(() =>
                {
                    Dispose();
                });
            };

            OnBackRequestedOverride(this, new HandledEventArgs());
        }