예제 #1
0
        public PlayerVLC(string titleText, MainForm mf)
        {
            MF = mf;
            InitializeComponent();
            var arguments = new[] { "--file-caching=" + MainForm.Conf.VLCFileCache };

            _mFactory = new MediaPlayerFactory(arguments);
            _mPlayer  = _mFactory.CreatePlayer <IDiskPlayer>();

            _mPlayer.Events.PlayerPositionChanged += EventsPlayerPositionChanged;
            _mPlayer.Events.TimeChanged           += EventsTimeChanged;
            _mPlayer.Events.MediaEnded            += EventsMediaEnded;
            _mPlayer.Events.PlayerStopped         += EventsPlayerStopped;

            _mPlayer.WindowHandle = pnlMovie.Handle;

            if (_mPlayer.Volume >= trackBar2.Minimum && _mPlayer.Volume <= trackBar2.Maximum)
            {
                trackBar2.Value = _mPlayer.Volume;
            }

            RenderResources();
            _titleText           = titleText;
            chkRepeatAll.Checked = MainForm.VLCRepeatAll;
        }
예제 #2
0
        public MediaPlayer()
        {
            InitializeComponent();

            this.btnMute.BackgroundImage  = UIHelper.LoadResourceImage("Resources.btn_volume_mute.png");
            this.btnPause.BackgroundImage = UIHelper.LoadResourceImage("Resources.btn_pause.png");
            this.btnPlay.BackgroundImage  = UIHelper.LoadResourceImage("Resources.btn_play.png");
            this.btnStop.BackgroundImage  = UIHelper.LoadResourceImage("Resources.btn_stop.png");
            this.pnlVideo.BackgroundImage = UIHelper.LoadResourceImage("Resources.pnl_video.png");

            fFactory = new MediaPlayerFactory(FIND_LIBVLC);
            fPlayer  = fFactory.CreatePlayer <IDiskPlayer>();

            fPlayer.Events.PlayerPositionChanged += Events_PlayerPositionChanged;
            fPlayer.Events.TimeChanged           += Events_TimeChanged;
            fPlayer.Events.MediaEnded            += Events_MediaEnded;
            fPlayer.Events.PlayerStopped         += Events_PlayerStopped;

            fPlayer.WindowHandle = pnlVideo.Handle;

            trkVolume.Value = Math.Max(0, fPlayer.Volume);
            trkVolume_Scroll(null, null);

            fMedia = null;

            UISync.Init(this);
        }
예제 #3
0
 protected override void Dispose(bool disposing)
 {
     if (m_videoPlayer != null)
     {
         m_videoPlayer.Dispose();
         m_videoPlayer = null;
     }
     LibVlcMethods.libvlc_media_list_player_release(m_hMediaListPlayer);
 }
 public MainWindow()
 {
     InitializeComponent();
     m_factory             = new MediaPlayerFactory(true);
     m_player              = m_factory.CreatePlayer <IDiskPlayer>();
     m_player.WindowHandle = this.VideoCanvas.Handle;
     m_player.Events.PlayerPositionChanged += Events_PlayerPositionChanged;
     m_player.Events.PlayerStopped         += Events_PlayerStopped;
     m_player.Events.MediaEnded            += Events_MediaEnded;
 }
예제 #5
0
        public MediaListPlayer(IntPtr hMediaLib, IMediaList mediaList)
        {
            m_mediaList = mediaList;
            m_hMediaListPlayer = LibVlcMethods.libvlc_media_list_player_new(hMediaLib);
            LibVlcMethods.libvlc_media_list_player_set_media_list(m_hMediaListPlayer, ((INativePointer)m_mediaList).Pointer);
            m_mediaList.Dispose();

            m_videoPlayer = new DiskPlayer(hMediaLib);
            LibVlcMethods.libvlc_media_list_player_set_media_player(m_hMediaListPlayer, ((INativePointer)m_videoPlayer).Pointer);
            m_videoPlayer.Dispose();
        }
