VLC Web Plugin实现HTML5流媒体播放

因为之前在首届数字中国建设峰会中使用过VLC Web Plugin对RTSP的视频直播进行支持,今天突然前同事因为某个项目询问如何支持,特写在此处,供大家参考。本文只覆盖“通过VLC Web Plugin的使用,对接现有的RTSP服务进行实时流播放”这一主题,其余内容,感兴趣的童鞋请自行谷歌。

RTSP(Real Time Streaming Protocol)是一种实时流协议,广泛用于各类视频监控、流媒体服务上。HTML5的Video标签本身是渐进式的,Apple开发并推广的HLP(HTTP Live Streaming)虽然得到了主流浏览器厂商的支持,但实际应用场合中RTSP还是居多。在HTML5发展初期,还有一种实时流技术RTMP(Real-Time Messaging Protocol),其是Adobe/Macromedia为FMS(Flash Media Server)开发的一款实时流协议,闪界的朋友们应该不会陌生,可以通过在HTML5中内嵌Flash来实现实时流的播放。

VLC又称VLC Media Player,是一个自由、开源、便捷、跨平台的媒体播放器,由非营利性组织VideoLAN开发并维护,所支持的格式非常全面,也是我在macOS上的默认播放器。VideoLAN旗下的VLC Web Plugin用于在浏览器中实现对所有VLC支持格式的多媒体内容的内嵌式播放。

首先,我们需要下载安装VLC Web Plugin,由于其在VideoLAN官方的下载选项比较隐蔽,下方直接贴出文件地址。

macOS(VLC 3.x版本目前暂未提供macOS版本的Web Plugin,因此下方链接为书写此文时2.x的最高版本2.2.8)

https://get.videolan.org/vlc/2.2.8/macosx/VLC-webplugin-2.2.8.dmg

