1.准備工作 先注冊下我的插件axvlc.dll 注冊方法:cd到文件目錄,然后regsvr32 這樣播放器就已經可以被調用了,由於這個插件activeX在VS2010 VS6.0 上調用都好像有問題,所以用的js寫的。
備注:已知bug 關閉和停止播放的時候可能卡住,插件問題
插件:
插件的引入:
#引入videolan.vlcplugin.2",類名定義為vlc##
<div>
<object classid="clsid:9be31822-fdad-461b-ad51-be1d1c159921"
width="430"
height="320"
id="vlc"
events="true">
<param name="mrl" value="" />
<param name="showdisplay" value="true" />
<param name="autoloop" value="false" />
<param name="autoplay" value="false" />
<param name="volume" value="50" />
<param name="starttime" value="0" />
<embed pluginspage="http://www.videolan.org"
type="application/x-vlc-plugin"
version="videolan.vlcplugin.2"
width="430"
height="320"
name="vlc">
</embed>
</object>
</div>
#引入videolan.vlcplugin.2",類名定義為vlc##
播放函數:
mrl 代表播放地址
function doGo(mrl)
{
var vlc = getVLC("vlc");
itemId=vlc.playlist.add(mrl);
vlc.playlist.playItem(itemId);
}
function getVLC(name)
{
if (window.document[name])
{
return window.document[name];
}
if (navigator.appName.indexOf("Microsoft Internet")==-1)
{
if (document.embeds && document.embeds[name])
return document.embeds[name];
}
else
{
return document.getElementById(name);
}
}
1號平台: 1號平台部分比較簡單,數據未進行什么復雜的獲取和返回
1.對房間發送get請求,正則表達式取出socket ip &&port
2.
b1="4c000000e8030000000000003800000000000000#{@room16}0030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"發送如下數據到此socket地址
@room16表示16進制的房間代碼 需要反轉
比如:9168267=8B BE 7A @room16==7A BE 8B
正則取出reg1= /2014(.*)rtmp/ 帶此格式的數據
這樣就完成了 流媒體rtmp視頻源的獲取,然后寫入web,寫成打開網頁自動播放
<body onload="doGo('rtmp://v2.xxxx.com:1936/live/916826720140725130421')">
2號平台部分
相對比較復雜,數據比較難找
1。對指定房間發送get請求,得到socket ip&port
.
2,發送16進制房間,獲取
b1="78000000189301100000000000000000#{@room16}0031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
3.返回值解析
這個接口會返回很多數據,非常非常之多,我們要做的就是取出格式為20000000079301**********的date
這個值找了我一個星期經過層層對比最終確定這個就是主播idx
正則 regex=/79301100000000000000000.\w{8}/
取出后8位,這里會有多個結果 多個結果匹配,存入數組 ,這樣就取到了16進制的主播idx 再轉回10進制
4.流媒體服務器ip獲取
@http = Net::HTTP.new('www.*****.com', 80)//保密
resp = @http.get("/v2/GetIpList.aspx?roomid="+@room)
拼接字符串 rtmp://61.150.126.40:1938/live/120001A120001B777049 寫入文件 網頁打開 完工