转:
http://zhy589.iteye.com/blog/1295130
VLC对象列表
Vlc Plugin Object的方法
l VersionInfo:成员, 返回版本信息的字符串
l vlc.versionInfo():方法, 返回版本信息的字符串
Audio object的属性(读写)
l vlc.audio.mute :静音和非静音
l vlc.audio.volume:音量的百分比,值在0—200之间
l vlc.audio.track:音轨信息,值在0-65535之间
l vlc.audio.channel:值在1至5整数,指示的音频通道模式使用,值可以是:“1 =立体声”,“2 =反向立体声”,“3 =左”,“4 =右” “5 =混音”。
l vlc.audio.toggleMute() : 方法,切换静音和非静音
Input object
只读属性
l vlc.input.length:毫秒数,输入文件的长度
l vlc.input.fps:每秒产生一个浮动帧
l vlc.input.hasVout:一个布尔值,返回true当视频正在显示,它返回false时不显示视频
l 读/写属性
l vlc.input.position:在多媒体流正常化的情况下,给定一个浮点值,值范围[0.0 - 1.0]
l vlc.input.time:在给定的时间以毫秒为单位的绝对位置,这个属性可以用来寻求流
<!-- absolute seek in stream !-->
vlc.input.time = <absolute seek>
<!-- relative seek in stream !-->
vlc.input.time = vlc.input.time + <relative seek>
l vlc.input.state:当前状态(空闲/关闭= 0,开幕= 1,缓冲= 2,打= 3,暂停= 4,停止= 5,错误= 6)
l vlc.input.rate:输入速度,浮动的正常速度,0.5为速度的一半,为2.0快一倍。
Playlist object
只读属性
l vlc.playlist.itemCount:目前播放列表中的项目的数量
l vlc.playlist.isPlaying:一个布尔值,返回true 正在播放,false未播放
方法
l vlc.playlist.add(mrl):添加一个mrl(多媒体资源定位器)播放列表项目。mrl必须为字符串。
l vlc.playlist.add(mrl,name,options):添加mrl(多媒体资源定位器)播放列表项目,与meta的名字和选项。所有的输入值必须为字符串。
l vlc.playlist.play():开始播放当前列表项
l vlc.playlist.togglePause():切换当前播放列表项目的暂停状态
l vlc.playlist.stop():停止播放当前播放列表项目
l vlc.playlist.next():迭代到下一个播放列表项目
l vlc.playlist.prev():迭代到以前的音乐项目
l vlc.playlist.clear():清空当前播放列表,所有项目将被删除
l vlc.playlist.removeItem(number):删除给定的项目编号(number不能比vlc.playlist.itemCount大)
Video object
只读属性
l vlc.video.width:返回视频水平尺寸
l vlc.video.height:返回视频垂直大小
读/写属性
l vlc.video.fullscreen:当设置为true,视频将显示在全屏模式.设置为false时,视频按指定的大小显示。该属性需要布尔值作为输入。
l vlc.video.aspectRatio:获取和设置长宽比使用视频屏幕。该属性采用字符串作为输入值。有效值为:“1:1”,“4:3”,“16:9”,“16:10”,“221:100”和“5:4”
方法
l vlc.video.toggleFullscreen():全屏模式切换
Log object
只读属性
l vlc.log.messages:返回一个消息对象
l 读/写属性
l vlc.log.verbosity:写改变日志信息冗赘级别数[-1,0,1,2,3]。这些数字的含义如下:-1停用,0信息,1个错误,2警告,3调试。
Messages object
只读属性
l messages.count:返回日志消息的数量
l messages.severity:数字,日志信息的严重程度(0 =信息,1 =错误,2 =警告,3 =调试)
l message.name:对VLC模块的名称印的日志信息(如:网址,directx,等等..)
l message.type:对模块类型的vlc印日志信息(如:input, access, vout, sout,等等..)
l message.message:消息文本
方法
l messages.clear():清除当前日志缓冲区。
l messages.iterator():返回一个消息迭代器对象
Iterator object
只读属性
l iterator.hasNext:返回一个布尔值,表明还有下一个信息
方法
l iterator.next():返回下一个消息对象它的日志。
VLC可以实现的功能
l Vlc可以通过修改input属性,实现seek,快播,慢播
l 修改audio属性可以实现,声道设置、音量设置、静音
l 通过对video的设置,实现全屏/屏幕比例/屏幕大小的控制
l 通过PlayList对象的控制,可以实现添加、删除播放对象的功能
当前存在的问题
问题描述
l VLC对TS文件支持存在问题,VLC控件、获取不到时间进度信息.虽然视频已经播放了很久,但时间始终是0。见图1、图2:
图1:VLC windows版
图2:vlc 网页插件版
分体分析
l VLC的input属性未能正常获取fps和time的值
导致结果
l 结束时间无法控制
l 进度条失效
相关文章
- HttpURLConnection的方法setRequestProperty(参数)的参数解读和用法
- HttpURLConnection的post请求传递header参数和body参数的具体方法实现
- SpringCloud Feign重写编码器支持pojos多实体与文件数组参数传递的方法
- 拦截器获取被拦截方法的参数和返回值,并判断传参是否为空
- http请求调用的参数同时包含流文件和普通参数的处理方法
- C#委托(delegate)的常用方式- 委托的定义 // 委托的核心是跟委托的函数结构一样 public delegate string SayHello(string c); public delegate string SayHello(string c);:定义了一个公共委托类型 SayHello,该委托接受一个 string 类型的参数 c,并返回一个 string 类型的值。 Main 方法 static void Main(string args) { // 本质上其实就是把方法当作委托的参数 SayHello sayC = new SayHello(SayChinese); Console.WriteLine(sayC("欢迎大家")); SayHello sayE = new SayHello(SayEgnlish); Console.WriteLine(sayE("Welcome to")); // 简单的写法:必须类型一样 SayHello s1 = SayChinese; SayHello s2 = SayEgnlish; Console.WriteLine(s1("好好好")); Console.WriteLine(s2("Gooood")); // 最推荐 SayHello ss1 = con => con; Console.WriteLine(ss1("niiiice")); // 匿名委托:一次性委托 SayHello ss3 = delegate(string s) { return s; }; Console.WriteLine(ss3("说中国话")); } 常规实例化委托 SayHello sayC = new SayHello(SayChinese);:创建了一个 SayHello 委托的实例 sayC,并将 SayChinese 方法作为参数传递给委托的构造函数。 Console.WriteLine(sayC("欢迎大家"));:通过委托实例调用 SayChinese 方法,并输出结果。 同理,SayHello sayE = new SayHello(SayEgnlish); 和 Console.WriteLine(sayE("Welcome to")); 是对 SayEgnlish 方法的委托调用。 简化的委托赋值方式 SayHello s1 = SayChinese; 和 SayHello s2 = SayEgnlish;:当委托类型和方法签名一致时,可以直接将方法赋值给委托变量,无需使用 new 关键字。 Console.WriteLine(s1("好好好")); 和 Console.WriteLine(s2("Gooood"));:通过委托实例调用相应的方法。 使用 Lambda 表达式实例化委托 SayHello ss1 = con => con;:使用 Lambda 表达式创建委托实例 ss1,con => con 表示接受一个参数 con 并返回该参数本身。 Console.WriteLine(ss1("niiiice"));:通过委托实例调用 Lambda 表达式。 匿名委托 SayHello ss3 = delegate(string s) { return s; };:使用匿名委托创建委托实例 ss3,delegate(string s) { return s; } 是一个匿名方法,直接在委托实例化时定义了方法体。 Console.WriteLine(ss3("说中国话"));:通过委托实例调用匿名方法。 委托引用的方法定义 public static string SayChinese(string content) { return content; } public static string SayEgnlish(string content) { return content; } public static string SayChinese(string content) 和 public static string SayEgnlish(string content):定义了两个静态方法,分别接受一个 string 类型的参数 content,并返回该参数本身。这两个方法的签名与 SayHello 委托一致,可以被 SayHello 委托引用。 常规的委托实例化、简化的赋值方式、Lambda 表达式和匿名委托。委托在 C# 中是一种强大的机制,它允许将方法作为参数传递,实现了代码的灵活性和可扩展性。
- C#异步执行带有返回值和参数的方法,且获取返回值
- Python 方法中data和json参数的使用
- 图表曲线Teechart——采用Cdib类和内存映射文件加快TChart控件画图速度的实现方法
- java addmonth_Calendar的add方法中的DAY_OF_MONTH参数和DAY_OF_YEAR参数有什么区别?