首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在具有良好浏览器兼容性的网页上播放Rtsp流的最有效插件

在具有良好浏览器兼容性的网页上播放Rtsp流的最有效插件
EN

Stack Overflow用户
提问于 2011-06-02 06:46:29
回答 3查看 20.3K关注 0票数 5

以下是我的代码概述。用户按下一个记录按钮,它点击服务器启动一个监视流,它返回一个rtsp url,我想在网站上播放。

我尝试过vlc插件,但它似乎是不可靠的,下面的代码会造成上述问题。

实现此功能的任何其他想法都是非常受欢迎的。

代码语言:javascript
复制
  xmlhttp.onreadystatechange  = function()
    {
     if (xmlhttp.readyState == 4) {
       if(xmlhttp.status == 200) {
         res_array = xmlhttp.responseText.split("#");
         session_id = res_array[0];
        alert(res_array.length);
         if (res_array.length == 4)
         {
             document.getElementById("jsession").innerHTML = xmlhttp.responseText;
             rstp_url = res_array[1];
             jsession_id = res_array[2];
             var vid_tag = '<OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"';
             vid_tag += ' codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab"' ;
             vid_tag += ' width="320" height="240" id="vlc" events="True"> <param name="Src" value=" ' + rstp_url +' " /> ';
             vid_tag += ' <param name="ShowDisplay" value="True" /> <param name="AutoLoop" value="False" /><param name="AutoPlay" value="True" />' ;
             vid_tag += '<EMBED pluginspage="http://www.videolan.org" type="application/x-vlc-plugin" progid="VideoLAN.VLCPlugin.2" width="320" height="240"' ;
             vid_tag +=' autoplay="yes" loop="no" target="'+rstp_url+'" name="vlc"> </EMBED></OBJECT>';
             document.getElementById("StopRecording").disabled = false;
             document.getElementById("StartRecording").disabled = true;
             document.getElementById("StopPlayback").visible = false;
             document.getElementById("Playback").disabled = true;
             alert(vid_tag);
             document.getElementById("video_handler").innerHTML = vid_tag;
             document.getElementById("jsession").innerHTML = xmlhttp.responseText;//Update the HTML Form element
         }
         else
            {
             alert("Make sure usename,password and deviceref is correct");
            }
       }
       else {
          alert("Error during AJAX call. Please try again");
       }
     }
};

以下是我遇到的问题。

  • 不在IE6.
  • 流播放是不可靠的.有时玩,有时不玩。解决这个问题的唯一正确方法似乎是在res_array长度之后添加一个警告框,如果选中
  • ,即使尝试播放音频源,也会出现一个播放视频的黑匣子。

如果我尝试使用HTML5,并且我知道jquery之类的框架,这会不会变得更容易,但我不可能在这个项目中使用它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-10 15:27:08

因为您没有提到OS:另一个只使用windows的选项是编写您自己的RTSP DirectShow源代码过滤器。然后,可以为RTSP协议注册这样的过滤器。在网页上,您可以通过以下方式插入:

代码语言:javascript
复制
<div id="mtvPlayer"> 
    <embed 
        type="application/x-mplayer2" 
        pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" 
        name="mediaplayer1" 
        ShowStatusBar="true" 
        EnableContextMenu="false" 
        autostart="true" 
        loop="false" 
        src="rtsp://<<RTSP URI>>" 
        width="352px"
        height="288px"
    /> 
</div> 

如果过滤器注册正确,则将自动加载RTSP源过滤器,并构造合适的媒体管道。这是我使用过的方法,它可以在IE8、chrome和firefox上工作。我还没有用IE6测试过它。仍然使用该浏览器的人:P

这种方法的缺点是,它是相当多的工作(和复杂的),或者至少您需要一些坚实的DirectShow经验来实现过滤器和迎合不同的媒体类型。

票数 2
EN

Stack Overflow用户

发布于 2011-06-10 14:39:55

如果我读得对,听起来好像总是在显示流,但并不总是自动播放,对吗?我想这是一个时间问题,对象试图在将对象完全写入页面之前自动播放。如果是这样的话,设置autoplay=false,然后在创建对象之后调用controlname.play,会解决这个问题吗?

票数 2
EN

Stack Overflow用户

发布于 2011-06-10 22:12:04

也许这会有帮助吗?http://quicktime.tc.columbia.edu/users/iml/movies/mtest.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6211330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档