예제 #6
0
        public MediaListPlayer(IntPtr hMediaLib, IMediaList mediaList)
        {
            m_mediaList        = mediaList;
            m_hMediaListPlayer = LibVlcMethods.libvlc_media_list_player_new(hMediaLib);
            LibVlcMethods.libvlc_media_list_player_set_media_list(m_hMediaListPlayer, ((INativePointer)m_mediaList).Pointer);
            m_mediaList.Dispose();

            m_videoPlayer = new DiskPlayer(hMediaLib);
            LibVlcMethods.libvlc_media_list_player_set_media_player(m_hMediaListPlayer, ((INativePointer)m_videoPlayer).Pointer);
            m_videoPlayer.Dispose();
        }
예제 #7
0
        private bool _videoPlayState; // 当前播放的状态

        public HikFilePlayer()
        {
            _vlcplayer = Vlcfactory.CreatePlayer <IDiskPlayer>();
            _vlcplayer.Events.MediaEnded            += Events_MediaEnded;
            _vlcplayer.Events.PlayerStopped         += Events_PlayerStopped;
            _vlcplayer.Events.TimeChanged           += Events_TimeChanged;
            _vlcplayer.Events.PlayerPositionChanged += Events_PlayerPositionChanged;

            //// 调整为1.5倍速播放
            //_vlcplayer.PlaybackRate = 1.5F * _vlcplayer.PlaybackRate;
        }
        /// <summary>
        /// Initialize nVLC Component
        /// </summary>
        private void Init_nVLC()
        {
            m_factory = new MediaPlayerFactory(true);
            m_player  = m_factory.CreatePlayer <IDiskPlayer>();

            m_player.Events.PlayerPositionChanged += new EventHandler <MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
            m_player.Events.TimeChanged           += new EventHandler <MediaPlayerTimeChanged>(Events_TimeChanged);
            m_player.Events.MediaEnded            += new EventHandler(Events_MediaEnded);
            m_player.Events.PlayerStopped         += new EventHandler(Events_PlayerStopped);

            m_player.WindowHandle = panel1.Handle;
        }
예제 #9
0
        /// <summary>
        /// Load the media file.
        /// </summary>
        /// <param name="mediaString">The media file to load.</param>
        /// <param name="mediaIndex">The media index type to load.</param>
        private void LoadMedia(string mediaString, int mediaIndex)
        {
            // If a media string has been selected.
            if (!String.IsNullOrEmpty(mediaString))
            {
                try
                {
                    // Create the player.
                    _player            = new MediaPlayerFactory(true);
                    _disk              = _player.CreatePlayer <IDiskPlayer>();
                    _disk.WindowHandle = this.panelMediaDisplay.Handle;

                    _disk.Events.PlayerPositionChanged += new EventHandler <MediaPlayerPositionChanged>(_disk_PlayerPositionChanged);
                    _disk.Events.TimeChanged           += new EventHandler <MediaPlayerTimeChanged>(_disk_TimeChanged);
                    _disk.Events.MediaEnded            += new EventHandler(_disk_MediaEnded);
                    _disk.Events.PlayerStopped         += new EventHandler(_disk_MediaEnded);

                    // The initialisation sync.
                    UISync.Init(this);

                    // Open the correct media type.
                    switch (mediaIndex)
                    {
                    case 0:
                    case 1:
                        // Open the media file.
                        _media = _player.CreateMedia <IMediaFromFile>(mediaString);
                        break;

                    case 2:
                    default:
                        // Open the media file.
                        _media = _player.CreateMedia <IMedia>(mediaString);
                        break;
                    }

                    // Get the duration changed event.
                    _media.Events.DurationChanged += new EventHandler <MediaDurationChange>(_media_DurationChanged);

                    // Open the media.
                    _disk.Open(_media);
                    _media.Parse(true);

                    // Enable controls.
                    EnabledControls(true);
                    _hasClosed     = false;
                    this.AllowDrop = false;
                }
                catch { }
            }
        }
예제 #10
0
        /// <summary>
        /// Closes the media player and releases all resources.
        /// </summary>
        public void CloseMedia()
        {
            if (_player != null)
            {
                // Close the media player.
                _disk.Stop();
                _disk.Dispose();
                _player.Dispose();
                _media.Dispose();
            }

            _player = null;
            _disk   = null;
            _media  = null;
        }
