音乐播放器 我想用C#写一个播放器,可是我还是一个学生,不知道具体的步骤到底该咋办,请高人指点一下,说说详细的步骤,我在google里搜了,之能搜到源代码,可是不知道每一步咋做的!希望能指点一下迷茫的我,谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 调用Windows Media Player DLL然后操作这个。 调用DLL,然后设计几面,然后代码实现 为什么非要调用media player啊?media player不好看,也不好用 怎样在form1.cs面板中显示media player啊 参考一下:http://topic.csdn.net/u/20101109/22/84593a40-dfc5-4f0a-b142-7d5baf15c7c6.htmlhttp://topic.csdn.net/u/20101112/10/07e85ed2-05e7-4314-99bc-63f8a87991b8.html http://hi.baidu.com/leroncheung/blog/item/c4074c200b5a525f92580712.html具体的使用还是参考代码吧,遇到问题后再提问 新手还是添加Windows Media Player 比较好。如果嫌界面不好看,可以在 Windows Media Player 属性中设置 样式为null 。 把控件的高度设为0 。自己添加按钮实现播放,暂停等就好了。 为啥我往panel容器里添加Windows Media Player ,容器里没东西啊,但是右面的解决方案中的引用却有Media Player 为啥啊 /*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(); } } 网上有很多这样的例子,学一下怎么调用系统动态链接库,一般可以播放除rmvb格式外的视频 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之流媒体)是什么意思啊,请高手指教 哪位高人能先讲讲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;这几行代码都是什么作用吗 文字与图片如何转成二进制 求多项式算法。。。。。在线等!! 熟悉JSON的朋友帮忙看看! 在C# 2.0中,解析JSON的问题 C# zip 压缩及解压缩 zedGraph X轴设为时间HH:mm:ss格式 clickonce发布winform的签名问题 c#.net中怎样用DataGrid控件显示Sql Server数据库中的内容呢 关于转义序列\r的问题 继承自IHttpModule的类如何响应对asp页面的请求 关于自定义公式问题,特难 数据库连接问题 C#中string类型复制问题
然后操作这个。
http://topic.csdn.net/u/20101112/10/07e85ed2-05e7-4314-99bc-63f8a87991b8.html
/*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();
}
}
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之流媒体)是什么意思啊,请高手指教
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;
这几行代码都是什么作用吗