AxMediaPlayer控件使用方法(非AxWindowsMediaPlayer控件)

it2022-05-09  34

一:c#中播放MP3文件

首先,我们要生成MediaPlayer.dll 和 AxMediaPlayer.dll控件:

   方法如下:命令为:aximp c:\winnt\system32\msdxm.ocx 而通常                         msdxm.ocx中的ActiveX控件都未注册! 则先运行regsvr32                        msdxm.ocx手动注册便生成需要的动态连接库文件。

其次:填写程序如下:

private void button1_Click(object sender, System.EventArgs e)  {//浏览MP3文件   if(this.openFileDialog1.ShowDialog()==DialogResult.OK)   {    this.listView1.Items.Clear();    string []FileNames=this.openFileDialog1.FileNames;    foreach(string FileName in FileNames)    {     //取得文件大小     FileInfo MyFileInfo=new FileInfo(FileName);     float MyFileSize=(float)MyFileInfo.Length/(1024*1024);     this.axMediaPlayer1.FileName=FileName;     //取得作者信息     string MyAuthor=this.axMediaPlayer1.GetMediaInfoString(MediaPlayer.MPMediaInfoType.mpClipAuthor);     //取得不含路径的文件名     string MyShortFileName=FileName.Substring(FileName.LastIndexOf("\\")+1);         MyShortFileName=MyShortFileName.Substring(0,MyShortFileName.Length-4);     //填充歌曲列表      string[] SubItem={MyShortFileName,MyAuthor,MyFileSize.ToString().Substring(0,4)+"M",FileName};     ListViewItem Item=new ListViewItem(SubItem);     this.listView1.Items.Add(Item);     this.listView1.Items[0].Selected=true;         }               }  }

  private void button2_Click(object sender, System.EventArgs e)  {//播放MP3文件   if(this.listView1.Items.Count>0)   {    if(this.listView1.SelectedItems.Count>0)    {     int iPos=this.listView1.SelectedItems[0].Index;     string FileName=this.listView1.Items[iPos].SubItems[3].Text;     this.axMediaPlayer1.FileName=FileName;     this.axMediaPlayer1.Play();    }   }   else   {    MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);   }  }

  private void button4_Click(object sender, System.EventArgs e)  {//暂停播放   if(this.axMediaPlayer1.FileName.Length>0)    this.axMediaPlayer1.Pause();     else   {    MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);   }  }

  private void button5_Click(object sender, System.EventArgs e)  {//停止播放   if(this.axMediaPlayer1.FileName.Length>0)    this.axMediaPlayer1.Stop();     else   {    MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);   }  }

  private void button6_Click(object sender, System.EventArgs e)  {//上一首歌曲   if(this.listView1.Items.Count>0)   {    if(this.listView1.SelectedItems.Count>0)    {     int iPos=this.listView1.SelectedItems[0].Index;     if(iPos>0)     {      this.listView1.Items[iPos-1].Selected=true;      string FileName=this.listView1.Items[iPos-1].SubItems[3].Text;      this.axMediaPlayer1.FileName=FileName;      this.axMediaPlayer1.Play();          }     else     {      MessageBox.Show("已经是第一首歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);     }    }   }   else   {    MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);   }   }

  private void button7_Click(object sender, System.EventArgs e)  {//下一首歌曲   if(this.listView1.Items.Count>0)   {    if(this.listView1.SelectedItems.Count>0)    {     int iPos=this.listView1.SelectedItems[0].Index;     if(iPos<this.listView1.Items.Count-1)     {      this.listView1.Items[iPos+1].Selected=true;      string FileName=this.listView1.Items[iPos+1].SubItems[3].Text;      this.axMediaPlayer1.FileName=FileName;      this.axMediaPlayer1.Play();          }     else     {      MessageBox.Show("已经是最后一首歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);     }    }   }   else   {    MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);   }    }

二:C#中播放AVI短片并使背景透明

我发现他所用的MediaPlayer控件是可以播放许多的媒体文件.但是并不能满足我所需要的情况。我的情况是用C#播放一小段AVI文件,并且背景要透明,而不是黑色,或其他颜色,我找了半天也不能找到什么方法可以使MediaPlayer播放的文件为透明的状态,十分郁闷!

但是随后我发现其他用VB的程序中可以实现这个功能,让我十分的高兴,于是我又打开了VB的代码进行了详细的查看,发现在VB中有一个控件为Animation可以播放AVI文件,而且其有一个属性选项是使背景透明。正好能够满足我的需要.可是这也是一个OCX的控件,于是,我先把该控件找到,位置是:C:\WINDOWS\SYSTEM32\COMCT32.ocx,然后我运行regsvr32进行手动注册,注册完毕以后我就在环境中进行引用,如下图:

(但是,后来本人发现原来这个根本不用regsvr32注册,因为.NET早已经注册了,郁闷中~~~~~~~~~~~~~~)

然后把控件拖入到窗体中,布好了局,将其属性AutoPlay设置为true,然后在代码中写入下边一句话即可:

private void Form1_Load(object sender, System.EventArgs e)

{

  this.axAnimation1.Open(Application.StartupPath +@"\FILECOPY.AVI");

}

这样当窗体加载的时候就会自动的播放这一小段AVI文件了.其实,这个问题并不是很难,主要是本人对COM组件并不是特别熟悉的过.只要熟悉这些组件的功能,以及运行的原理,势必会大大的提高我们的编程的效率。

转载于:https://www.cnblogs.com/tuyile006/archive/2006/11/15/561351.html

相关资源:数据结构—成绩单生成器

最新回复(0)