C#做的播放器上下曲具体代码怎么写?
发布网友
发布时间:2022-05-01 10:42
我来回答
共4个回答
热心网友
时间:2023-10-09 07:11
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Media;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;
namespace MyMusicPlays
{
public partial class Form1 : Form
{
Thread t, d;
Dictionary<int, MusicInfo> dicMusic = new Dictionary<int, MusicInfo>();
MusicInfo musicInfo = null;
int subId = 0;
DateTime openTheMusic;
public Form1()
{
InitializeComponent();
}
public static string SaveMusic = @"D:\SaveMusic.db";
private void button1_Click(object sender, EventArgs e)
{
}
//播放、暂停按钮
private void button1_Click_1(object sender, EventArgs e)
{
if (myMusicPlay.playState== WMPLib.WMPPlayState.wmppsUndefined || myMusicPlay.playState== WMPLib.WMPPlayState.wmppsPaused
|| myMusicPlay.playState== WMPLib.WMPPlayState.wmppsStopped)
{
myMusicPlay.Ctlcontrols.play();
btnStart.Text = "暂停(&P)";
timer1.Start();
}
else
{
myMusicPlay.Ctlcontrols.pause();
btnStart.Text = "播放(&P)";
timer1.Stop();
}
}
//停止按钮
private void button3_Click(object sender, EventArgs e)
{
myMusicPlay.Ctlcontrols.stop();
btnStart.Text = "播放(&P)";
pbMessage.Value = 0;
timer1.Stop();
}
//上传本地音乐
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Filter = "mp3音乐音频(*.mp3)|*.mp3|wma音乐音频(*.wma)|*.wma";
DialogResult dr = op.ShowDialog();
if (dr == DialogResult.OK)
{
musicInfo = new MusicInfo();
//获取最后一个\的位置
int lastIndex = op.FileName.LastIndexOf(@"\");
//获取文件名字
string musicName = op.FileName.Substring(lastIndex + 1);
musicInfo.MusicId = dicMusic.Count == 0 ? 1 : dicMusic.Count + 1;
musicInfo.MusicName = musicName;
musicInfo.MusicUrl = op.FileName;
musicInfo.MusicTime = "00:00";
fillListView(musicInfo);
dicMusic.Add(musicInfo.MusicId, musicInfo);
}
}
//填充表格的方法
private void fillListView(MusicInfo mi)
{
ListViewItem item = new ListViewItem(mi.MusicId.ToString());
item.SubItems.AddRange(new string[] {mi.MusicName,mi.MusicTime });
lsvItems.Items.Add(item);
}
private void lsvItems_SelectedIndexChanged(object sender, EventArgs e)
{
}
//动态显示时间
private void runTime()
{
while (true)
{
try
{
TimeSpan span = DateTime.Now - openTheMusic;
string musicTime = span.ToString().Substring(3,5);
lblMusicPlayTime.Invoke(new MethodInvoker(delegate
{ lblMusicPlayTime.Text = "当前进度:" + musicTime; }));
}
catch(Exception)
{
return;
}
Thread.Sleep(1000);
}
}
/// <summary>
/// 通过线程去播放音乐
/// </summary>
private void run()
{
myMusicPlay.Ctlcontrols.stop();
//控件事件委托(在线程里面失效)
try
{
lsvItems.Invoke(new MethodInvoker(delegate { subId = int.Parse(lsvItems.SelectedItems[0].SubItems[0].Text); }));
}
catch (Exception )
{
return;
}
string url = dicMusic[subId].MusicUrl;
myMusicPlay.URL = url;
myMusicPlay.Ctlcontrols.play();
}
//保存音乐--序列化文件
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
FileStream fs = new FileStream(SaveMusic, FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, dicMusic);
fs.Close();
MessageBox.Show("音乐文件保存成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
//窗体加载时显示出保存文件信息
private void Form1_Load(object sender, EventArgs e)
{
skinEngine1.SkinFile = "PageColor2.ssk";
myMusicPlay.settings.volume = tbMessage.Value;
lblMusicPlayTime.Text = "";
lblShowMusicTime.Text = "";
//读取
loading(readMessage());
}
//加载时候fill表格
private void loading(Dictionary<int, MusicInfo> dicMusic)
{
foreach (MusicInfo mi in dicMusic.Values)
{
ListViewItem item = new ListViewItem(mi.MusicId.ToString());
item.SubItems.AddRange(new string[] { mi.MusicName, mi.MusicTime });
lsvItems.Items.Add(item);
}
}
//读取本地信息
private Dictionary<int, MusicInfo> readMessage()
{
try
{
FileStream fs = new FileStream(SaveMusic, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
dicMusic = (Dictionary<int, MusicInfo>)bf.Deserialize(fs);
fs.Close();
}
catch (Exception) { FileStream fs = new FileStream(SaveMusic, FileMode.Create); fs.Close(); }
return dicMusic;
}
private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
showTheMusicTimes();
}
/// <summary>
/// 获取歌曲长度
/// </summary>
private void showTheMusicTimes()
{
//检查状态~
if (myMusicPlay.playState == WMPLib.WMPPlayState.wmppsStopped || myMusicPlay.playState == WMPLib.WMPPlayState.wmppsUndefined
|| subId == 0)
{
return;
}
if (lsvItems.SelectedItems.Count <= 0) return;
string thisTime = myMusicPlay.currentMedia.rationString;
dicMusic[subId].MusicTime = thisTime;
lsvItems.SelectedItems[0].SubItems[2].Text = thisTime;
}
private void button1_Click_2(object sender, EventArgs e)
{
DateTime times = Convert.ToDateTime(myMusicPlay.currentMedia.rationString);
int min = times.Hour;
int sco = times.Minute;
int sum = min * 60 + sco;
MessageBox.Show(sum.ToString());
}
private void timer1_Tick(object sender, EventArgs e)
{
if (pbMessage.Value < pbMessage.Maximum)
{
pbMessage.Value++;
}
}
//窗体关闭~线程终止
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
d.Abort();
}
catch (Exception)
{
return;
}
}
//增加音量图片按钮
private void pictureBox2_Click(object sender, EventArgs e)
{
if (tbMessage.Value <= 95)
{
tbMessage.Value += 5;
myMusicPlay.settings.volume = tbMessage.Value;
}
}
/// <summary>
/// 滚动时候改变音量大小
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tbMessage_Scroll(object sender, EventArgs e)
{
myMusicPlay.settings.volume = tbMessage.Value;
}
//减少音量图片按钮
private void pictureBox1_Click(object sender, EventArgs e)
{
if (tbMessage.Value >= 5)
{
tbMessage.Value += -5;
myMusicPlay.settings.volume = tbMessage.Value;
}
}
private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
private void lsvItems_DoubleClick(object sender, EventArgs e)
{
if (lsvItems.SelectedItems.Count <= 0) return;
btnStart.Enabled = true;
t = new Thread(new ThreadStart(run));
t.Start();
pbMessage.Value = 0;
//进度条工作..获取预播放曲目的时长
string strTimes = lsvItems.SelectedItems[0].SubItems[2].Text;
if (strTimes == "00:00")
{
showTheMusicTimes();
strTimes = lsvItems.SelectedItems[0].SubItems[2].Text;
}
DateTime times = Convert.ToDateTime(strTimes);
int min = times.Hour;
int sco = times.Minute;
pbMessage.Maximum = (min * 60 + sco);
timer1.Start();
lblShowMusicTime.Text = "曲目时长:" + strTimes;
openTheMusic = DateTime.Now;
d = new Thread(new ThreadStart(runTime));
d.Start();
btnStart.Text = "暂停(&P)";
}
private void 播放ToolStripMenuItem_Click(object sender, EventArgs e)
{
lsvItems_DoubleClick(sender, e);
}
private void 移入播放单ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lsvItems.SelectedItems.Count <= 0) return;
}
}
}赞同70| 评论
热心网友
时间:2023-10-09 07:11
外部声音文件必须和正在编辑的Flash文件放在同一目录下
1.制作两个按扭(一个调用,一个清除)拖放到场景中
2.调用按扭上的AS:
on(release){//鼠标离开按扭后执行下面的代码;
mySound=new Sound();//建立一个新的声音对象mySound;
mySound.loadSound("zaihuni.mp3",true);//加载外部的*.mp3声音文件到mySound对象中,并且按流的方式播放(参数为false时,是以装载完后播放);
}
清除按扭上的AS:
on(release){
mySound.stop();//当按下清除按扭后,停止声音的播放
}
Ctrl+Enter测试。
压缩包原文件5(没有传声音,你只需在解压缩后的文件夹里加入一个MP3的声音文件,然后在原文件里把相应的声音文件名改一下就可以)
热心网友
时间:2023-10-09 07:12
有邮箱吗 发给你
热心网友
时间:2023-10-09 07:13
AxWMPLib.AxWindowsMediaPlayer 属性 (转)默认分类 2008-03-06 11:49:08 阅读840 评论0 字号:大中小
AllowChangeDisplaySize 返回或设置最终用户是否能设置显示尺寸(逻辑型)
AllowScan 返回或设置是否允许扫描(逻辑型)
AnimationAtStart 返回或设置控件开始播放之前是否先播放一个动画序列(逻辑型)
AudioStream 返回或设置音频流的编号(用于多音频流的剪辑,默认为-1)(长整型)
AutoRewind 返回或设置媒体文件播放完毕后是否自动回绕(逻辑型)
AutoSize 返回或设置是否自动调整控件大小来适应载入的媒体(逻辑型)
AutoStart 返回或设置在载入媒体文件之后是否自动开始播放(逻辑型)
Balance 返回或设置指定立体声媒体文件的播放声道(-10000为左声道,10000为右声道,0为立体声)(长整型)
Bandwidth 返回或设置当前文件的带宽(长整型)
BaseURL 返回基本的 HTTP URL(字符串)
BufferingCount 返回媒体文件回放时缓冲的总时间(长整型)
BufferingProgress 返回缓冲完成的百分比(长整型)
BufferingTime 返回缓冲的时间(双精度型)
CanPreview 返回或设置当前显示的剪辑是能否被预览(逻辑型)
CanScan 返回或设置当前文件是否支持快进或快退(逻辑型)
CanSeek 返回或设置当前文件是否能搜索并定位到某个时间(逻辑型)
CanSeekToMarkers 返回或设置文件是否支持搜索到标签(逻辑型)
CaptioningID 返回在标题中显示的帧或控件的名称(字符串)
ChannelDescription 返回电台的描述(字符串)
ChannelName 返回电台的名称(字符串)
ChannelURL 返回电台的元文件的位置(字符串)
ClickToPlay 返回或设置是否可以通过点击图像暂停或播放剪辑(逻辑型)
ClientID 返回客户端唯一的标识符(字符串)
CodecCount 返回文件使用的可安装的 codecs 的个数(长整型)
ContactAddress 返回电台的联系地址(字符串)
ContactEmail 返回电台的联系电子邮件地址(字符串)
ContactPhone 返回电台的联系电话(字符串)
CreationDate 返回剪辑的创建日期(日期型)
CurrentMarker 返回或设置当前书签号码(长整型)
CurrentPosition 返回或设置剪辑的当前位置(双精度型)
CursorType 返回或设置指针类型(长整型)
DefaultFrame 返回或设置控件的默认目标 Http 帧(字符串)
DisplayBackColor 返回或设置显示面板的背景色(OLE_COLOR 值)
DisplayForeColor 返回或设置显示面板的前景色(OLE_COLOR 值)
DisplayMode 返回或设置显示面板是否用秒或帧的形式显示当前位置(MPDisplayModeConstants 值)
DisplaySize 返回或设置图像显示窗口的大小(MPDisplaySizeConstant 值)
Duration 返回或设置剪辑剪辑的播放时间(双精度型)
EnableContextMenu 返回或设置是否允许使用上下文菜单(逻辑型)
Enabled 返回或设置控件是否可用(逻辑型)
EnableFullScreenControls 返回或设置全屏幕控制是否可用(逻辑型)
EnablePositionControls 返回或设置位置控制是否可用(逻辑型)
EnableTracker 返回或设置搜索栏控制是否可用(逻辑型)
ErrorCode 返回当前错误代码(长整型)
ErrorCorrection 返回当前剪辑的错误修正类型(长整型)
ErrorDescription 返回当前错误的描述(字符串)
FileName 返回或设置要播放的剪辑的文件名称(字符串)
HasError 返回控件是否发生错误(逻辑型)
HasMultipleItems 返回或设置控件是否包含某些多重项目的内容(逻辑型)
ImageSourceHeight 返回或设置当前剪辑的原始图像高度(长整型)
ImageSourceWidth 返回或设置当前剪辑的原始图像宽度(长整型)
InvokeURLs 返回或设置 URL 是否自动发送请求(逻辑型)
IsBroadcast 返回或设置源是否进行广播(逻辑型)
IsDurationValid 返回或设置持续时间值是否有效(逻辑型)
Language 返回或设置用于本地化语言支持的当前区域语言(长整型)
LostPackets 返回丢失的数据包数量(长整型)
MarkerCount 返回文件书签的数量(长整型)
Mute 返回或设置控件是否播放声音(逻辑型)
OpenState 返回控件的内容源状态(长整型)
PlayCount 返回或设置一个剪辑播放的次数(长整型)
PlayState 返回控件的当前操作状态(长整型)
PreviewMode 返回或设置控件是否处在预览模式(逻辑型)
Rate 返回或设置回放帧频(双精度型)
ReadyState 返回控件是否准备就绪(ReadyStateConstant 值)
ReceivedPackets 返回已接收到的数据包的数量(长整型)
ReceptionQuality 返回最后 30 秒接收到的数据包的百分比(长整型)
RecoveredPackets 返回已转换的数据包的数量(长整型)
SAMIFileName 返回或设置 closed-captioning 文件名(字符串)
SAMILang 返回或设置 closed captioning 语言(字符串)
SAMIStyle 返回或设置 closed captioning 风格(字符串)
SelectionEnd 返回或设置流的结束位置(双精度型)
SelectionStart 返回或设置流的起始位置(双精度型)
SendErrorEvents 返回或设置控件是否发送错误事件(逻辑型)
SendKeyboardEvents 返回或设置控件是否发送键盘事件(逻辑型)
SendMouseClickEvents 返回或设置控件是否发送鼠标单击事件(逻辑型)
SendMouseMoveEvents 返回或设置控件是否发送鼠标移动事件(逻辑型)
SendOpenStateChangeEvents 返回或设置控件是否发送打开状态改变事件(逻辑型)
SendPlayStateChangeEvents 返回或设置控件是否发送播放状态改变事件(逻辑型)
SendWarningEvents 返回或设置控件是否发送警告事件(逻辑型)
ShowAudioControls 返回或设置是否显示音频控制(逻辑型)
ShowCaptioning 返回或设置是否显示字幕(逻辑型)
ShowControls 返回或设置控制面板是否可见(逻辑型)
ShowDisplay 返回或设置是否显示显示面板(逻辑型)
ShowGotoBar 返回或设置是否显示跳转栏(逻辑型)
ShowPositionControls 返回或设置是否显示位置控制(逻辑型)
ShowStatusBar 返回或设置是否显示状态栏(逻辑型)
ShowTracker 返回或设置是否显示搜索栏(逻辑型)
SourceLink 返回内容文件的路径(字符串)
SourceProtocol 返回用于接收数据的协议(长整型)
StreamCount 返回媒体帧的数量(长整型)
TransparentAtStart 返回或设置在开始播放之前和停止之后控件是否透明(逻辑型)
VideoBorder3D 返回或设置视频边框是否显示为 3D 效果(逻辑型)
VideoBorderColor 返回或设置视频边框的颜色(OLE_颜色)
VideoBorderWidth 返回或设置视频边框的宽度(长整型)
Volume 返回或设置音量(长整型)
属性/方法名: 说明:
[基本属性]
URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪 或者使用枚举类型:WMPLib.WMPPlayState.wmppsPlaying(播放)
enableContextMenu:Boolean; 启用/禁用右键菜单
fullScreen:boolean; 是否全屏显示
[controls] wmp.controls //播放器基本控制
controls.play; 播放
controls.pause; 暂停
controls.stop; 停止
controls.currentPosition:double; 当前进度
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23”
controls.fastForward; 快进
controls.fastReverse; 快退
controls.next; 下一曲
controls.previous; 上一曲
[settings] wmp.settings //播放器基本设置
settings.volume:integer; 音量,0-100
settings.autoStart:Boolean; 是否自动播放
settings.mute:Boolean; 是否静音
settings.playCount:integer; 播放次数
[currentMedia] wmp.currentMedia //当前媒体属性
currentMedia.ration:double; 媒体总长度
currentMedia.rationString:string; 媒体总长度,字符串格式。如“03:24”
currentMedia.getItemInfo(const string); 获 取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述, "Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址
currentMedia.setItemInfo(const string); 通过属性名设置媒体信息
currentMedia.name:string; 同 currentMedia.getItemInfo("Title")
[currentPlaylist] wmp.currentPlaylist //当前播放列表属性
currentPlaylist.count:integer; 当前播放列表所包含媒体数
currentPlaylist.Item[integer]; 获取或设置指定项目媒体
c# 做的音乐播放器怎么写代码控制音量大小,要可以用音量条拖动或者用...
TrackBar //控制音量按钮事件 private void trbVolueSize_ValueChanged(object sender, EventArgs e){ ChangeVolueSize();} //控制音量方法 void ChangeVolueSize(){ this.axWMP.settings.volume = this.trbVolueSize.Value;} 控件名称修改成:trbVolueSize +-的话,使用键盘事件就可以控制了,得到keyc...
用c#做个mp3播放器,功能只要能播放暂停停止就行,,拜托了。。_百度知...
选择菜单中的“工具”--“自定义工具箱”,打开“自定义工具箱”窗口,在“COM 组件”中选择“Windows Media Player”播放器 添加系统自带的那个播放器插件然后拖动控件,最后 axWindowsMediaPlayer1.URL = filePath;axWindowsMediaPlayer1.Ctlcontrols.play();//播放 其他什么暂停就不用多说了 ...
C#中做Flash播放器。报错:未能导入ActiveX控件。请确保它已正确注册...
看看你的VS的.NETFrameWork是哪个版本的,改到3.5或以下应该就可以解决了。我在vs2010也碰到了这个问题,就是改到3.5解决的问题。
C#编多媒体播放器编译出错“当前上下文不存在名称mediaPlayer"_百度...
Ctlcontrols.next; 下一曲 Ctlcontrols.previous; 上一曲 [settings] wmp.settings //播放器基本设置 settings.volume:integer; 音量,0-100 settings.autoStart:Boolean; 是否自动播放 settings.mute:Boolean; 是否静音 settings.playCount:integer; 播放次数 [currentMedia] wmp.currentMedia //当前媒体属性...
我正在用c#做一个类似音乐播放器的东西,想点击右键对选中的歌曲进行重命...
webForm很好实现,不过看楼主的意思是winform程序吧。方法1.要实现这个给你,首先你的列表要自己重新做(自定义控件)实现选择重命名后label要变成TextBox,这个是大多数、播放器实现的方法 方法2.获取要修改的值,弹出个新的Form来修改,这个简单哈。修改的发表过法就多了,1楼的就可以,也可以直接修改...
C# 播放器URL问题
if (open.ShowDialog() == DialogResult.OK)//如果用户点击了"确定"{ string fildName=open.FileName;this.axMediaPlayer1.stretchToFit = true;//标记为自动播放 this.axMediaPlayer1.currentPlaylist.appendItem(this.axMediaPlayer1.newMedia(fildName));this.axMediaPlayer1.Ctlcontrols.play();//立即...
有没有关于使用c#用vlc编写视频播放器的资料
C#下利用vlc库实现播放多视频源的播放器 第一步:创建一个C#工程。在Form1中拖一个3个plane(上下布局)、2个label、2个text、1个button控件。第二步:把vlc的plugins文件夹和libvlccore.dll libvlc.dll放入DEBUG文件夹内。第三步:编写代码 参考资料———http://blog.sina.com.cn/s/blog_6d...
请问C#MP3播放器怎么实现连续播放?
你查阅一下msdn可以发现有一个状态改变的事件可以利用,获取到的mediaplayer控件状态是播放就绪就可以调用下一首歌曲了。不过这个控件也有一个列表属性,你把歌曲添加到里面去,就可以自动连续播放下一首了。AxWindowsMediaPlayer.StatusChange Event (VB and C#)//状态改变事件 The StatusChange event ...
用c#编写媒体播放器,怎样获取当前文件播放时间以及文件播放总时间,还 ...
//播放器基本控制 Ctlcontrols.play; 播放 Ctlcontrols.pause; 暂停 Ctlcontrols.stop; 停止 Ctlcontrols.currentPosition:double; 当前进度 Ctlcontrols.currentPositionString:string; 当前进度,字符串格式。如“00:23” Ctlcontrols.fastForward; 快进 Ctlcontrols.fastReverse; 快退 Ctlcontrols.next; 下一曲 Ctlcontrols....
C#axWindowsMediaPlayer控件
controls.previous; 上一曲 [settings] wmp.settings //播放器基本设置 settings.volume:integer; 音量,0-100 settings.autoStart:Boolean; 是否自动播放 settings.mute:Boolean; 是否静音 settings.playCount:integer; 播放次数 [currentMedia] wmp.currentMedia //当前媒体属性 currentMedia.duration:double;...