我正在使用VideoJS進行無線電直播。我試圖使用VideoJS沒有實際的video.js JavaScript文件 - 我只使用Flash部分 - video-js.swf文件。無法訪問VideoJS閃存對象
這裏是我的index.html(這是手工編寫代碼):
<object id="radio" type="application/x-shockwave-flash" data="/video-js.swf" width="0" height="0">
<param name="allowNetworking" value="all">
<param name="allowScriptAccess" value="always">
<param name="flashvars" value="autoplay=false&preload=false&loop=false&muted=false&rtmpConnection=rtmp://192.168.1.6/air/&rtmpStream=stream">
<param name="movie" value="/video-js.swf">
<param name="wmode" value="opaque">
</object>
這是我的RTMP服務器:
rtmp://192.168.1.6/air/stream
在這裏一切都很好 - 如果我寫
autoplay=true
我的網頁開始播放音樂...只在Chrome中!
如果我試圖訪問Flash對象的JavaScript(文檔加載後,當然):
setTimeout(function() {
document.getElementById('radio').vjs_pause();
}, 5000);
或
setTimeout(function() {
document.getElementById('radio').vjs_setProperty('volume', 0.25);
}, 5000);
或
any other ExternalInterface's methods from video-js.swf file
它也可以.. 。只在Chrome中。
在FF,在IE,在Opera,所有最新的,我總是得到這樣的錯誤:
document.getElementById('radio').vjs_play is not a function
document.getElementById('radio').vjs_pause is not a function
document.getElementById('radio').vjs_setProperty is not a function
那麼,什麼可能是錯的我簡單的代碼?我如何訪問Flash對象的方法,就像現在在Chrome中一樣?
的jsfiddle:
/*
obviously, here in jsFiddle there will be an error in code below, because video-js.swf cannot load anything from rtmp://192.168.1.6/air — but on my local computer all this code works like a charm in Chrome, not in FF/IE/Opera
*/
setTimeout(function() {
document.getElementById('radio').vjs_play();
}, 5000);
<object id="radio" type="application/x-shockwave-flash" data="/video-js.swf" width="0" height="0">
<param name="allowNetworking" value="all">
<param name="allowScriptAccess" value="always">
<param name="flashvars" value="autoplay=false&preload=auto&loop=false&muted=false&rtmpConnection=rtmp://192.168.1.6/air/&rtmpStream=stream">
<param name="movie" value="/video-js.swf">
<param name="wmode" value="opaque">
</object>
嗨,heff,我知道你從VideoJS網站! :)我只使用SWF,因爲我真的不需要67 KB的JavaScript功能我不使用 - 我只有1個大的按鈕播放/暫停,它應該與Flash完全一樣(因爲流支持)等等,所以我希望只使用SWF和它的ExternalInterface的方法,並且所有的工作在Chrome 100%都很好。 – artuska 2014-12-11 19:16:12
我還探討了所有vjs.Flash。* JavaScript源代碼的一部分 - 當你動態創建«object»標籤並將其插入到DOM中時,是否有一些特殊技巧?據我可以看到(在vjs.Flash.embed + vjs.Flash.getEmbedCode)你只需創建«object»...«/ object»字符串與所有«params»和屬性,然後插入它動態創建的div與innerHTML方法...這在所有瀏覽器中都可以使用! – artuska 2014-12-11 19:32:53
我所做的只是修改了你的demo.html文件,這樣它就可以播放流,然後在我的index.html文件中複製/粘貼生成的HTML«object»代碼......我真的不明白爲什麼它會出現在哪裏僅適用於Chrome,不適用於所有其他瀏覽器。 – artuska 2014-12-11 19:33:31