zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C# Winform播放多媒体文件 [AudioVideoPlayback ]

c#Winform文件 播放 多媒体
2023-09-14 09:00:58 时间

二、准备

Microsoft.DirectX.AudioVideoPlayback命名空间在Framework中并包含,需要单独的安装Microsoft DirectX SDK,为了方便,这里提供两个必须的dll直接使用:Microsoft.DirectX.rar

三、实现

新建Winform项目,引用命名空间: using Microsoft.DirectX.AudioVideoPlayback;

3.1 初始化

复制代码             Video movie;
            Microsoft.DirectX.AudioVideoPlayback.Audio audio;

            path = path.ToLower();
            if (path.StartsWith("http://") || path.StartsWith("https://"))
                movie = Video.FromUrl(new Uri(path), true);
            else
                movie = Video.FromFile(path);

            audio = movie.Audio; 复制代码

代码说明:

a). 注意变量movie与audio是作为类的成员变量。

b). Video支持本地/远程视频文件播放。

c). 这里不贴关于path的验证代码,自行加上即可。

3.2 常用方法和属性

Play 播放

Stop 停止播放

Pause 暂停

CurrentPosition与Duration配合控制总进度和当前进度(位置)

audio.Volume 控制声音大小,注意范围

3.3 停止播放和释放资源

复制代码             try
            {
                movie.Stop();
                if (audio != null)
                    audio.Dispose();
                audio = null;
                if (movie != null)
                    movie.Dispose();
                movie = null;
            }
            catch
            {
                try
                {
                    movie = null;
                }
                catch { }
            } 复制代码

代码说明:

当播放完毕之后需要调用这段代码释放资源。

 

四、注意

4.1 声音设置

声音的设置范围为0到-10000。如果你的控件是0到100可以用公式:value * 100 - 10000。

4.2 Video对象释放的问题

在Dispose之前判断一下Video对象为不为null就可以了,之前也找了蛮多资料,直接Dispose的话代码会不继续往下执行了,甚至都没法try得到。

4.3 播放完毕的委托

movie.Ending这里并没有成功,我这里也是用的定时器,在定时器里面判断比较CurrentPosition与Duration,但是这里有个问题注意,有可能播放完了CurrentPosition也不等于Duration,所以需要额外处理,判断记录一下上一次CurrentPosition的值,如果两次相等,那么也应该是结束了,这里定时器我设置为1秒。

 

 

结束语

上月末(09年12月)也正式上班了,算是给我一份新年礼物吧,比较中意,总算是到了起码福利正规的企业,有了很多可以讨论的同事,好好把握一下,准备扎根了 :) 现在在从事手机方面的开发,估计一段时间之后可能会写点那方面的文章。

 

转载:http://www.cnblogs.com/over140/archive/2010/01/07/1640813.html


WPF之VLC流媒体播放 原文:WPF之VLC流媒体播放 最近在做关于在WPF使用VLC流媒体播放的问题,现在可以在WPF中实现VLC本地播放了,流播放解决了,在下面的代码中注释流媒体播放那两段代码,更多的在乎大家摸索了^^,以供大家相互学习,这里我就先把实现VLC本地播放的代码和过程写给需要的朋友参考。
几种播放视频文件的方式(一) —— 总结播放视频的几种方式(一)几种播放视频文件的方式(二) —— 基于MediaPlayer框架的视频播放(一)几种播放视频文件的方式(三) —— 基于AVFoundation框架视频播放(一)几种播放视频文件的方式(...
制作播放视频关灯效果 网上有个视频插件,但是我觉得不太好用,就自己写了一个,不过各位可以参考参考,地址 制作步骤 : 1、页面加个遮罩层,默认是隐藏的