예제 #11
0
파일: PlayerForm.cs 프로젝트: vmail/main
        public PlayerForm()
        {
            InitializeComponent();

            _mFactory = new MediaPlayerFactory();
            _mPlayer = _mFactory.CreatePlayer<IDiskPlayer>();

            _mPlayer.Events.PlayerPositionChanged += EventsPlayerPositionChanged;
            _mPlayer.Events.TimeChanged += EventsTimeChanged;
            _mPlayer.Events.MediaEnded += EventsMediaEnded;
            _mPlayer.Events.PlayerStopped += EventsPlayerStopped;

            _mPlayer.WindowHandle = pnlMovie.Handle;
            trackBar2.Value = _mPlayer.Volume;
            RenderResources();
        }
예제 #12
0
        public Player()
        {
            InitializeComponent();

            m_factory = new MediaPlayerFactory(false);
            m_player  = m_factory.CreatePlayer <IDiskPlayer>();

            m_player.Events.PlayerPositionChanged += new EventHandler <MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
            m_player.Events.TimeChanged           += new EventHandler <MediaPlayerTimeChanged>(Events_TimeChanged);
            m_player.Events.MediaEnded            += new EventHandler(Events_MediaEnded);
            m_player.Events.PlayerStopped         += new EventHandler(Events_PlayerStopped);

            m_player.WindowHandle = pnlMovie.Handle;
            trackBar2.Value       = m_player.Volume;
            RenderResources();
        }
예제 #13
0
        public PlayerForm()
        {
            InitializeComponent();

            _mFactory = new MediaPlayerFactory();
            _mPlayer  = _mFactory.CreatePlayer <IDiskPlayer>();

            _mPlayer.Events.PlayerPositionChanged += EventsPlayerPositionChanged;
            _mPlayer.Events.TimeChanged           += EventsTimeChanged;
            _mPlayer.Events.MediaEnded            += EventsMediaEnded;
            _mPlayer.Events.PlayerStopped         += EventsPlayerStopped;

            _mPlayer.WindowHandle = pnlMovie.Handle;
            trackBar2.Value       = _mPlayer.Volume;
            RenderResources();
        }
예제 #14
0
        public Subframe(JsonObject paramSchedule)
        {
            InitializeComponent();

            JsonObjectCollection col = (JsonObjectCollection)paramSchedule;
            frameInfoStrc frameInfo = new frameInfoStrc();

            frameInfo.xPos = int.Parse(col["xPos"].GetValue().ToString());
            frameInfo.yPos = int.Parse(col["yPos"].GetValue().ToString());
            frameInfo.width = int.Parse(col["width"].GetValue().ToString());
            frameInfo.height = int.Parse(col["height"].GetValue().ToString());
            frameInfo.contentsFileName = (string)col["fileName"].GetValue();
            frameInfo.mute = bool.Parse(col["mute"].GetValue().ToString());

            if (frameInfo.width == 0)
            {
                this.WindowState = FormWindowState.Maximized;
            }
            else
            {
                this.Width = frameInfo.width;
                this.Height = frameInfo.height;

            }
            this.Location = new System.Drawing.Point(frameInfo.xPos, frameInfo.yPos);

            # region ==== Create Player ====
            m_factory = new MediaPlayerFactory(true);
            m_player = m_factory.CreatePlayer<IDiskPlayer>();
            m_player.AspectRatio = AspectRatioMode.Default;
            m_player.Mute = frameInfo.mute;

            m_player.WindowHandle = this.pnlPlayerBack.Handle;

            UISync.Init(this);
            #endregion ======================

            #region ==== Contents play ====
            FileInfo contentsFileInfo = new FileInfo(@frameInfo.contentsFileName);
            m_media = m_factory.CreateMedia<IMediaFromFile>(contentsFileInfo.FullName);

            m_player.Open(m_media);
            m_media.Parse(true);

            m_player.Play();
            #endregion =====================
        }
예제 #15
0
파일: Form1.cs 프로젝트: todatamining/nVLC
        public Form1()
        {
            InitializeComponent();

            m_factory = new MediaPlayerFactory();
            m_player  = m_factory.CreatePlayer <IDiskPlayer>();

            m_player.Events.PlayerPositionChanged += new EventHandler <MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
            m_player.Events.TimeChanged           += new EventHandler <MediaPlayerTimeChanged>(Events_TimeChanged);
            m_player.Events.MediaEnded            += new EventHandler(Events_MediaEnded);
            m_player.Events.PlayerStopped         += new EventHandler(Events_PlayerStopped);

            m_player.WindowHandle = panel1.Handle;
            trackBar2.Value       = m_player.Volume;

            UISync.Init(this);
        }
