コード例 #1
0
 private async void MediaPlayer_MediaOpened(Windows.Media.Playback.MediaPlayer sender, object args)
 {
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
     {
         MusicSlider.Maximum = Mp3Player.MediaPlayer.PlaybackSession.NaturalDuration.TotalSeconds;
     });
 }
コード例 #2
0
 private void MediaPlayer_VolumeChanged(Windows.Media.Playback.MediaPlayer sender, object args)
 {
     if (MusicService.MediaPlayer.IsMuted != true)
     {
         ChangeVolumeGlyph();
     }
 }
コード例 #3
0
        /// <summary>
        /// called when a new cast session starts, and the media source was created and is ready.
        /// note that this is called before playback is started.
        /// </summary>
        /// <param name="transmitterName">display name of the transmitter</param>
        /// <param name="castPlayer">player that plays the cast stream</param>
        void OnCastStart(string transmitterName, UWPMediaPlayer castPlayer)
        {
            //show info
            Log("cast playback started");
            ShowToast(S.AppName, S.CastWelcome.ReplaceMap(new Dictionary <string, string>
            {
                { "{displayname}", miracastReceiver.DisplayName },
                { "{transmitter}", transmitterName }
            }, true));

            //init and show cast ui
            if (castUI == null)
            {
                castUI = new ImmersiveCastUI(S.AppName);
            }
            castUI.MoveToScreen(App.Config.CastDisplayId);
            castUI.SetCastSource(castPlayer);
            castUI.KeyPreview      = true;
            castUI.PreviewKeyDown += (s, e) =>
            {
                //end session with ESC
                if (e.KeyCode.Equals(Keys.Escape))
                {
                    miracastReceiver.EndCastSession();
                }
            };
            castUI.ShowImmersive();
        }
コード例 #4
0
            protected virtual void Dispose(bool disposing)
            {
                if (!disposedValue)
                {
                    if (disposing)
                    {
                        // TODO: dispose managed state (managed objects).
                    }

                    // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below.
                    // TODO: set large fields to null.
#if __IOS__
                    m_audioTrack?.Stop();
                    m_audioTrack?.Dispose();
                    m_memory?.Dispose();
                    m_memory = null;
#elif __ANDROID__
                    m_audioTrack?.Stop();
                    m_audioTrack?.Flush();
                    m_audioTrack?.Release();
                    m_audioTrack?.Dispose();
#elif NETFX_CORE
                    m_audioTrack?.Pause();
                    m_memory?.Flush();
                    m_memory?.Dispose();
                    m_memory = null;
#endif
                    m_audioTrack  = null;
                    disposedValue = true;
                }
            }
コード例 #5
0
 public MainPage()
 {
     this.InitializeComponent();
     currentCD = new CDMetadata();
     if (ListDevices.Items != null)
     {
         ListDevices.Items.Clear();
     }
     ListDeviceInformation          = new List <CDReaderDevice>();
     ListDevices.SelectionChanged  += ListDevices_SelectionChanged;
     ButtonEjectMedia.IsEnabled     = false;
     ButtonReadTable.IsEnabled      = false;
     ButtonPlayTrack.IsEnabled      = false;
     ButtonExtractTrack.IsEnabled   = false;
     ButtonPlayWavFile.IsEnabled    = false;
     ButtonStopPlayer.IsEnabled     = false;
     ButtonStartDiscover.Visibility = Visibility.Visible;
     ButtonStopDiscover.Visibility  = Visibility.Collapsed;
     ListDevices.IsEnabled          = false;
     CheckListDevices();
     FillComboTrack();
     bAutoStart = false;
     // Bind player to element
     mediaPlayer = new Windows.Media.Playback.MediaPlayer();
     mediaPlayerElement.SetMediaPlayer(mediaPlayer);
     mediaPlayer.MediaEnded  += MediaPlayer_MediaEnded;
     mediaPlayer.MediaFailed += MediaPlayer_MediaFailed;
     mediaPlayer.MediaOpened += MediaPlayer_MediaOpened;
     mediaPlayer.PlaybackSession.PlaybackStateChanged += PlaybackSession_PlaybackStateChanged;
 }
