Inserindo o controle Reprodutor Multimídia do Windows em uma solução C#

[O recurso associado a esta página, Reprodutor Multimídia do Windows SDK, é um recurso herdado. Foi substituído pelo MediaPlayer. O MediaPlayer foi otimizado para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o MediaPlayer em vez de Reprodutor Multimídia do Windows SDK, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Para usar a funcionalidade de Reprodutor Multimídia do Windows em um aplicativo C#, primeiro adicione o componente a um formulário, conforme descrito em Usando o controle Reprodutor Multimídia do Windows com o Microsoft Visual Studio

As seções a seguir descrevem como criar um aplicativo que reproduz vídeo e usa botões personalizados de reprodução e parada.

Adicionar a janela de vídeo

Adicione o Reprodutor Multimídia do Windows controle ActiveX a um formulário. Redimensione o controle e coloque-o onde você deseja que a janela de vídeo apareça.

Selecione o controle Reprodutor Multimídia do Windows e altere a propriedade uiMode para "none". Essa configuração oculta os controles de interface do usuário. Quando o usuário reproduzir um vídeo, ele aparecerá na janela. Para conteúdo somente áudio, uma visualização será exibida.

Adicionar dois botões e ajustar o formulário

Agora, adicione dois botões ao formulário. Selecione o primeiro botão e altere a propriedade Texto para "Reproduzir". Selecione o segundo botão e altere sua propriedade Text para "Parar".

Adicionar o Código de Reprodução

Clique duas vezes no botão Reproduzir para revelar a janela Código. Em C#, o seguinte código será exibido:

private void button1_Click(object sender, System.EventArgs e)
{

}

Adicione essa linha entre as duas chaves:

axWindowsMediaPlayer1.URL = @"c:\mediafile.wmv";

No exemplo de código anterior, "axWindowsMediaPlayer1" é o nome padrão do controle Reprodutor Multimídia do Windows e "c:\mediafile.wmv" é um espaço reservado para o nome do item de mídia que você deseja reproduzir. Qualquer caminho de arquivo válido pode ser usado. O símbolo @ instrui o compilador a não interpretar barras invertidas como caracteres de escape.

Se você adicionou o conteúdo de mídia digital do SDK do Reprodutor Multimídia do Windows à biblioteca em Reprodutor Multimídia do Windows, poderá usar esse código em vez disso:

axWindowsMediaPlayer1.currentPlaylist = axWindowsMediaPlayer1.mediaCollection.getByName("mediafile");

Como a propriedade autoStart é verdadeira por padrão, Reprodutor Multimídia do Windows começará a ser reproduzido quando você definir a propriedade currentPlaylist ou URL.

Adicionar o código de parada

Clique duas vezes no botão Parar para revelar a janela Código. Em C#, o seguinte código será exibido:

private void button2_Click(object sender, System.EventArgs e)
{

}

Adicione essa linha entre as duas chaves:

axWindowsMediaPlayer1.Ctlcontrols.stop();

Observação

O wrapper de código gerenciado para o controle Reprodutor Multimídia do Windows expõe o objeto Controls como Ctlcontrols para evitar colisão com a propriedade Controls herdada de System.Windows.Forms.Control.

 

Adicionar tratamento de erros

O controle Reprodutor Multimídia do Windows não gera uma exceção quando encontra um erro, como uma URL inválida. Em vez disso, ele sinaliza um evento. Seu aplicativo deve lidar com eventos de erro enviados pelo Player.

Para criar um manipulador de eventos, primeiro abra o janela Propriedades para o controle Reprodutor Multimídia do Windows. Na lista de eventos, clique duas vezes em MediaError. O código a seguir é exibido:

private void Player_MediaError(object sender, _WMPOCXEvents_MediaErrorEvent e)
{
}

O código a seguir pode ser inserido no método para fornecer uma funcionalidade mínima de tratamento de erros. Observe que as informações sobre o erro podem ser recuperadas do argumento _WMPOCXEvents_MediaErrorEvent .

try
// If the Player encounters a corrupt or missing file, 
// show the hexadecimal error code and URL.
{
    IWMPMedia2 errSource = e.pMediaObject as IWMPMedia2;
    IWMPErrorItem errorItem = errSource.Error;
    MessageBox.Show("Error " + errorItem.errorCode.ToString("X") 
                    + " in " + errSource.sourceURL);
}
catch(InvalidCastException)
// In case pMediaObject is not an IWMPMedia item.
{
    MessageBox.Show("Error.");
} 

Inserindo o controle Reprodutor Multimídia do Windows em uma solução de .NET Framework