예제 #16
0
        public Form1()
        {
            InitializeComponent();

            m_factory = new MediaPlayerFactory();
            m_player = m_factory.CreatePlayer<IDiskPlayer>();

            m_player.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
            m_player.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
            m_player.Events.MediaEnded += new EventHandler(Events_MediaEnded);
            m_player.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);

            m_player.WindowHandle = panel1.Handle;
            trackBar2.Value = m_player.Volume;

            UISync.Init(this);
        }
예제 #17
0
        public Form1()
        {
            InitializeComponent();

            _mFactory = new MediaPlayerFactory(true);
            _mPlayer = _mFactory.CreatePlayer<IDiskPlayer>();

            _mPlayer.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
            _mPlayer.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
            _mPlayer.Events.MediaEnded += new EventHandler(Events_MediaEnded);
            _mPlayer.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);
            _mPlayer.AspectRatio = AspectRatioMode.Default;
            _mPlayer.WindowHandle = panel1.Handle;
            trackBar2.Value = _mPlayer.Volume > 0 ? _mPlayer.Volume : 0;

            UiSync.Init(this);
        }
예제 #18
0
        public MediaPlayer()
        {
            InitializeComponent();

            fFactory = new MediaPlayerFactory(FIND_LIBVLC);
            fPlayer  = fFactory.CreatePlayer <IDiskPlayer>();

            fPlayer.Events.PlayerPositionChanged += Events_PlayerPositionChanged;
            fPlayer.Events.TimeChanged           += Events_TimeChanged;
            fPlayer.Events.MediaEnded            += Events_MediaEnded;
            fPlayer.Events.PlayerStopped         += Events_PlayerStopped;

            fPlayer.WindowHandle = pnlVideo.Handle;

            trkVolume.Value = Math.Max(0, fPlayer.Volume);
            trkVolume_Scroll(null, null);

            fMedia = null;

            UISync.Init(this);
        }
예제 #19
0
        public void Stop()
        {
            if (!_bIsInitial)
            {
                return;
            }

            if (_vlcmedia != null)
            {
                _vlcmedia.Events.StateChanged    -= Events_StateChanged;
                _vlcmedia.Events.DurationChanged -= Events_DurationChanged;
                _vlcmedia.Dispose();
            }
            if ((_vlcplayer != null) && (_vlcplayer.Events != null))
            {
                _vlcplayer.Events.MediaEnded            -= Events_MediaEnded;
                _vlcplayer.Events.PlayerStopped         -= Events_PlayerStopped;
                _vlcplayer.Events.TimeChanged           -= Events_TimeChanged;
                _vlcplayer.Events.PlayerPositionChanged -= Events_PlayerPositionChanged;
            }
            _vlcplayer = null;
        }
예제 #20
0
        public PlayerVLC(string titleText, MainForm mf)
        {
            MF = mf;
            InitializeComponent();
            var arguments = new[] { "--file-caching="+MainForm.Conf.VLCFileCache };
            _mFactory = new MediaPlayerFactory(arguments);
            _mPlayer = _mFactory.CreatePlayer<IDiskPlayer>();

            _mPlayer.Events.PlayerPositionChanged += EventsPlayerPositionChanged;
            _mPlayer.Events.TimeChanged += EventsTimeChanged;
            _mPlayer.Events.MediaEnded += EventsMediaEnded;
            _mPlayer.Events.PlayerStopped += EventsPlayerStopped;

            _mPlayer.WindowHandle = pnlMovie.Handle;

             if (_mPlayer.Volume>=trackBar2.Minimum && _mPlayer.Volume<=trackBar2.Maximum)
                trackBar2.Value = _mPlayer.Volume;

             RenderResources();
             _titleText = titleText;
             chkRepeatAll.Checked = MainForm.VLCRepeatAll;
        }
