开发者社区> 嗯哼9925> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C#制作简易播放器

简介:
+关注继续查看
.net framework里有了许多COM组件,我们可以根据应用程序的需要来使用这些组件,不用自己再去 “造轮子”了。
 
第一个示例是来制作一个VCD播放器.这里我使用了Windows自带的Media Play来播放多媒体文件。

06121401.JPG
选择‘工具箱’—‘组件’,右击,选择‘添加/移除项’—‘COM组件‘(如果你是第一次使用Windows Media Play控件,在列表中是没有这个控件的,可以在系统文件夹下找到,一般是在C:\Windows/System32/msdxm.ocx,把这个控件加入到控件列表中,就可以使用了。

代码如下:

 using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace MPlayDemo
{
    public class Form1 : System.Windows.Forms.Form
    {
        private AxMediaPlayer.AxMediaPlayer axMediaPlayer1;
    
    
        public Form1()
        {
            InitializeComponent();
        }

            

        private void btnPlay_Click(object sender, System.EventArgs e)
        {
            if(this.axMediaPlayer1.FileName.Trim()=="")
            {
                MessageBox.Show(this," 请选择要播放的文件!!!!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                return;
            }
            this.axMediaPlayer1.Play();
        }

        private void btnPause_Click(object sender, System.EventArgs e)
        {
            if(this.axMediaPlayer1.FileName.Trim()=="")
            {
                MessageBox.Show(this," 请选择要播放的文件!!!"," 信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                return;
            }
            this.axMediaPlayer1.Pause();
        }

        private void btnStop_Click(object sender, System.EventArgs e)
        {
            if(this.axMediaPlayer1.FileName.Trim()=="")
            {
                MessageBox.Show(this,"请选择要播放的文件","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                return;
            }
            this.axMediaPlayer1.Stop();
        }


        private void menuItem3_Click(object sender, System.EventArgs e)
        {
            Application.Exit();
        }

        private void menuItem2_Click(object sender, System.EventArgs e)
        {
            this.openFileDialog1.ShowDialog();
            string strFileName = this.openFileDialog1.FileName;
            if(strFileName.Trim()=="")
                return;
            this.axMediaPlayer1.FileName = strFileName;

        }

        private void menuItem4_Click(object sender, System.EventArgs e)
        {
                    this.axMediaPlayer1.AboutBox();
        }

        private void menuItem5_Click(object sender, System.EventArgs e)
        {
            this.axMediaPlayer1.FastForward();
    
    }
}


第二个示例是制作一个DVD播放器:

06121402.JPG
选择‘工具箱’—‘组件’,右击,选择‘添加/移除项’—‘COM组件‘把“MSWebDVD
”这个控件加入到控件列表中,就可以使用了。

代码如下:

 using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace DVDPlayDemo
{
    public class Form1 : System.Windows.Forms.Form
    {
        private AxMSWEBDVDLib.AxMSWebDVD axMSWebDVD1;
    

        

        Windows

    

        private void btnPlay_Click(object sender, System.EventArgs e)
        {
            try
            {
                this.axMSWebDVD1.Play();
            }
            catch(System.Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }

        private void btnPause_Click(object sender, System.EventArgs e)
        {
            try
            {
                this.axMSWebDVD1.Pause();
            }
            catch(System.Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }

        private void btnStop_Click(object sender, System.EventArgs e)
        {
            try
            {
                this.axMSWebDVD1.Stop();
            }
            catch(System.Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }

        private void btnOut_Click(object sender, System.EventArgs e)
        {
            try
            {
                this.axMSWebDVD1.Eject();
            }
            catch(System.Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }


    }
}


第三个示例是制作一个Flash播放器。选择‘工具箱’—‘组件’,右击,选择‘添加/移除项’—‘COM组件‘把“Shockwave Flash Object”这个控件加入到控件列表中,就可以使用了。

06121403.JPG

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace FlashPlayDemo
{
    public class Form1 : System.Windows.Forms.Form
    {
    
        private AxShockwaveFlashObjects.AxShockwaveFlash axShockwaveFlash1;
    
    

    

        

        private void menuItem2_Click(object sender, System.EventArgs e)
        {
            if(this.openFileDialog1.ShowDialog()==DialogResult.OK)
            {
                this.axShockwaveFlash1.Movie = this.openFileDialog1.FileName;
                this.Text = "播放的是-"+this.openFileDialog1.FileName;
            }

        }

        private void btnPlay_Click(object sender, System.EventArgs e)
        {
            if(this.openFileDialog1.FileName.Length>0)
            {
                this.axShockwaveFlash1.Play();
            }
            else
            {
                MessageBox.Show(this,"请选择文件!!!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }

        private void btnStop_Click(object sender, System.EventArgs e)
        {
            if(this.openFileDialog1.FileName.Length>0)
            {
                this.axShockwaveFlash1.Stop();
            }
            else
            {
                MessageBox.Show(this,"请选择文件!!!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }

        private void btnFisrt_Click(object sender, System.EventArgs e)
        {
            if(this.openFileDialog1.FileName.Length>0)
            {
                this.axShockwaveFlash1.Rewind();
            }
            else
            {
                MessageBox.Show(this,"请选择文件!!!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }

        private void btnLast_Click(object sender, System.EventArgs e)
        {
            if(this.openFileDialog1.FileName.Length>0)
            {
                this.axShockwaveFlash1.Back();
            }
            else
            {
                MessageBox.Show(this,"请选择文件!!!","信息提示“,MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }

        private void btnNext_Click(object sender, System.EventArgs e)
        {
            if(this.openFileDialog1.FileName.Length>0)
            {
                this.axShockwaveFlash1.Forward();
            }
            else
            {
                MessageBox.Show(this,"请选择文件!!!","信息提示”,MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }


    }
}


第四个示例是制作一个RealPlay播放器。选择‘工具箱’—‘组件’,右击,选择‘添加/移除项’—‘COM组件‘,把“RealPlayer G2 Control”这个控件加入到控件列表中,就可以使用了。

06121404.JPG

为了简单起见,就直接使用它的控制面板了,代码如下:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace RealPlayDemo
{
    public class Form1 : System.Windows.Forms.Form
    {
        private AxRealAudioObjects.AxRealAudio axRealAudio1;
            

        private void menuItem2_Click(object sender, System.EventArgs e)
        {
            if(this.openFileDialog1.ShowDialog()==DialogResult.OK)
            {
                this.axRealAudio1.Source = this.openFileDialog1.FileName;
                this.axRealAudio1.DoPlay();
            }
        }

        private void menuItem3_Click(object sender, System.EventArgs e)
        {
            Application.Exit();
        }
    }
}


最后一个示例是对第一个Windows Media Play播放器的扩展,用它来制作一个Mp3播放器。选择‘工具箱’—‘组件’,右击,选择‘添加/移除项’—‘COM组件‘,把“Windows Media Play”这个控件加入到控件列表中,就可以使用了。

06121405.JPG

代码如下:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;

namespace MP3PlayerDemo
{
    
    public class Form1 : System.Windows.Forms.Form
    {
        private AxMediaPlayer.AxMediaPlayer axMediaPlayer1;
    
        

        private void menuItem3_Click(object sender, System.EventArgs e)
        {
            Application.Exit();
        }

        private void menuItem2_Click(object sender, System.EventArgs e)
        {
            if(this.openFileDialog1.ShowDialog()==DialogResult.OK)
            {
                this.listView1.Items.Clear();
                string[] FileNames = this.openFileDialog1.FileNames;
                foreach(string fName in FileNames)
                {
                    System.IO.FileInfo fInfo = new FileInfo(fName);
                    float fSize = (float)fInfo.Length/(1024*1024);
                    this.axMediaPlayer1.FileName = fName;
                    this.axMediaPlayer1.Stop();
                    string author = this.axMediaPlayer1.GetMediaInfoString(MediaPlayer.MPMediaInfoType.mpClipAuthor);
                    string shortFileName = fName.Substring(fName.LastIndexOf("\\")+1);
                    shortFileName = shortFileName.Substring(0,shortFileName.Length-4);
                    string[] subItem = {shortFileName,author,fSize.ToString().Substring(0,4)+"M",fName};
                    ListViewItem item = new ListViewItem(subItem);
                    this.listView1.Items.Add(item);
                    this.listView1.Items[0].Selected = true;
                }
                

            }
        }

        private void btnPlay_Click(object sender, System.EventArgs e)
        {
            if(this.listView1.Items.Count>0)
            {
                if(this.listView1.SelectedItems.Count>0)
                {
                    int pos = this.listView1.SelectedItems[0].Index;
                    string fName = this.listView1.Items[pos].SubItems[3].Text;
                    this.axMediaPlayer1.FileName = fName;
                    this.axMediaPlayer1.Play();
                }
                else
                {
                    MessageBox.Show(this,"ÇëÑ¡ÔñÒª²¥•ÅµÄ¸èÇú!!!","ÐÅÏ¢Ìáʾ",MessageBoxButtons.OK,MessageBoxIcon.Information);

                }
            }

        }

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

            }
        }

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

            }
        }

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

                    }
                }
                else
                {
                    MessageBox.Show(this," 请选择要播放的歌曲!!!"," 信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

                }

            }

        }

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

                    }
                }
                else
                {
                    MessageBox.Show(this," 请选择要播放的歌曲!!!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

                }

            }
        }

    }
}





本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2006/12/14/592557.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
FFmpeg简易播放器的实现5-音视频同步
基于 FFmpeg 和 SDL 实现的简易视频播放器,主要分为读取视频文件解码和调用 SDL 显示两大部分。
575 0
FFmpeg简易播放器的实现2-视频播放
基于 FFmpeg 和 SDL 实现的简易视频播放器,主要分为读取视频文件解码和调用 SDL 播放两大部分。本实验仅研究视频播放的实现方式。
337 0
学习使用 jQuery & CSS3 制作照片堆栈效果
  在这个小实验中,我们使用 jQuery & CSS3 创建了一个交互式的照片堆栈效果。提供了一些模拟现实的互动的可能性给用户。这个想法的思路是:有一些照片在桌面上可以拖放一样,堆放和删除,每个动作类似现实世界的行为。
589 0
CSS3 制作一个边框向周围散开的按钮效果
我们将要达到的是如下的效果(若效果未出现请刷新): 分析 主要还是运用CSS3的transition, animation, transform还有渐变背景等特性。 由于按钮在鼠标进入时有不同的样式,所以要对其:hover状态运用另外的背景样式 通过对按钮的:after状态添加一个内容为空的元素,并给其一个边框,这样在鼠标进入后我们让这个隐藏的空元素变大直到淡出,就得到我们看到的效果了 构建基本按钮样式 做为例子,我们的页面会很简单,就放一个a标签作为按钮,然后对其写样式让它看起来更像一个按钮。
865 0
jquery插件制作 -- 5.提示框插件
  今天我们介绍的是提示框插件tooltip的制作,其中还会介绍到自定义选择器插件的开发。   我们首先来介绍自定义选择器的开发,他的代码结构如下: (function ($) { $.expr[':'].customselector = function (object,index,properties,list) { //code }; })(jQuery); 调用时候的写法: $(a:customselector)   现在我们先解释下函数中所使用到的各个参数。
773 0
制作简易图像浏览器,互联网营销
  先发点牢骚放松下心情, 最近完全没有做项目的动力,每天感觉脑子昏昏沉沉的没有一点状态。   一来可能快春节了,自己离家比较远也在担心何时回家何时购票,   二来公司程序员就我一个人在单干,软件 项目什么的做好了,却不能接受一次又一次的添加功能和修改数据库,(我真的很想骂某个人的娘)   三来也老早计划好了11年4月份一年合同到期后就离职,现在好像一点都静不下心来   如果有各位同僚给我开解开解我也好恢复下心境。
881 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《如何制作一个水平仪》
立即下载
360°全景视频播放器的实现原理
立即下载
低代码开发师(初级)实战教程
立即下载