win32/win64(未找到单独的VLC Web Plugin安装程序,在安装VLC时有插件安装选项,参见附图,附图来源:孟少华

https://get.videolan.org/vlc/last/win32/vlc-3.0.3-win32.exe
https://get.videolan.org/vlc/last/win64/vlc-3.0.3-win64.exe

安装完毕便可以编写HTML5页面来测试,如下是RTSP测试。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>VLC Web Plugin RTSP DEMO</title>
</head>
<body>
<h1>VLC Web Plugin RTSP DEMO</h1>
<object classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
        codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab"
        style="width: 640px; height: 480px;">
  <param name="src" value="rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov"/>
  <param name="autostart" value="true"/>
  <embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org"
         width="640px"
         height="480px"
         src="rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov"/>
</object>
</body>
</html>

实测效果:

如下是RTMP测试。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>VLC Web Plugin RTMP DEMO</title>
</head>
<body>
<h1>VLC Web Plugin RTMP DEMO</h1>
<object classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
        codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab"
        style="width: 640px; height: 480px;">
  <param name="src" value="rtmp://live.hkstv.hk.lxdns.com/live/hks"/>
  <param name="autostart" value="true"/>
  <embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org"
         width="640px"
         height="480px"
         src="rtmp://live.hkstv.hk.lxdns.com/live/hks"/>
</object>
</body>
</html>

实测效果如下:

实际使用时只需将上述示例中的实时流链接地址更换为实际地址即可,注意:为了兼容性,有两处src声明

macOS下Safari测试通过,windows下(使用32位插件)IE、Firefox测试通过,其余环境可能存在兼容问题。

最后附上VLC Web Plugin的官方Wiki说明,其中有很多控制选项可供各类场合使用。

https://wiki.videolan.org/Documentation:WebPlugin/

Cheer~

音乐分析试验

国庆中秋闲暇时,想起几年前在Flash上实验的动态音色生成库,以及节拍捕捉,顿时感慨颇多。

操起HTML5进行了一些初级实验,打算由浅及深地推进几年前的想法:实时音乐情感可视化。

当前使用的是Web Audio以及WebGL技术,后续的计划是引入DNN。

因为很懒,很久未更新博客了,权当一篇记录吧。

# 实验02

BGM: Gooey by Glass Animals

# 实验03

BGM: In the Grace of Your Love by The Rapture

# 实验04

BGM: Warm In the Winter by Glass Candy

ElementRiver SourceMate Keygen

以下程式仅供计算机爱好者或个人研究与参考之用,请勿用于任何商业场合。

如侵犯了您的合法权益,请即刻联系我,我会尽快将此程式删除。

今天首先要纪念一下,咱们(@万博思图)的WebOS框架玲珑Nephrite v0.2版正式上线了,具备多种高级特性。PS,作为架构师,我定版本号是v0.2,俺们Boss对此颇有微词,说既然v0.2比v0.1版本是质变的升级,不如直接叫v2.0了。

好了,言归正传,下午感冒所以脑残,把ElementRiver给Flash Builder开发的工具集合插件SourceMate给破解了,并制作了简易的注册机,可以生成符合其算法标准的序列号。目前其最新版本是3.x,建议大家直接用Enterprise版,当然想暴力测试验证俺算法是否正确的朋友,欢迎折腾:lol:

以下是在我们公司内部的WebOS上部署的实例截图。

因为该软件在注册时会访问网络验证,因此在注册前,请在hosts文件里添加下述内容,以便将其网络验证这一功能废除。

# source mate
127.0.0.1 services.elementriver.com

以下附上在线Flash版本的Keygen程式。

用位运算优化和精简代码。

那个,转载的请放上此地出处哦~
(未完待续,还会补上数学公式图形)

咱最熟悉的就是十进制了,但咱最好的朋友计算机它最熟悉的是二进制。
它可以很潇洒地甩出一行二进制0110 0100,估计很少有人能一下看懂是十进制的什么数(100)。
不过,从二进制转换到十进制可以这么写:
2^0 * b0 + 2^1 * b1 + … + 2^n * bn (式1)
其中n为比特位,bn为n比特位的值(0或1)。
咱就靠这个公式来翻译一下吧。

但是除了翻译知道这个数是多少(以咱可以理解的形式,例如十进制)外,
位运算还能用来干吗?对咱有用吗?
有用,用来计算,位运算比普通运算要快几百倍甚至更高。

那好,咱先从最基本的位移运算开始。仅针对整数哦,浮点数由于结构特性,不在此文讨论范畴。
在二进制里,最左代表最高位,最右代表最低位。
同时根据式1可以得出结论,bn不为1(即0)的单元,完全不受任何位移运算影响,因此全部忽略。

先谈谈左移。
左移就是将所有位向高处移动,左移一位即将所有字节向高处移一位。
左移有一个特点,如果移位超过限制,即会发生溢出。当然,安全的左移,是直接删除此位的。

原始值:2^0 * b0 + 2^1 * b1 + … + 2^n * bn
左移x位:2^x * b0 + 2^(x+1) * b1 + … + 2^(x+n) * bn

左移x位后的表达式中每一单元,均是原始值中对应单元的2^x倍。
所以简单来说,左移x位,产生的结果就是2^x*原始值。

再谈谈右移。
右移就是将所有位向低处移动,右移一位即将所有字节向低处移一位。
右移也有一个特点,即移动x位,就会把最低的x位全部丢弃(因为最低位是0位,再往下,就木有了^_^)。

原始值:2^0 * b0 + 2^1 * b1 + … + 2^n * bn
右移x位:0 * x + … + 2^(n-x) * bn

右移x后,所有低于x的单元,均为0,而所有其他单元,均比原始值相应单元小2^x倍。
所以,右移x位后产生的结果比较复杂,有两个部分,n小于x的单元和为0,n大于等于x的单元和是原始值n大于等于x的单元和的2^x倍。

从上面看,左移比较有用,因为它可以得出我们需要的确定值,这样想乘以2的指数倍时,可以使用位运算来提高效率。
例如:
1000 * 2 = 1000 << 1
1000 * 32 = 1000 << 5

 

那右移的用处在哪儿呢?

移动了x位,有x个不确定项,嗯,这是个难题。

但是换一种思路,n大于等于x的单元,位移后全部比原始值对应单元小2^x倍。

而位移后n小于x的单元被删除,即等同于0无效化,其实也能视为比原始值对应单元小无限倍(趋于无穷大,因此为0)。

所以,当我们近似认为,n小于x的单元,位移后全部比原始值对应单元小2^x倍时。

原始值:2^0 * b0 + 2^1 * b1 + … + 2^n * bn

右移x位近似:2^(-x) * b0 + 2^(1-x) * b1 + … + 2^(n-x) * bn

暂时无视bn,假设所有bn均为1,制造误差最大条件,

由此产生的误差:- 2^(-1) – 2^(-2) – … – 2^(-x)

依据求和公式,对误差求和,

S = ( -2^(-1) * ( 2^(-x+1) – 1 ) ) / ( 2^(-1) – 1 ) = 2^(-x) – 1,

当x=1时,S最大值为-0.5,当x趋向无穷时,S最小趋向为-1。

即在假设所有位均为1的最坏情况下,右移近似误差在(-1,-0.5]范围内。

 

好啦,到此咱可以得出结论啦, 右移x位近似可以等同原始值除以2^x,并且误差在-1到-0.5之间,因此通常情况下的右移x位,等于原始值除以2^x并向下求整。

即 NUMBER >> x = Math.floor( NUMBER /  (2 ^ x) )

不过若x很大,原始值中低于x的位中为1的又较多,那么在可以被除尽的场合,依然会因为误差-1,而错误地减去1。

 

未完待续……:mrgreen:

耳机舒服,Mac音量补丁


如果您跟乖俺一样使用苹果笔记本,在使用自己的耳机时,会发现,第一次插入耳机时,系统会将音量自动设置在中间水平,在我们调整音量之后,下次开机时如果不再是耳机输出(即关机时我们把耳机拔掉或者拿它做别的事情,例如听iPod),这时再插入耳机,系统依旧会自动将音量设置在中间水平,没有记住上一次的设置。

如果您使用的是阻抗高的耳机还蛮适宜的,但是像俺同时拥有iPod,因此耳机是iPod和本子共用的。众所周知,随身听设备专用的耳机,阻抗一般都是很小的,例如为iPod设计的耳机都是标准的32Ω,在本子中间水平的音量输出下,简直是震耳欲聋,估计多放一会耳机都要完蛋。为了保护自己的耳朵和耳机,乖每次都是小心翼翼地先将音乐暂停,然后插上耳机,再调节音量至最低一格,再继续播放音乐。

因为俺买了三年的Apple Care,于是就这个问题致电苹果售后服务热线三次,头两次他们请我耐心等待20多分钟后我真没耐心继续等待,就挂了,最后一次等待了10分钟,然后客服对我说,需要到Apple Store问问Genius。

于是我去了西单的Apple Store(为什么不去三里屯,认识俺的人都知道我对那家有愧疚感),也没有人明白如何设置。三月底我去上海看我家那位时,顺便也去了那边的Apple Store,同样无果,客户告诉我,可能是一个未重视的Bug,希望我耐心等待处理。

好吧,这感觉,你懂的。

谷歌了一下,国外有人问相关问题,不过没有人给出解决办法。于是,我想干脆,自己动手,丰衣足食,开发了这款程序。本程序的原理很简单,接管系统音量设置,首次使用其他音频输出时(例如耳机插孔),会将音量调整到最低那一格,用户在本程序上设置合适的音量后,下次会记住用户的设置,不必再担心系统遗忘您的设置,使用大音量伤害到您的耳机和耳朵。

界面上会显示当前音频输出信息,拖动滑块可以调整音量。
启动时运行复选框,可以选择是否在开机启动完毕后自动开启保护功能。
开启保护按钮,按下去的状态代表服务正在运行,点击可以切换服务运行与否。

尚不确定其他音频输出方式,例如蓝牙耳机会否出现这种问题,因为没有测试设备。
不过这个小巧的服务应该会给广大高档、低阻抗、直推耳机用户带来不少的便利,只要有这程序,就不用再担心换上耳机听歌时忘记暂停音乐被吓到的痛苦了。

下载地址

 

小试反汇编,Quick Pick v2.0.3 破解

QuickPick是一个模仿Mac OS X 10.7快速启动的程序,简单说就是把软件图标排列成iOS系统一样的显示方式。

之前在福利社(MacX)下载的是v2.0.2版,但是无意发现严重的内存泄漏BUG,在网上搜索发现新版本v2.0.3版修复了此BUG,可是没有破解版,于是俺就决定自己动手,用反编译来分析其许可证验证逻辑,并直接在其机器码上动刀。

结果发现虽然它的关于注册和验证的逻辑比较多,但是验证机制很简单,因此也没花费我多少功夫就把它给废掉了。看来,俺是这个版本的破解第一人,哈哈。

当然了,如果想费时间,可以根据它的算法写一个注册机,但是暂时就不折腾啦,哈哈。

此为完全破解版,不会自动弹出注册窗口,并且俺把购买和注册功能都废了,用户手动开启注册窗口也会发现,试用期永远是用不完的。俺也汉化了一些简单的提示信息,特放出来让更多的人可以提前享受一下,希望大家喜欢,哈哈:)cheer~

