音视频播放器源码

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.IO;

namespace WinMediaPlayer

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void btnPlay_Click(object sender, EventArgs e)

{

MusicPlayer.Ctlcontrols.play();

}

private void btnPuse_Click(object sender, EventArgs e)

{

MusicPlayer.Ctlcontrols.pause();

}

private void btnStop_Click(object sender, EventArgs e)

{

MusicPlayer.Ctlcontrols.stop();

}

private void Form1_Load(object sender, EventArgs e)

{

MusicPlayer.settings.autoStart = false;

//MusicPlayer.URL = @"C:\Users\Administrator\Desktop\Net\1初级--net基础\第10天--高级--面向对象多态\2\1、复习~1.avi";

label1.Image = Image.FromFile("Play.jpg");

}

bool flag = true;

private void btnPlayOrPause_Click(object sender, EventArgs e)

{

try

{

if (btnPlayOrPause.Text == "播放")

{

if (flag)

{

MusicPlayer.URL = listPath[lbMusics.SelectedIndex];

}

MusicPlayer.Ctlcontrols.play();

btnPlayOrPause.Text = "暂停";

}

else if (btnPlayOrPause.Text == "暂停")

{

MusicPlayer.Ctlcontrols.pause();

btnPlayOrPause.Text = "播放";

flag = false;

}

}

catch { }

}

private void btnStopTwo_Click(object sender, EventArgs e)

{

MusicPlayer.Ctlcontrols.stop();

}

/// <summary>

/// 选择音乐文件,并加载到listBox中

/// </summary>

List<string> listPath = new List<string>();

private void btnOpen_Click(object sender, EventArgs e)

{

try

{

OpenFileDialog ofd = new OpenFileDialog();

ofd.Filter = "音乐文件|*.mp3|WAV文件|*.WAV|所有文件|*.*";

//ofd.InitialDirectory = @"C:\Users\Administrator\Desktop\Music";

ofd.InitialDirectory = "Music";

ofd.Multiselect = true;

ofd.ShowDialog();

//将选中的文件保存到数组中

string[] strPath = ofd.FileNames;

//循环将选中的音乐文件显示在ListBox中

for (int i = 0; i < strPath.Length; i++)

{

lbMusics.Items.Add(strPath[i].Substring(strPath[i].LastIndexOf(‘\\‘) + 1));

listPath.Add(strPath[i]);

}

//加载完毕后让listBox中默认选择第一行数据

lbMusics.SelectedIndex = 0;

}

catch { }

}

/// <summary>

/// 双击listBox中的音乐列表播放音乐

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void lbMusics_DoubleClick(object sender, EventArgs e)

{

try

{

if (lbMusics.Items.Count == 0)

{

MessageBox.Show("请选择音乐文件...");

return;

}

if (lbMusics.SelectedIndex != -1)

{

string strSelectPath = listPath[lbMusics.SelectedIndex];

MusicPlayer.URL = strSelectPath;

MusicPlayer.Ctlcontrols.play();

btnPlayOrPause.Text = "暂停";

ExistsLrc(listPath[lbMusics.SelectedIndex]);

}

}

catch { }

}

/// <summary>

/// 单击播放上一曲

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnPre_Click(object sender, EventArgs e)

{

try

{

int index = lbMusics.SelectedIndex;

if (index == 0)

{

index = listPath.Count;

}

index--;

lbMusics.SelectedIndex = index;

MusicPlayer.URL = listPath[index];

MusicPlayer.Ctlcontrols.play();

btnPlayOrPause.Text = "暂停";

}

catch { }

}

/// <summary>

/// 单击播放下一曲

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnNext_Click(object sender, EventArgs e)

{

try

{

int index = lbMusics.SelectedIndex;

index++;

if (index == listPath.Count)

{

index = 0;

}

lbMusics.SelectedIndex = index;

MusicPlayer.URL = listPath[index];

MusicPlayer.Ctlcontrols.play();

btnPlayOrPause.Text = "暂停";

}

catch { }

}

/// <summary>

/// 右键删除歌曲列表

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void contextMenuStrip1_Click(object sender, EventArgs e)

{

try

{

if (lbMusics.SelectedItems.Count != 0)

{

for (int i = 0; i < lbMusics.SelectedItems.Count; i++)

{

listPath.RemoveAt(lbMusics.SelectedIndex);

lbMusics.Items.RemoveAt(lbMusics.SelectedIndex);

}

}

}

catch { }

}

/// <summary>

/// 切换静音与放音

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void label1_Click(object sender, EventArgs e)

{

try

{

if (label1.Tag.ToString() == "1")

{

MusicPlayer.settings.mute = true;

label1.Image = Image.FromFile("Stop.jpg");

label1.Tag = "2";

}

else if (label1.Tag.ToString() == "2")

{

MusicPlayer.settings.mute = false;

label1.Image = Image.FromFile("Play.jpg");

label1.Tag = "1";

}

}

catch { }

}

/// <summary>

/// 自动播放下一曲

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void timer1_Tick(object sender, EventArgs e)

{

if (MusicPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying)

{

if (double.Parse(MusicPlayer.currentMedia.duration.ToString()) <= (double.Parse(MusicPlayer.Ctlcontrols.currentPosition.ToString()) + 1))

{

try

{

int index = lbMusics.SelectedIndex;

index++;

if (index == listPath.Count)

{

index = 0;

}

lbMusics.SelectedIndex = index;

MusicPlayer.URL = listPath[index];

MusicPlayer.Ctlcontrols.play();

btnPlayOrPause.Text = "暂停";

}

catch { }

}

}

}