コード例 #6
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);
        }
コード例 #7
0
ファイル: MainPage.xaml.cs プロジェクト: ironsmith58/Game1
        public MainPage()
        {
            this.InitializeComponent();

            _mediaPlayer        = new Windows.Media.Playback.MediaPlayer();
            _mediaPlayer.Source = Windows.Media.Core.MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/Kevin_MacLeod_-_Nu_Flute.mp3"));
            // TODO: need to reduce volume on startup
            _mediaPlayer.Play();
        }
コード例 #8
0
ファイル: AudioPlayer.cs プロジェクト: Geeksltd/Zebble.Audio
 public AudioPlayer()
 {
     Player = new Windows.Media.Playback.MediaPlayer
     {
         Volume        = 1,
         AudioCategory = Windows.Media.Playback.MediaPlayerAudioCategory.Media,
     };
     Player.MediaEnded  += Player_MediaEnded;
     Player.MediaFailed += Player_MediaFailed;
 }
コード例 #9
0
 private async void Current_MediaEnded(Windows.Media.Playback.MediaPlayer sender, object args)
 {
     await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, async() =>
     {
         Windows.Media.Playback.BackgroundMediaPlayer.Current.MediaEnded -= Current_MediaEnded;
         BitmapImage img        = new BitmapImage(new Uri("ms-appx:///Assets/Voice/voice-on.png"));
         this.Completed         = false;
         iconVoiceStatus.Source = img;
         InitializeSpeechRecognizer();
     });
 }
コード例 #10
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));
        }
コード例 #11
0
ファイル: MainPage.xaml.cs プロジェクト: bmrxntfj/spider
        private async void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            var collectionnames = await this.MongoDatabase.ListCollectionNames().ToListAsync();

            VideoCollectionNames = collectionnames.Where(c => c.StartsWith("video")).ToArray();
            var mediaPlayer = new Windows.Media.Playback.MediaPlayer();

            mediaPlayer.TimelineController = new Windows.Media.MediaTimelineController();
            _mediaPlayerElement.SetMediaPlayer(mediaPlayer);
            //await LoadVideo();
        }
コード例 #12
0
ファイル: MusicMV.xaml.cs プロジェクト: hainam2101/SmartLens
 private async void MediaPlayer_MediaFailed(Windows.Media.Playback.MediaPlayer sender, Windows.Media.Playback.MediaPlayerFailedEventArgs args)
 {
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() =>
     {
         ContentDialog dialog = new ContentDialog
         {
             Title      = "错误",
             Content    = "无法缓冲该MV\r\r原因如下:\r\r" + args.ErrorMessage,
             Background = Application.Current.Resources["DialogAcrylicBrush"] as Brush
         };
         await dialog.ShowAsync();
     });
 }
コード例 #13
0
        public static void CleanUpMediaPlayerSource(Windows.Media.Playback.MediaPlayer mp)
        {
            if (mp?.Source != null)
            {
                var source = mp.Source as Windows.Media.Core.MediaSource;
                source?.Dispose();

                var item = mp.Source as Windows.Media.Playback.MediaPlaybackItem;
                item?.Source?.Dispose();

                mp.Source = null;
            }
        }
コード例 #14
0
        private void MediaPlayer_IsMutedChanged(Windows.Media.Playback.MediaPlayer sender, object args)
        {
            switch (MusicService.MediaPlayer.IsMuted)
            {
            case true:
                VolumeGlyph = "\uE198";
                break;

            case false:
                ChangeVolumeGlyph();
                break;
            }
        }
コード例 #15
0
ファイル: AudioPlayer.cs プロジェクト: Geeksltd/Zebble.Audio
        public void Dispose()
        {
            var player = Player;

            Player = null;
            if (player == null)
            {
                return;
            }

            player.MediaEnded  -= Player_MediaEnded;
            player.MediaFailed -= Player_MediaFailed;
            try { player.Pause(); } catch { }

            player.Dispose();
        }
