zoukankan      html  css  js  c++  java
  • 流媒体协议地址获取 rtmp

    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 写入文件 网页打开 完工

  • 相关阅读:
    第十五章:字段与属性
    第二十章:封装与继承
    第二十一章;泛型List
    第十九章:对象初始化器
    第十八章:构造方式
    第十七章:方法的重载
    request和response对象常用方法
    面向对象(1)
    request和response
    tomcat
  • 原文地址:https://www.cnblogs.com/tester-huang/p/4632344.html
Copyright © 2011-2022 走看看