void ExistsLrc(string lrcPath)

{

try

{

lrcPath += ".lrc";

if (File.Exists(lrcPath))

{

string[] lrcText = File.ReadAllLines(lrcPath, Encoding.Default);

//格式化歌词

FormateLrc(lrcText);

}

else

{

lblLrc.Text = "=================未找到歌词=================";

}

}

catch { }

}

List<double> listTime = new List<double>();

List<string> listLrc = new List<string>();

void FormateLrc(string[] lrcText)

{

try

{

for (int i = 0; i < lrcText.Length; i++)

{

string[] lrcTemp = lrcText[i].Split(new char[] { ‘[‘, ‘]‘ }, StringSplitOptions.RemoveEmptyEntries);

string[] newLrcTemp = lrcTemp[0].Split(new char[] { ‘:‘ }, StringSplitOptions.RemoveEmptyEntries);

double time = (double.Parse(newLrcTemp[0]) * 60) + double.Parse(newLrcTemp[1]);

//将获得的时间保存到集合中

listTime.Add(time);

//将时间对应的歌词保存到集合中

listLrc.Add(lrcTemp[1]);

}

}

catch { }

}

private void timer2_Tick(object sender, EventArgs e)

{

try

{

for (int i = 0; i < listTime.Count; i++)

{

if (MusicPlayer.Ctlcontrols.currentPosition >= listTime[i] && MusicPlayer.Ctlcontrols.currentPosition < listTime[i + 1])

{

lblLrc.Text = listLrc[i];

}

}

}

catch { }

}

}

}

时间: 2024-11-15 10:01:45

音视频播放器源码的相关文章

C++、VC++、MFC网页自动注册、登陆、发帖、留言,QQ注册、QQ申请器源码、注册邮箱源码、自动发帖源码

C++.VC++.MFC网页自动注册.登陆.发帖.留言,QQ注册.QQ申请器源码.注册邮箱源码.自动发帖源码 参考资料: 自动登录yahoo邮箱http://blog.csdn.net/suisuibianbian/archive/2005/12/12/550260.aspx VC采集网页所有表单域http://blog.csdn.net/fjssharpsword/archive/2010/12/17/6081689.aspx 说说这类软件最常见的使用方式吧. 也许你经常看到有人发布了以下这类

vbs-计算机硬件信息查看器-源码-.exe程序-可直接使用复制使用

vbs-计算机硬件信息查看器-源码-可直接使用复制使用 #----------------------------------------------------------------------------------------以下为源代码 msgbox "               正在加载本机配置信息,请按确认继续!       ", 40, "配置信息查询" On Error Resume Next   SerVerPath = "c:\硬件

Python解析器源码加密系列之(二):一次使用标准c的FILE*访问内存块的尝试

摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中.但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就提出了一种把通过FILE*来访问内存的需求,下文是针对这个需求的几个方面的尝试及其结论. 以下尝试的前提是:Win7 + VS2010. 在vc中,FILE其实就是_iobuf,定义如下: struct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前

Android短信插入器源码

package com.examp.createsms; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentValues; import android.net.Uri; import android.os.Bundle; public class MainActivity extends Activity { @Override protected

自制Android中的短息备份器源码

短信的实体bean package com.examp.backsms.domain; public class SmsInfo { private String address; private String date; private String type; private String body; public SmsInfo() { } public SmsInfo(String address, String date, String type, String body) { thi

Delphi制作QQ自动登录器源码

Delphi制作QQ自动登录器源码 http://www.cnblogs.com/sunsoft/archive/2011/02/25/1964967.html 以TM2009为例,检查了一下,未登录之前一个窗体,上边两个控件,登录以后,窗体捕获到一个控件,根据这个,首先找到QQ登录框,输入用户名,密码的位置,获取窗体句柄的具体代码如下: 这里先定义了一个record类型, 1   TQQWnd= record 2     QQWnd,QStatusWnd: HWND;  //QQ窗口句柄,QQ

Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知)

Android音乐播放器(歌词.均衡器.收藏.qq5.0菜单.通知) 一款Android音乐播放器源码,基本功能都实现了 qq5.0菜单(歌词.均衡器.收藏.qq5.0菜单.通知) 只有向右滑动出现,菜单键和指定按钮都还没有添加. 下载地址:http://www.devstore.cn/code/info/1144.html 运行截图:     热门源码下载: 高仿京东商城 Android快速开发不可或缺的11个工具类 Android快速开发框架LoonAndroid Android应用源码比较

C_Me音乐播放器源码

C_Me音乐播放器源码 源码简介 C_Me音乐播放器是一款音乐播放器应用,该应用已经上线了国内各大应用市场网站,大家可以去安卓测试一下,应用实现了可以播放mp3.wma,还可以显示歌词,可以浏览本地所有音乐文件,可以将音乐分专辑分类,播放器界面切换采用了各种特效,比较炫酷等. 源码介绍 1.SlidingMenu: 2.MediaPlayer的使用: 3.Service与Activity的交互: 4.获取MP3音乐文件的详细信息: 5.识别文件编码: 6.数据库的操作: 7.几个有趣的特效:TV

Pyqt 音视频播放器

在寻找如何使用Pyqt做一个播放器时首先找到的是openCV2 openCV2 貌似太强大了,各种关于图像处理的事情它都能完成,如 读取摄像头.图像识别.人脸识别.  图像灰度处理 . 播放视频等,强大的让你想不到! openCV2 播放视频也很简单: 1 #coding=utf-8 2 3 import cv2.cv as cv 4 filename = "cn.avi" 5 win_name = "video player" 6 capture = cv.Cap