2015-02-19 2 views
0

Я пытаюсь сделать телевизор в приложении формы C#, и до сих пор все прошло хорошо, но только то, что я ищу здесь, - это то, как заставить его играть следующий URL-адрес, когда текущий закончен. Если он должен быть телевизором, он не должен прекращать играть! Я хочу, чтобы моя программа, когда пользователь выбирает определенный канал, постоянно воспроизводит кучу URL-адресов вместо одного, пока пользователь не переключится на другой канал, а затем начнет воспроизведение другой группы URL-адресов. и было бы супер здорово, если он возобновит видео, когда пользователь переключится на предыдущий канал, отличный от воспроизведения случайного нового URL-адреса среди списка URL, который он должен играть. но если вы думаете, что слишком сложно забыть об этом, я начинающий! спасибо Ваша помощь приветствуется!Несколько URL-адресов, играющих в C# windows media player

ответ

0

Попробуйте подключить обработчик событий PlayStateChange и использовать его для повторного запуска проигрывателя со следующим URL-адресом. Вот пара фрагментов кода из моей программы, которая повторяется один и тот же URL снова и снова, но принцип должен быть одинаковым.

// Reference to an Interop object for the COM object that interfaces with Microsoft Windows 
    // Media Player 
    private readonly WindowsMediaPlayer _windowsMediaPlayer = null; 

    // Number of repeats left, negative = keep looping 
    private int _repeatCount = -1; 

...

// Instantiate the Windows Media Player Interop object 
    _windowsMediaPlayer = new WindowsMediaPlayer(); 

    // Hook up a couple of event handlers 
    _windowsMediaPlayer.MediaError += WindowsMediaPlayer_MediaError; 
    _windowsMediaPlayer.PlayStateChange += WindowsMediaPlayer_PlayStateChange; 

...

/// <summary> 
    /// Method to start the media player playing a file. 
    /// </summary> 
    /// <param name="fileName">complete file name</param> 
    /// <param name="repeatCount">zero = repeat indefinitely, else number of times to repeat</param> 
    [SuppressMessage("Microsoft.Usage", "CA2233:OperationsShouldNotOverflow", MessageId = "repeatCount-1")] 
    public void PlayMediaFile(string fileName, int repeatCount) 
    { 
    if (_windowsMediaPlayer == null) 
     return; 

    _repeatCount = --repeatCount; // Zero -> -1, 1 -> zero, etc. 

    if (_windowsMediaPlayer.playState == WMPPlayState.wmppsPlaying) 
     _windowsMediaPlayer.controls.stop(); // Probably unnecessary 

    _windowsMediaPlayer.URL = fileName; 
    _windowsMediaPlayer.controls.play(); 
    } 

...

/// <summary> 
    /// Event-handler method called by Windows Media Player when the "state" of the media player 
    /// changes. This is used to repeat the playing of the media for the specified number of 
    /// times, or maybe for an indeterminate number of times. 
    /// </summary> 
    private void WindowsMediaPlayer_PlayStateChange(int newState) 
    { 
    if ((WMPPlayState)newState == WMPPlayState.wmppsStopped) 
    { 
     if (_repeatCount != 0) 
     { 
      _repeatCount--; 
      _windowsMediaPlayer.controls.play(); 
     } 
    } 
    } 

Не знаю, если это будет работать для вашего приложения, но возможно.

EDIT: Только что вспомнил, что я ответил на аналогичный вопрос некоторое время назад, и там я отправил всю свою программу. https://stackoverflow.com/a/27431791/253938

+0

Большое спасибо! Мне было интересно, можете ли вы отправить мне папку с проектами своих программ на [email protected] Я хочу внимательно рассмотреть кнопки и все остальное. если возможно –

+0

@SaberKowsari Извините, но это действительно невозможно. То, что я разместил здесь, и по другому вопросу - крошечная, крошечная часть гораздо более крупной программы. Всего 250 000 строк кода. Но в ответе на другой вопрос я включил ссылку на веб-страницу, где, я думаю, есть образец кода. – RenniePet

+0

Я вижу, хорошо! есть ли другие более простые способы сделать такую ​​программу. Я слышал о внезапных объектах Shockwave! –