コード例 #16
0
        private async void SoundEffect()
        {
            this.mediaPlayerAudio.SetMediaPlayer(_mediaPlayer);
            this.mediaPlayerAudio.Source = MediaSource.CreateFromUri(new Uri("ms-appx:///Danzon_De_Pasion_Sting.mp3"));
            this._mediaPlayer            = mediaPlayerAudio.MediaPlayer;
            this._mediaPlayer.Volume     = 1f;



            await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
                                             () =>

            {
                this._mediaPlayer.Play();
            });
        }
コード例 #17
0
 private void Slider_PointerReleased(object sender, PointerRoutedEventArgs e)
 {
     if (PlaybackEngine.PlaybackEngine.Current.IsPlaying == null || PlaybackEngine.PlaybackEngine.Current.IsPlaying == false)
     {
         var player = new Windows.Media.Playback.MediaPlayer
         {
             Source = Windows.Media.Core.MediaSource.CreateFromUri(new Uri("ms-winsoundevent:Notification.Reminder"))
         };
         player.Volume      = Settings.Current.PlayerVolume / 100d;
         player.MediaEnded += (a, v) =>
         {
             player.Dispose();
         };
         player.Play();
     }
 }
コード例 #18
0
        /// <summary>
        /// end the current cast session, and call CastEnd event
        /// </summary>
        /// <param name="sendEvent">should CastEnd be called?</param>
        void EndCurrentSession(bool sendEvent)
        {
            currentPlayer?.Pause();
            currentPlayer?.Dispose();
            currentPlayer = null;

            CurrentConnection?.Disconnect(MiracastReceiverDisconnectReason.Finished);
            CurrentConnection = null;

            currentSession?.Dispose();
            currentSession = null;

            if (sendEvent)
            {
                CastEnd?.Invoke();
            }
        }
コード例 #19
0
 private async void MediaPlayer_VolumeChangedAsync(Windows.Media.Playback.MediaPlayer sender, object args)
 {
     try
     {
         UserSettings.localSettings.Values["Volume"] = sender.Volume.ToString();
     }
     catch (Exception e)
     {
         await new ContentDialog
         {
             Title           = "Error Occored",
             Content         = e.Message,
             CloseButtonText = "Closed",
             DefaultButton   = ContentDialogButton.Close
         }.ShowAsync();
     }
 }
コード例 #20
0
ファイル: MediaView.xaml.cs プロジェクト: xyzrs/TVHelpers
        public static void CleanUpMediaPlayerSource(Windows.Media.Playback.MediaPlayer mp)
        {
            if (mp?.Source != null)
            {
                var source = mp.Source as Windows.Media.Core.MediaSource;
                source?.Dispose();

                var item = mp.Source as Windows.Media.Playback.MediaPlaybackItem;
                item?.Source?.Dispose();

                //var itemList = mp.Source as Windows.Media.Playback.MediaPlaybackList;
                //foreach (var playbackItem in itemList.Items)
                //{
                //    playbackItem?.Source?.Dispose();
                //}
            }
        }
コード例 #21
0
        /// <summary>
        /// Invoked when the application is launched normally by the end user.  Other entry points
        /// will be used such as when the application is launched to open a specific file.
        /// </summary>
        /// <param name="e">Details about the launch request and process.</param>
        protected override void OnLaunched(LaunchActivatedEventArgs e)
        {
            Frame rootFrame = Window.Current.Content as Frame;

            // Do not repeat app initialization when the Window already has content,
            // just ensure that the window is active
            if (rootFrame == null)
            {
                // Create a Frame to act as the navigation context and navigate to the first page
                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;

                // - - -  - - -

                MediaPlayer.Current.Init();
                Windows.Media.Playback.MediaPlayer Player = (Windows.Media.Playback.MediaPlayer)MediaPlayer.Current.Player;

                Player.Volume = 1;

                // - - -  - - -

                Xamarin.Forms.Forms.Init(e);

                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    //TODO: Load state from previously suspended application
                }

                // Place the frame in the current Window
                Window.Current.Content = rootFrame;
            }

            if (rootFrame.Content == null)
            {
                // When the navigation stack isn't restored navigate to the first page,
                // configuring the new page by passing required information as a navigation
                // parameter
                rootFrame.Navigate(typeof(MainPage), e.Arguments);
            }
            // Ensure the current window is active
            Window.Current.Activate();
        }
