我想用C#写一个播放器,可是我还是一个学生,不知道具体的步骤到底该咋办,请高人指点一下,说说详细的步骤,我在google里搜了,之能搜到源代码,可是不知道每一步咋做的!希望能指点一下迷茫的我,谢谢了

解决方案 »

  1.   

    调用Windows Media Player  DLL
    然后操作这个。
      

  2.   

    调用DLL,然后设计几面,然后代码实现
      

  3.   

    为什么非要调用media player啊?media player不好看,也不好用
      

  4.   

    怎样在form1.cs面板中显示media player啊
      

  5.   

    参考一下:http://topic.csdn.net/u/20101109/22/84593a40-dfc5-4f0a-b142-7d5baf15c7c6.html
    http://topic.csdn.net/u/20101112/10/07e85ed2-05e7-4314-99bc-63f8a87991b8.html
      

  6.   

    http://hi.baidu.com/leroncheung/blog/item/c4074c200b5a525f92580712.html具体的使用还是参考代码吧,遇到问题后再提问
      

  7.   

    新手还是添加Windows Media Player 比较好。如果嫌界面不好看,可以在 Windows Media Player 属性中设置 样式为null 。 把控件的高度设为0 。自己添加按钮实现播放,暂停等就好了。
      

  8.   

    为啥我往panel容器里添加Windows Media Player ,容器里没东西啊,但是右面的解决方案中的引用却有Media Player 为啥啊
      

  9.   


    /*C#.NET2005实现一个流媒体播放器
    2007-04-05 16:38
    用C#.NET2005实现一个流媒体播放器,感觉还是不错的,就是调用了Windows中的一个动态连接库——Quarz.dll。我写的是一个DirectShow多媒体播放器。支持目前为止的大部分格式。代码共享一下:*/
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using QuartzTypeLib;//这个就是Quarz.dll转换后的Dll文件
    namespace myMedia
    {
      public partial class Form1 : Form
      {
      public Form1()
      {
      InitializeComponent();
      }
      // private System.ComponentModel.IContainer components;
      private const int WM_APP = 0x8000;
      private const int WM_GRAPHNOTIEY = WM_APP + 1;
      private const int EC_COMPLETE = 0x01;
      private const int WS_CHILD = 0x40000000;
      private const int WS_CLIPCHILDREN = 0x2000000;
      private FilgraphManager m_objFilterGraph = null;
      private IBasicAudio m_objBasicAudio = null;
      private IVideoWindow m_objVideoWindow = null;
      private IMediaEvent m_objMediaEvent = null;
      private IMediaEventEx m_objMediaEventEx = null;
      private IMediaPosition m_objMediaPosition = null;
      private IMediaControl m_objMediaControl = null;
      enum MadiaStatus { None, Stopped, Paused, Running };
      private MadiaStatus m_CurrentStatus = MadiaStatus.None;
      private void CleanUp()
      {
      if (m_objMediaControl != null)
      {
      m_objMediaControl.Stop();
      }
      m_CurrentStatus = MadiaStatus.Stopped;
      if (m_objMediaEventEx != null)
      m_objMediaEventEx.SetNotifyWindow(0, 0, 0);
      if (m_objVideoWindow != null)
      {
      m_objVideoWindow.Visible = 0;
      m_objVideoWindow.Owner = 0;
      }
      if (m_objMediaControl != null) m_objMediaControl = null;
      if (m_objMediaPosition != null) m_objMediaPosition = null;
      if (m_objMediaEventEx != null) m_objMediaEventEx = null;
      if (m_objMediaEvent != null) m_objMediaEvent = null;
      if (m_objBasicAudio != null) m_objBasicAudio = null;
      if (m_objFilterGraph != null) m_objFilterGraph = null;
      }
      private void Open_Dialog(object sender, System.EventArgs e)
      {
      OpenFileDialog openFileDialog = new OpenFileDialog();
      openFileDialog.Filter = "Media Files|*.mpg;*.avi;*.wma;*.mov;*.mav;*.mp2;*.mp3;*.rm;*.rmvb|All Files|*.*";
      if (DialogResult.OK == openFileDialog.ShowDialog())
      {
      CleanUp();
      m_objFilterGraph = new FilgraphManager();
      m_objFilterGraph.RenderFile(openFileDialog.FileName);
      try
      {
      m_objBasicAudio = m_objFilterGraph as IBasicAudio;
      m_objVideoWindow = m_objFilterGraph as IVideoWindow;
      m_objVideoWindow.Owner = (int)panel1.Handle;
      m_objVideoWindow.WindowStyle = WS_CHILD | WS_CLIPCHILDREN;
      m_objVideoWindow.SetWindowPosition(panel1.ClientRectangle.Left, panel1.ClientRectangle.Top, panel1.ClientRectangle.Width, panel1.ClientRectangle.Height);
      }
      catch (Exception ex)
      {
      MessageBox.Show("该文件没有图象信息!");
      m_objVideoWindow = null;
      }
      m_objMediaEvent = m_objFilterGraph as IMediaEvent;
      m_objMediaEventEx = m_objFilterGraph as IMediaEventEx;
      m_objMediaPosition = m_objFilterGraph as IMediaPosition;
      m_objMediaControl = m_objFilterGraph as IMediaControl;
      this.Text = "DirectShow - [" + openFileDialog.FileName + "]";
      m_objMediaControl.Run();
      m_CurrentStatus = MadiaStatus.Running;
      }
      }
      private void UpdateToolBar()//用了一个toolStrip
      {
      switch (m_CurrentStatus)
      {
      case MadiaStatus.None:
      toolStripButton1.Enabled = true;
      toolStripButton2.Enabled = false;
      toolStripButton3.Enabled = false;
      toolStripButton4.Enabled = false;
      toolStripButton5.Enabled = true;
      break;
      case MadiaStatus.Paused:
      toolStripButton1.Enabled = false;
      toolStripButton2.Enabled = true;
      toolStripButton3.Enabled = false;
      toolStripButton4.Enabled = true;
      toolStripButton5.Enabled = true;
      break;
      case MadiaStatus.Running:
      toolStripButton1.Enabled = false;
      toolStripButton2.Enabled = false;
      toolStripButton3.Enabled = true;
      toolStripButton4.Enabled = true;
      toolStripButton5.Enabled = true;
      break;
      case MadiaStatus.Stopped:
      toolStripButton1.Enabled = true;
      toolStripButton2.Enabled = false;
      toolStripButton3.Enabled = false;
      toolStripButton4.Enabled = false;
      toolStripButton5.Enabled = true;
      break;
      }
      }
      private void ExitWin(object sender, System.EventArgs e)
      {
      this.Close();
      }
      private void toolStripButton1_Click(object sender, EventArgs e)
      {
      Open_Dialog(sender, e);
      UpdateToolBar();
      }
      private void toolStripButton2_Click(object sender, EventArgs e)
      {
      m_objMediaControl.Run();
      m_CurrentStatus = MadiaStatus.Running;
      UpdateToolBar();
      }
      private void toolStripButton3_Click(object sender, EventArgs e)
      {
      m_objMediaControl.Pause();
      m_CurrentStatus = MadiaStatus.Paused;
      UpdateToolBar();
      }
      private void toolStripButton4_Click(object sender, EventArgs e)
      {
      m_objMediaPosition.CurrentPosition = 0;
      m_CurrentStatus = MadiaStatus.Stopped;
      CleanUp();
      UpdateToolBar();
      }
      private void toolStripButton5_Click(object sender, EventArgs e)
      {
      ExitWin(sender, e);
      }
      private void Form1_SizeChanged(object sender, EventArgs e)
      {
      panel1.Size = Form1.ActiveForm.Size;
      if (m_objVideoWindow != null)
      {
      m_objVideoWindow.SetWindowPosition(panel1.ClientRectangle.Left, panel1.ClientRectangle.Top, panel1.ClientRectangle.Width, panel1.ClientRectangle.Height);
      }
      }
      private void Form1_Load(object sender, EventArgs e)
      {
      this.Text = "我的制作——流媒体播放器";
      UpdateToolBar();
      }
      }
      

  10.   

    网上有很多这样的例子,学一下怎么调用系统动态链接库,一般可以播放除rmvb格式外的视频
      

  11.   

            private const int WM_APP = 0x8000;
            private const int WM_GRAPHNOTIEY = WM_APP + 1;
            private const int EC_COMPLETE = 0x01;
            private const int WS_CHILD = 0x40000000;
            private const int WS_CLIPCHILDREN = 0x2000000;
            private FilgraphManager m_objFilterGraph = null;
            private IBasicAudio m_objBasicAudio = null; 
            private IVideoWindow m_objVideoWindow = null;
            private IMediaEvent m_objMediaEvent = null;
             
            private IMediaEventEx m_objMediaEventEx = null;
            private IMediaPosition m_objMediaPosition = null;
            private IMediaControl m_objMediaControl = null;
            
            enum MadiaStatus { None, Stopped, Paused, Running };
            private MadiaStatus m_CurrentStatus = MadiaStatus.None;
    前面这几行代码(DirectShow之流媒体)是什么意思啊,请高手指教
      

  12.   

    哪位高人能先讲讲
    private const int WM_APP = 0x8000;
      private const int WM_GRAPHNOTIEY = WM_APP + 1;
      private const int EC_COMPLETE = 0x01;
      private const int WS_CHILD = 0x40000000;
      private const int WS_CLIPCHILDREN = 0x2000000;
      private FilgraphManager m_objFilterGraph = null;
      private IBasicAudio m_objBasicAudio = null; 
      private IVideoWindow m_objVideoWindow = null;
      private IMediaEvent m_objMediaEvent = null;
       
      private IMediaEventEx m_objMediaEventEx = null;
      private IMediaPosition m_objMediaPosition = null;
      private IMediaControl m_objMediaControl = null;
       
      enum MadiaStatus { None, Stopped, Paused, Running };
      private MadiaStatus m_CurrentStatus = MadiaStatus.None;
    这几行代码都是什么作用吗