VFP调用VLC控件实现播放音视频的过程总结

VLC全称为VLC Media Player ,是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。它同时提供了ActiveX控件,可进行二次开发,实现一个多媒体播放器。下面以简单易用的VFP语言为例,制作一个简易播放器。

首先需要下载安装VLC,请使用其最新版本。下载地址:VLC: Official site - Free multimedia solutions for all OS! - VideoLAN

安装后即自动注册了ActiveX控件,可在程序中调用。

一、界面设计。先从表单控件列表中选中VLC控件放到表单中并调整位置、大小。其余控件如下图,依次放到表单中并调整布局。

二、各控件的代码(设VLC控件的name属性为olebfq)

1、“打开”按钮的click代码:

F=GETFILE()
IF EMPTY(F) THEN
    RETURN
ENDIF

F='file:///'+CHRTRAN(F,'\','/')

THISFORM.olebfq.OBJECT.playlist.items.CLEAR

vid=THISFORM.olebfq.OBJECT.playlist.ADD(F)   &&添加到播放列表
IF vid>=0 THEN
    THISFORM.olebfq.OBJECT.playlist.playItem(vid)   &&播放刚加入的媒体
    THISFORM.olebfq.OBJECT.VOLUME=80   &&音量设为80
ENDIF

2、“信息”按钮的click代码:

vmess="版本:"+thisform.olebfq.obJECT.VersionInfo+CHR(13)+CHR(10)
vmess=vmess+'音轨数:'+TRANSFORM(thisform.olebfq.obJECT.audio.count)+CHR(13)+CHR(10)
vmess=vmess+'当前音轨:'+TRANSFORM(thisform.olebfq.obJECT.audio.track)+CHR(13)+CHR(10)
vmess=vmess+'当前通道:'+TRANSFORM(thisform.olebfq.obJECT.audio.channel)+CHR(13)+CHR(10)
vmess=vmess+'播放列表数:'+TRANSFORM(thisform.olebfq.objECT.playlist.itemCount)+CHR(13)+CHR(10)
vmess=vmess+'当前播放:'+TRANSFORM(thisform.olebfq.objECT.playlist.currentItem)+CHR(13)+CHR(10)
vmess=vmess+'文件名:'+thisform.olebfq.objECT.mediaDescription.title

thisform.edit1.Value=vmess

**显示字幕
thisform.olebfq.oBJECT.video.marquee.text='当前播放:'+thisform.olebfq.objECT.mediaDescription.title
thisform.olebfq.oBJECT.video.marquee.color=0xFFFF00
thisform.olebfq.oBJECT.video.marquee.enable   &&启用
thisform.olebfq.oBJECT.video.marquee.position='top-left'   &&中心center,左left,右right,顶部top,左上角top-left,右上角top-right ,底部bottom,左下角bottom-left,右下角bottom-right

**显示图标(png格式透明图片)
thisform.olebfq.oBJECT.video.logo.file('123.png')
thisform.olebfq.oBJECT.video.logo.enable   &&启用
thisform.olebfq.oBJECT.video.logo.position ='top-right'   &&右上角

3、“播放”按钮的click代码:

thisform.olebfq.oBJECT.playlist.play

4、“暂停”按钮的click代码:

thisform.olebfq.oBJECT.playlist.pause

5、“停止”按钮的click代码:

thisform.olebfq.oBJECT.playlist.stop

6、“静音”按钮的click代码:

thisform.olebfq.object.audio.toggleMute()

7、“上一首”按钮的click代码:

thisform.olebfq.objECT.playlist.prev

8、“下一首”按钮的click代码:

thisform.olebfq.objECT.playlist.next

9、音轨选项的InteractiveChange事件的代码:

thisform.olebfq.oBJECT.audio.track=this.value   &&超出媒体音轨数目(用thisform.olebfq.obJECT.audio.count可获取)将出错
this.Parent.cmdmess.click   &&触发“信息”按钮

10、立体声选项的InteractiveChange事件的代码:

thisform.olebfq.obJECT.audio.channel=this.Value
this.Parent.cmdmess.click   &&触发“信息”按钮

11、在VLC控件的MediaPlayerPlaying事件中的代码:

this.Parent.cmdmess.click   &&触发“信息”按钮

12、在VLC控件的MediaPlayerPositionChanged事件中的代码:

thisform.lbljdsj.Caption="posi:"+TRANSFORM(position)+"|time:"+TRANSFORM(this.oBJECT.input.time)+'|length:'+TRANSFORM(this.oBJECT.input.length)+'|state:'+TRANSFORM(this.oBJECT.input.state)

这些代码是动态记录媒体播放的进度,包括总时间和当前时刻的时间。其中position是该事件传出的参数,它的值很有意思,总是0到1之间,这就可以直接用来做一个进度条,将它乘以进度条容器的总长度即可动态显示当前进度条的长度,无需进行其他计算。

以上代码完全可以实现常用的播放器功能了。其中,笔者最感兴趣的是VLC的音轨、字幕、图标这几个功能,之前见到的各种播放器控件,包括WMP、MCI等都没有这么有趣的功能,十分难得。比如音轨,它与立体声、左右声道的概念是不同的,许多卡拉OK歌曲是通过改变音轨来切换原唱和伴奏的,只有古老的VCD视频才是通过切换左右声道来切换原唱与伴奏,因此VLC的这个功能就可以让你实现K歌点播功能!此外你还可以在视频中打上自己的字幕,以及打上自己的Logo图标。上文中已在“信息”按钮的代码中演示了字幕和图标功能。

更有趣、更强大的功能有待各位读者发挥想象力去深度开发,笔者在此仅作抛砖引玉。

补充说明:安装64位的VLC,发现其activex控件无法调用,改为安装32位后调用正常。特此补充。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值