コード例 #22
0
        /// <summary>
        /// a media source was created for the current session (start rendering to ui)
        /// </summary>
        void OnSessionMediaSourceCreated(MiracastReceiverSession sender, MiracastReceiverMediaSourceCreatedEventArgs args)
        {
            //set flag
            currentConnectionTimeoutCancellation?.Cancel();

            //init mediaplayer
            currentPlayer = new UWPMediaPlayer()
            {
                Source = args.MediaSource,
                IsVideoFrameServerEnabled = false,
                AutoPlay         = true,
                RealTimePlayback = true
            };

            //call event
            CastStart?.Invoke(CurrentConnection.Transmitter.Name, currentPlayer);

            //start playback
            Log($"starting playback of {CurrentConnection.Transmitter.Name} ({CurrentConnection.Transmitter.MacAddress})");
            currentPlayer.Play();
        }
コード例 #23
0
ファイル: DetailsPage.xaml.cs プロジェクト: 27043591/GUI-
        private void MediaPlayer_CurrentStateChanged(Windows.Media.Playback.MediaPlayer sender, object args)
        {
            var t = PlayButton.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                switch (sender.PlaybackSession.PlaybackState)
                {
                case Windows.Media.Playback.MediaPlaybackState.Playing:
                    PlayPauseIcon.Symbol = Symbol.Pause;
                    PlayButton.IsEnabled = true;
                    break;

                case Windows.Media.Playback.MediaPlaybackState.Paused:
                    PlayPauseIcon.Symbol = Symbol.Play;
                    PlayButton.IsEnabled = true;
                    break;

                default:
                    PlayButton.IsEnabled = true;
                    break;
                }
            });
        }
コード例 #24
0
            public async void Stop()
            {
                if (m_PlayThread != Unit.CompletedTask)
                {
                    try
                    {
                        cancellation.Cancel();
                        await m_PlayThread;
                    }
                    catch (Exception)
                    {
                    }
                }
                if (m_audioTrack != null)
                {
#if !WINDOWS_UWP
                    m_audioTrack.Stop();
                    m_audioTrack.Dispose();
#else
                    m_audioTrack.Pause();
#endif
                    m_audioTrack = null;
                }
            }
コード例 #25
0
ファイル: MainPage.xaml.cs プロジェクト: flecoqui/Windows10
        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.
        /// This parameter is typically used to configure the page.</param>
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            // TODO: Prepare page for display here.

            // TODO: If your application contains multiple pages, ensure that you are
            // handling the hardware Back button by registering for the
            // Windows.Phone.UI.Input.HardwareButtons.BackPressed event.
            // If you are using the NavigationHelper provided by some templates,
            // this event is handled for you.
            LogMessage("MainPage OnNavigatedTo");
            await ReadSettings();
            // Bind player to element
            mediaPlayer = new Windows.Media.Playback.MediaPlayer();
            mediaPlayerElement.SetMediaPlayer(mediaPlayer);
                       
            if (e.NavigationMode != NavigationMode.New)
                RestoreState();

            // Register Suspend/Resume
            Application.Current.Suspending += Current_Suspending;
            Application.Current.Resuming += Current_Resuming;


            // Register Smooth Streaming component
            RegisterSmoothStreaming();
            // Register PlayReady component
            RegisterPlayReady();
            // Register Device Watcher
            RegisterDeviceWatcher();

            // Register UI components and events
            await RegisterUI();

            // Load Data
            if(string.IsNullOrEmpty(MediaDataSource.MediaDataPath))
            {
                LogMessage("MainPage Loading Data...");
                await LoadingData(string.Empty);
            }

            // Update control and play first video
            UpdateControls();

            // Start to play the first asset
            if (bAutoSkip)
                PlayCurrentUrl();

            // Display OS, Device information
            LogMessage(Information.SystemInformation.GetString());

        }
