Я пытаюсь сделать телевизор в приложении формы C#, и до сих пор все прошло хорошо, но только то, что я ищу здесь, - это то, как заставить его играть следующий URL-адрес, когда текущий закончен. Если он должен быть телевизором, он не должен прекращать играть! Я хочу, чтобы моя программа, когда пользователь выбирает определенный канал, постоянно воспроизводит кучу URL-адресов вместо одного, пока пользователь не переключится на другой канал, а затем начнет воспроизведение другой группы URL-адресов. и было бы супер здорово, если он возобновит видео, когда пользователь переключится на предыдущий канал, отличный от воспроизведения случайного нового URL-адреса среди списка URL, который он должен играть. но если вы думаете, что слишком сложно забыть об этом, я начинающий! спасибо Ваша помощь приветствуется!Несколько URL-адресов, играющих в C# windows media player
0
A
ответ
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
Большое спасибо! Мне было интересно, можете ли вы отправить мне папку с проектами своих программ на [email protected] Я хочу внимательно рассмотреть кнопки и все остальное. если возможно –
@SaberKowsari Извините, но это действительно невозможно. То, что я разместил здесь, и по другому вопросу - крошечная, крошечная часть гораздо более крупной программы. Всего 250 000 строк кода. Но в ответе на другой вопрос я включил ссылку на веб-страницу, где, я думаю, есть образец кода. – RenniePet
Я вижу, хорошо! есть ли другие более простые способы сделать такую программу. Я слышал о внезапных объектах Shockwave! –