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 ...
随机推荐
- 支持源码单步调试QT库编译笔记
支持源码单步调试QT库编译笔记 编译环境:windows 10 编译工具:mingw_4_4_0 Qt源码版本:qt-everywhere-opensource-src-4.8.5(下载地址:http ...
- 利用Powershell在IIS上自动化部署网站
本文主要讲如何通过Powershell在IIS上自动化部署ASP.NET网站,而不涉及Powershell的基本语法,如果没有Powershell基础的同学也可以把本文作为学习Powershell的基 ...
- 【Boost】boost库asio详解2——io_service::run函数无任务时退出的问题
io_service::work类可以使io_service::run函数在没有任务的时候仍然不返回,直至work对象被销毁. void test_asio_nowork() { boost::asi ...
- 2.7 HBase架构深入剖析
一. 1.client 整个HBase集群的访问入口: 使用HBase RPC机制与HMaster和HRegionServer进行通信: 与HMaster进行通信进行管理类操作: 与HRegionSe ...
- ElasticSearch基础之映射mapping
[01]什么是mapping? 首先去看看官方文档,非常重要:https://www.elastic.co/guide/en/elasticsearch/reference/current/mappi ...
- Python3.6 的字符串内建函数
1.capitalize(self) 将字符串的第一个字符转换为大写 2.casefold(self) 返回将字符串中所有大写字符转换为小写后生成的字符串 3.center(self, width, ...
- Git 移除某些文件
一.前言 在使用 Git 版本控制中,有些文件是不需要加入到版本控制中的.如 日志( log ).编译的文件.这些随时都在变的文件,使用用一个代码库的用户.只要稍稍修改一点,或者启动一下,就会变.容易 ...
- 深入探究Java中equals()和==的区别是什么
目录 相等判断符"==" "=="判断基本类型数据 "=="判断引用类型数据 相等判断方法equals() 思考:为什么要设计equals( ...
- (2)ASP.NET Core 依赖关系注入(服务)
1.前言 面向对象设计(OOD)里有一个重要的思想就是依赖倒置原则(DIP),并由该原则牵引出依赖注入(DI).控制反转(IOC)及其容器等老生常谈的概念,初学者很容易被这些概念搞晕(包括我在内),在 ...
- Qt测试代码执行时间
////////////////////////////////////////////////////////////////// QString _GetIntervalTime(QTime&am ...