09通过winfrom实现简单的播放音、视频
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实现简单的播放音、视频的更多相关文章
- 全志Tina_dolphin播放音视频裸流(h264,pcm)验证
最近在验证tina对裸流音视频的支持,主要指h264视频裸流及pcm音频裸流. 在原始sdk中有针对很多video和audio类型的parser,但就是没有找到pcm和h264的parser,所以需要 ...
- Qt播放音视频文件报错DirectShowPlayerService::doRender: Unresolved error code 0x80040266或DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 ()
使用QMediaPlayer和QVideoWidget QHBoxLayout *m_layout=newQHBoxLayout(this); QMediaPlayer *m_player = new ...
- android 54 播放音视频
mainActivity: package com.sxt.day07_09; import java.util.ArrayList; import java.util.HashMap; import ...
- Android 多媒体 播放音视频
1.播放音频 因为涉及到读取文件,所以需要申请权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_S ...
- pjsip 播放音视频
http://blog.csdn.net/leixiaohua1020/article/details/40246783 onCallMediaState回调里,解码方向,获取ci.media[i]. ...
- HTML5笔记2——HTML5音/视频标签详解
音视频的发展史 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Quick ...
- Android 视频播放器 (三):使用NBPlayer播放直播视频
一.前言 在 Android 音视频开发学习思路 中,我们不断的学习和了解音视频相关的知识,随着知识点不断的学习,我们现在应该做的事情,就是将知识点不断的串联起来.这样才能得到更深层次的领悟.通过整理 ...
- HTML5音/视频标签详解
一.发展历: 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Qu ...
- vlc源码分析(五) 流媒体的音视频同步
vlc播放流媒体时实现音视频同步,简单来说就是发送方发送的RTP包带有时间戳,接收方根据此时间戳不断校正本地时钟,播放音视频时根据本地时钟进行同步播放.首先了解两个概念:stream clock和sy ...
随机推荐
- python 函数定义
我们可以创建一个函数来列出费氏数列 >>> def fib(n): # write Fibonacci series up to n ... """Pr ...
- June 26,程序破解
1.android程序破解练习初级 方法一: 文件名:KeygenMe#1.apk工具:ApktoolGui v2.0 Final 先用ApktoolGui v2.0 Final反编译成java通过查 ...
- Makefile的常用技术总结
一.MAKE中的自动变量: $@: 表示target的名字 $%: 仅当目标是函数库文件中,表示规则中的目标成员名.例如,如果一个目标是"foo.a(bar.o)",那 ...
- VS中文档大纲视图的作用
一.在vs的菜单栏中点击视图==========>其他窗口===========>文档大纲 二.文档大纲的作用是可以查看当前Form窗体的结构,如下图 三.若果感觉控件的类型太长,可以在文 ...
- sip协议呼叫流程详解
1.SIP业务基本知识 1.1 业务介绍会话初始协议(Session Initiation Protocol)是一种信令协议,用于初始.管理和终止网络中的语音和视频会话,具体地说就是用来生成.修改和终 ...
- dubbo 自定义过滤器,打印接口调用信息
dubbo提供了web filter类似的com.alibaba.dubbo.rpc.Filter,这样,我们可以在dubbo提供的服务提供方和消费方都可以自定义过滤 器,从而可以获得方法调用的时间或 ...
- idea2018.2.5版本使用之背景色
idea 背景色: 写代码区换眼色豆沙色:
- rpm 命令|rpm 安装|rpm 卸载|rpm 使用|rpm 删除
在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是Red Hat Package Manager(简称RPM) ...
- Hadoop中Yarnrunner里面submit Job以及AM生成 至Job处理过程源码解析
参考 http://blog.csdn.net/caodaoxi/article/details/12970993 Hadoop中Yarnrunner里面submit Job以及AM生成 至Job处理 ...
- opencv Mat.at
opencv c++ mat获取像素及像素赋值 For accessing pixel's channel value : ; i < image.cols; i++) { ; j < i ...