예제 #21
0
        /// <summary>
        /// Close the player.
        /// </summary>
        private void ClosePlayer()
        {
            if (_player != null)
            {
                trackBarMain.Enabled = false;
                trackBarMain.Value   = 0;
                labelTime.Text       = "00:00:00";
                labelDuration.Text   = "00:00:00";
                EnabledOnCloseControls(false);

                // Close the media player.
                _disk.Stop();
                _disk.Dispose();
                _player.Dispose();
                _media.Dispose();
            }

            _player        = null;
            _disk          = null;
            _media         = null;
            _hasClosed     = true;
            this.AllowDrop = true;
        }
예제 #22
0
        public Form1()
        {
            InitializeComponent();
            Screen Srn = Screen.PrimaryScreen;             /*  This works well...  */

            tempHeight = Srn.Bounds.Height;
            tempWidth  = Srn.Bounds.Width;

            this.Height              = tempHeight;
            this.Width               = tempWidth;
            tableLayoutPanel1.Width  = tempWidth;
            tableLayoutPanel1.Height = (tempHeight * 9 / 10);
            //tableLayoutPanel1.Height = tempHeight;

            m_factory = new IMediaPlayerFactory[4];

            m_media = new IMedia[4];

            m_filemedia = new IMediaFromFile[4];

            m_player = new IDiskPlayer[4];

            m_playerr = new IVideoPlayer[4];

            m_factory1 = new MediaPlayerFactory(true);
            m_factory2 = new MediaPlayerFactory(true);
            m_factory3 = new MediaPlayerFactory(true);
            m_factory4 = new MediaPlayerFactory(true);
            m_factory5 = new MediaPlayerFactory(true);
            m_factory6 = new MediaPlayerFactory(true);
            m_factory7 = new MediaPlayerFactory(true);
            m_factory8 = new MediaPlayerFactory(true);

            m_player1 = m_factory1.CreatePlayer <IDiskPlayer>();
            m_player2 = m_factory2.CreatePlayer <IDiskPlayer>();
            m_player3 = m_factory3.CreatePlayer <IDiskPlayer>();
            m_player4 = m_factory4.CreatePlayer <IDiskPlayer>();

            m_player5 = m_factory5.CreatePlayer <IVideoPlayer>();
            m_player6 = m_factory6.CreatePlayer <IVideoPlayer>();
            m_player7 = m_factory7.CreatePlayer <IVideoPlayer>();
            m_player8 = m_factory8.CreatePlayer <IVideoPlayer>();

            // m_player1.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
            // m_player1.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
            // m_player1.Events.MediaEnded += new EventHandler(Events_MediaEnded);
            // m_player1.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);

            // m_player2.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
            // m_player2.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
            // m_player2.Events.MediaEnded += new EventHandler(Events_MediaEnded);
            // m_player2.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);

            // m_player3.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
            // m_player3.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
            // m_player3.Events.MediaEnded += new EventHandler(Events_MediaEnded);
            // m_player3.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);

            // m_player4.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
            // m_player4.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
            // m_player4.Events.MediaEnded += new EventHandler(Events_MediaEnded);
            // m_player4.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);

            m_player5.Events.PlayerPositionChanged += new EventHandler <MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
            m_player5.Events.TimeChanged           += new EventHandler <MediaPlayerTimeChanged>(Events_TimeChanged);
            m_player5.Events.MediaEnded            += new EventHandler(Events_MediaEnded);
            m_player5.Events.PlayerStopped         += new EventHandler(Events_PlayerStopped);

            /*
             * m_player6.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
             * m_player6.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
             * m_player6.Events.MediaEnded += new EventHandler(Events_MediaEnded);
             * m_player6.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);
             *
             * m_player7.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
             * m_player7.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
             * m_player7.Events.MediaEnded += new EventHandler(Events_MediaEnded);
             * m_player7.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);
             *
             * m_player8.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
             * m_player8.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
             * m_player8.Events.MediaEnded += new EventHandler(Events_MediaEnded);
             * m_player8.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);
             */

            m_player1.WindowHandle = panel1.Handle;

            // You don't need volume control when every computer already has it.
            trackBar2.Value = 100;//m_player1.Volume > 0 ? m_player1.Volume : 0;
            /* Fix trackbar functionality later */

            m_player2.WindowHandle = panel2.Handle;
            /* trackBar3.Value = m_player2.Volume > 0 ? m_player2.Volume : 0; */

            m_player3.WindowHandle = panel3.Handle;

            m_player4.WindowHandle = panel4.Handle;

            m_player5.WindowHandle = panel1.Handle;

            m_player6.WindowHandle = panel2.Handle;

            m_player7.WindowHandle = panel3.Handle;

            m_player8.WindowHandle = panel4.Handle;

            UISync.Init(this);
        }
