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 musicPlayer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<string> listSong = new List<string>();
/// <summary>
/// 实现按钮1的打开功能
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
open.Title = "请选择音乐文件";
open.InitialDirectory = @"E:\";
open.Multiselect = true;
open.Filter = "所有文件|*.*|mp3文件|*.mp3";
open.ShowDialog();
string[] path = open.FileNames;
for (int i = ; i < path.Length; i++)
{
listBox1.Items.Add(Path.GetFileName(path[i]));
listSong.Add(path[i]);
} }
/// <summary>
/// 把文件显示在listbox中
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listBox1_DoubleClick(object sender, EventArgs e)
{
//调用静态字段并实现双击播放
axWindowsMediaPlayer1.URL = listSong[listBox1.SelectedIndex]; }
/// <summary>
/// 上一个文件并播放
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{ int index = listBox1.SelectedIndex;
index--;
if (index <)
{
index = listBox1.Items.Count-;
} listBox1.SelectedIndex = index;
axWindowsMediaPlayer1.URL = listSong[index]; }
/// <summary>
/// 下一个
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
int index = listBox1.SelectedIndex;
index++;
if (index == listBox1.Items.Count)
{
index = ;
} listBox1.SelectedIndex = index;
axWindowsMediaPlayer1.URL = listSong[index];
}
/// <summary>
/// 当无操作时重复播放
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void axWindowsMediaPlayer1_StatusChange(object sender, EventArgs e)
{
//判断视频是否已停止播放
if ((int)axWindowsMediaPlayer1.playState == )
{
//停顿2秒钟再重新播放
System.Threading.Thread.Sleep(); //axWindowsMediaPlayer1.Ctlcontrols.next();
//重新播放
axWindowsMediaPlayer1.Ctlcontrols.play();
} }
}
}

过完年没想到忽然事情很多,结果搁置了这么久,还好比葫芦画瓢的本领倒是没减退。

这几天在看传智的视频,本次代码的实现通过结合视频中的讲述以及网上查找资料得以完成,但是仍有很多不满意的地方。

譬如一首歌曲停止后无法自动播放下一首,目前考虑可能是调用的是系统播放器,而播放器的真实列表中并没有其他文件,故无法自动播放下一首,只能单曲循环.....

暂且放下,留待日后寻求解决。听一些前辈说,死钻牛角尖并不是良好的学习态度。

09通过winfrom实现简单的播放音、视频的更多相关文章

  1. 全志Tina_dolphin播放音视频裸流(h264,pcm)验证

    最近在验证tina对裸流音视频的支持,主要指h264视频裸流及pcm音频裸流. 在原始sdk中有针对很多video和audio类型的parser,但就是没有找到pcm和h264的parser,所以需要 ...

  2. Qt播放音视频文件报错DirectShowPlayerService::doRender: Unresolved error code 0x80040266或DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 ()

    使用QMediaPlayer和QVideoWidget QHBoxLayout *m_layout=newQHBoxLayout(this); QMediaPlayer *m_player = new ...

  3. android 54 播放音视频

    mainActivity: package com.sxt.day07_09; import java.util.ArrayList; import java.util.HashMap; import ...

  4. Android 多媒体 播放音视频

    1.播放音频 因为涉及到读取文件,所以需要申请权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_S ...

  5. pjsip 播放音视频

    http://blog.csdn.net/leixiaohua1020/article/details/40246783 onCallMediaState回调里,解码方向,获取ci.media[i]. ...

  6. HTML5笔记2——HTML5音/视频标签详解

    音视频的发展史 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Quick ...

  7. Android 视频播放器 (三):使用NBPlayer播放直播视频

    一.前言 在 Android 音视频开发学习思路 中,我们不断的学习和了解音视频相关的知识,随着知识点不断的学习,我们现在应该做的事情,就是将知识点不断的串联起来.这样才能得到更深层次的领悟.通过整理 ...

  8. HTML5音/视频标签详解

    一.发展历: 早期:<embed>+<object>+文件   问题:不是所有浏览器都支持,而且embed不是标准.   现状:Realplay.window media.Qu ...

  9. vlc源码分析(五) 流媒体的音视频同步

    vlc播放流媒体时实现音视频同步,简单来说就是发送方发送的RTP包带有时间戳,接收方根据此时间戳不断校正本地时钟,播放音视频时根据本地时钟进行同步播放.首先了解两个概念:stream clock和sy ...

随机推荐

  1. codevs 1497取余运算

    1497 取余运算  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamon   题目描述 Description 输入b,p,k的值,编程计算bp mod k的值. ...

  2. map插入与查找

    用map构建映射关系可以用来离散化,这里记录一下用法: 插入:将要插入的两个值组成pair,用insert插入map中: 查找:定义iterator,赋成find返回的迭代器,如果没有找到则=mp.e ...

  3. PHP 单引号与双引号的区别 SQL中的使用

    php单引号与双引号用法:引号嵌套方法 1.双引号内不能直接就再嵌套双引号 2.双引号与单引号互相嵌套使用 如: 双引号内直接嵌套单引号 echo "<script language= ...

  4. HBase之四--(3):hbasehbase分页查询

    为了广大技术爱好者学习netty,在这里帮新浪微博@nettying宣传下他出版的新书 <netty权威指南>@nettying兄在华为NIO实践多年,这本书是他的技术和经验的一个结晶.N ...

  5. 指定网卡进行ping操作

    windows系统下:ping -S  查看当前网卡情况 ipconfig 有两块网卡,ip分别为 192.168.12.83.192.168.1.126 使用不同网卡分别ping百度 网卡1: pi ...

  6. java面试编程题

      [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   //这是一个菲波拉契数列问 ...

  7. 模拟定位工具gps mock

    1. 到应用宝下载http://sj.qq.com/myapp/detail.htm?apkName=com.lexa.fakegps 2.  在  setting  里面  开发者选项 3. 把 模 ...

  8. HDU3433 【时间的二分+DP最优解】

    题意: 有n个人,X个任务A,Y个任务B, 给出每个人做A做B的时间,一个人只能在某个时刻做一个工作, 问最短时间完成所有工作. 思路: 二分n个人用的时间,判断最优条件用DP. 可以二分就是因为时间 ...

  9. lightoj 1034【强连通+缩点】

    思路: 缩点,计算入度为0点的个数即可: #include<bits/stdc++.h> using namespace std; typedef long long LL; const ...

  10. IT兄弟连 JavaWeb教程 EL与JSTL表达式经典面试题

    1.简述EL表达式的作用 EL表达式的作用可分为以下三类 访问Bean的属性. 输出简单的运算结果. 获取请求参数值. 2.JSP标签的作用?如何定义? JSP标签可以分离JSP页面的内容和逻辑,业务 ...