鉴于福利社已经提供下载了,于是直接附上下载页面
PS:福利社不厚道哦,下载的DMG里连我附带的介绍文档都删了(不过的确也没啥用,只是标明是俺破解的罢了,哈哈)~

Source Mate For Flash Builder

茄子一段时间前推荐过我一款Flash Builder的插件,名叫Source Mate,为Flash Builder这个基于Eclipse的具备众多让大家称之难用功能的大插件,提供了几个比较不错的方法,也算是为土砖(Adobe)的Flash Builder修修补补了一些东西吧。

该软件是收费的,不过同学们如果想要免费用着试试,也是可以的。这家伙的公司很厚道,软件是通过将你输入的邮箱和注册码发往服务器验证是否合法来注册的。于是乎,我们修改hosts文件,在里面加上

# Source Mate Reg :)
127.0.0.1 services.elementriver.com

然后本地开启一个web服务器,糊弄一个虚拟目录指向services.elementriver.com,并在其下建立sourcemate/usage2.php,这个php只要返回一个“VALID”的字符串,就OK了,这会你再开启Source Mate,随便写邮箱和注册码,吼吼~

PS:相当无耻的方法。

Flash Builder 4 Beta 2 过期

今年这个4月1日可真是愚人节,俺一直用的Flash Builder 4 Beta 2突然就提示我许可已过期,打不开了,不会吧。

原来零点已过,已经到4月1日了,看来Flash Builder 4 Beta 2的许可最长日期就是到今年愚人节。

可是Flash Builder正式版有些方面跟当前手上的项目有所冲突,出于成本考虑,乖我决定用土办法,将日期调回到2009年4月1日,继续使用。哈哈。

话说Adobe的Adobe PCD目录下的cache目录下的cache.db是sqlite的数据库文件,昨天以为是Adobe把俺的序列号给封掉导致的许可过期,于是对其动了动刀子,结果发现这个不是本质原因,不过在里面发现了很多东西,以后可以尝试下crack,哈哈。