コード例 #26
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MediaPlayer"/> class, a
 /// Wpf-enabled wrapper for <see cref="Windows.Media.Playback.MediaPlayer"/>
 /// </summary>
 public MediaPlayer(Windows.Media.Playback.MediaPlayer instance)
 {
     this.UwpInstance = instance;
 }
コード例 #27
0
ファイル: AudioPlayer.cs プロジェクト: Geeksltd/Zebble.Audio
 void Player_MediaFailed(Windows.Media.Playback.MediaPlayer sender, Windows.Media.Playback.MediaPlayerFailedEventArgs args)
 {
     Ended.TrySetException(new Exception("Failed to play audio > " + args.ErrorMessage));
 }
コード例 #28
0
 private void MediaPlayer_MediaFailed(Windows.Media.Playback.MediaPlayer sender, Windows.Media.Playback.MediaPlayerFailedEventArgs args)
 {
     LogMessage("MediaPlayer media failed event");
 }
コード例 #29
0
 private void MediaPlayer_MediaEnded(Windows.Media.Playback.MediaPlayer sender, object args)
 {
     LogMessage("MediaPlayer media ended event");
 }
コード例 #30
0
            public void Play()
            {
                m_PlayThread = Unit.InvokeAsync(
                    () =>
                {
                    try
                    {
                        int iToneStep = 0;

                        m_audioTrack =
#if __ANDROID__
                            new Android.Media.AudioTrack
                            (
                                Android.Media.Stream.Music,
                                SampleRate,
                                Android.Media.ChannelOut.Mono,
                                Android.Media.Encoding.Pcm16bit,
                                2 * SampleRate,
                                Android.Media.AudioTrackMode.Stream
                            )
#elif __IOS__
                            AVFoundation.AVAudioPlayer.FromData(m_memory)
#elif WINDOWS_UWP
                            new Windows.Media.Playback.MediaPlayer
                        {
                            Source = Windows.Media.Core.MediaSource.CreateFromStream(
                                System.IO.WindowsRuntimeStreamExtensions.AsRandomAccessStream(m_memory),
                                "audio/wav")
                        }
#endif
                        ;
#if __ANDROID__
                        m_audioTrack.SetVolume((float)m_volume);
#elif __IOS__
                        m_audioTrack.Volume = (float)m_volume;
#elif WINDOWS_UWP
                        m_audioTrack.Volume = m_volume;
#endif


                        while (!cancellation.IsCancellationRequested && m_play_length-- > 0)
                        {
                            GenTone(iToneStep++);

#if __ANDROID__
                            m_audioTrack.Write(generatedSnd, 0, generatedSnd.Length);
#elif __IOS__
                            m_memory.AppendBytes(generatedSnd);
#elif WINDOWS_UWP
                            m_memory.Write(generatedSnd, 0, generatedSnd.Length);
#endif

                            if (iToneStep == 1)
                            {
                                m_audioTrack.Play();
                            }
                        }
                    }
                    catch (OutOfMemoryException e)
                    {
                        Log(e, LogImportance.E);
                    }
                    catch (Exception e)
                    {
                        Log(e, LogImportance.W);
                    }
                }, cancellation.Token
                    );
            }
コード例 #31
0
ファイル: MediaPlaybackSession.cs プロジェクト: jokm1/uno-2
 internal MediaPlaybackSession(Windows.Media.Playback.MediaPlayer mediaPlayer)
 {
     MediaPlayer = mediaPlayer;
 }