예제 #23
0
 protected override void Dispose(bool disposing)
 {
     if (m_videoPlayer != null)
     {
         m_videoPlayer.Dispose();
         m_videoPlayer = null;
     }
     LibVlcMethods.libvlc_media_list_player_release(m_hMediaListPlayer);
 }
예제 #24
0
        public PlayerForm(Form ParentForm, List <string> PlayerSongInfoList)
        {
            InitializeComponent();

            this.Owner         = ParentForm;
            SongId             = PlayerSongInfoList[0];
            SongLang           = PlayerSongInfoList[1];
            SongSinger         = PlayerSongInfoList[2];
            SongSongName       = PlayerSongInfoList[3];
            SongTrack          = PlayerSongInfoList[4];
            SongFilePath       = PlayerSongInfoList[5];
            dvRowIndex         = PlayerSongInfoList[6];
            UpdateDataGridView = PlayerSongInfoList[7];

            this.Text = "【" + SongLang + "】" + SongSinger + " - " + SongSongName;

            m_factory             = new MediaPlayerFactory(true);
            m_player              = m_factory.CreatePlayer <IDiskPlayer>();
            m_player.WindowHandle = Player_Panel.Handle;

            Player_ProgressTrackBar.ProgressBarValue = 0;
            Player_ProgressTrackBar.TrackBarValue    = 0;

            m_media = m_factory.CreateMedia <IMediaFromFile>(SongFilePath);
            m_player.Open(m_media);
            m_media.Parse(true);
            m_player.Mute = true;
            m_player.Play();

            Thread.Sleep(1000);

            bool WaitTrackInfo = false;

            while (!WaitTrackInfo)
            {
                if (m_player.AudioTrackCount > 1)
                {
                    foreach (Declarations.TrackDescription TrackDesc in m_player.AudioTracksInfo)
                    {
                        if (TrackDesc.Id != -1)
                        {
                            WaitTrackInfo = true;
                        }
                    }
                }
            }

            List <int> TrackIdList = new List <int>();

            foreach (Declarations.TrackDescription TrackDesc in m_player.AudioTracksInfo)
            {
                TrackIdList.Add(TrackDesc.Id);
            }

            if (TrackIdList.Count > 2)
            {
                switch (SongTrack)
                {
                case "1":
                    if (m_player.AudioTrack != TrackIdList[1])
                    {
                        m_player.AudioTrack = TrackIdList[1];
                    }
                    break;

                case "2":
                    if (m_player.AudioTrack != TrackIdList[2])
                    {
                        m_player.AudioTrack = TrackIdList[2];
                    }
                    break;
                }
                Player_CurrentChannelValue_Label.Text = (TrackIdList.IndexOf(m_player.AudioTrack) == Convert.ToInt32(SongTrack)) ? "伴唱" : "人聲";
            }
            else
            {
                string ChannelValue = "";
                switch (SongTrack)
                {
                case "1":
                    if (m_player.Channel != AudioChannelType.Left)
                    {
                        m_player.Channel = AudioChannelType.Left;
                    }
                    ChannelValue = "1";
                    break;

                case "2":
                    if (m_player.Channel != AudioChannelType.Right)
                    {
                        m_player.Channel = AudioChannelType.Right;
                    }
                    ChannelValue = "2";
                    break;
                }
                Player_CurrentChannelValue_Label.Text = (ChannelValue == SongTrack) ? "伴唱" : "人聲";
            }

            m_player.Events.PlayerPositionChanged += new EventHandler <MediaPlayerPositionChanged>(Events_PlayerPositionChanged);

            m_player.Position = 0;
            m_player.Mute     = false;

            timer.Tick    += new EventHandler(timer_Tick);
            timer.Interval = 500;
            timer.Start();
        }
예제 #25
0
 public PlayerController(IDiskPlayer player, IMediaPlayerFactory playerFactory)
 {
     mPlayer        = player;
     mPlayerFactory = playerFactory;
 }