1. 程式人生 > >VLC web 外掛javascript常用介面及屬性

VLC web 外掛javascript常用介面及屬性

嵌入標籤屬性

將外掛嵌入到網頁中使用<embed>模板:

<embedtype="application/x-vlc-plugin"pluginspage="http://www.videolan.org" />

<objectclassid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab"></object>

標籤中所需要嵌入的屬性有:

Width:指定外掛的寬度;

Height:指定外掛的高度;

Target、mrl、filename、src:載入的視訊源。

標籤屬性中可選的屬性:

Autoplay,autostart:控制視訊初試播放的狀態,預設值為真(True);

Allowfullscreen:該屬性是從VLC版本的1.2.0開始存在的,指定使用者是否可以切換到全屏模式,預設值為真(True);

Mute:靜音控制,指定音訊音量是否最初靜音,預設值為假(false);

Loop,autoloop:用來控制視訊是否迴圈播放,預設值為假(false);

Toolbar:用來控制是否顯示工具條,預設值為真(True);

Bgcolor:用來控制背景顏色,預設值為白色(#000000)。

DOM元素:

Id:DOM的ID;

Name:DOM的名稱。

Javascript API 的描述:

VLC外掛的幾個物件可以用於設定和獲取資訊的訪問。當使用非法的API介面時,將會丟擲一個有說明的異常。例如,異常會詢問播放列表的vlc.input.length。

VLC object:

VLC外掛具有下列物件:

Audio:訪問音訊屬性;

Input:訪問輸入屬性;

Playlist:訪問播放列表屬性;

Subtitle:訪問字幕屬性;

Video:訪問視訊屬性;

Video.marquee:訪問字幕視訊濾波特性;

Video.logo:訪問視訊濾波器效能的標誌;

MediaDescription:訪問媒體資訊屬性(只有在2.0.2以上版本才有)。

舉例:

下面的JavaScript程式碼顯示瞭如何獲得一個參考的VLC外掛。然後這可以參考使用VLC外掛物件。

<html>

<title>VLC Mozilla plugin testpage</title>

<body>

<embedtype="application/x-vlc-plugin" pluginspage="http://www.videolan.org"

 width="640"

 height="480"

 id="vlc">

</embed>

<scriptlanguage="Javascript">

<!--

var vlc = document.getElementById("vlc");

vlc.audio.toggleMute();

//!-->

</script>

</body>

</html>

方法:

vlc.versioninfo():返回版本新

vlc.addeventlistener(eventname,callback,bubble):僅用於Mozilla,對eventname新增一個監聽事件。

vlc.removeeventlistener(eventname,callback,bubble):僅用於Mozilla,移除對eventname的監聽。

vlc.attachevent(eventname,callback):(僅用於ActiveX)對eventname新增監聽事件。

vlc.removeevent(eventname,callback):(僅用於ActiveX)移除對eventname的監聽。

事件:

MediaPlayerNothingSpecial

MediaPlayerOpening

MediaPlayerBuffering

MediaPlayerPlaying

MediaPlayerPaused

MediaPlayerForward

MediaPlayerBackward

MediaPlayerEncounteredError

MediaPlayerEndReached

MediaPlayerTimeChanged

MediaPlayerPositionChanged

MediaPlayerSeekableChanged

MediaPlayerPausableChanged

舉例:

下面的程式碼片斷提供簡單的註冊和登出事件回撥函式在所有支援的平臺(目前只有Linux基於Mozilla的瀏覽器和Windows ActiveX物件的Internet Explorer)。

<SCRIPTlanguage="javascript">

<!--

function registerVLCEvent(event, handler)

{

var vlc = getVLC("vlc");

if (vlc) {

   if (vlc.attachEvent) {

       // Microsoft

       vlc.attachEvent (event, handler);

    }else if (vlc.addEventListener) {

       // Mozilla: DOM level 2

       vlc.addEventListener (event, handler, false);

    }else {

       // DOM level 0

       vlc["on" + event] = handler;

    }

}

}

// stop listening to event

function unregisterVLCEvent(event, handler)

{

var vlc = getVLC("vlc");

if (vlc) {

   if (vlc.detachEvent) {

       // Microsoft

       vlc.detachEvent (event, handler);

    }else if (vlc.removeEventListener) {

       // Mozilla: DOM level 2

       vlc.removeEventListener (event, handler, false);

    }else {

       // DOM level 0

       vlc["on" + event] = null;

    }

}

}

// event callback function for testing

function handleEvents(event)

{

if (!event)

   event = window.event; // IE

if (event.target) {

   // Netscape based browser

   targ = event.target;

} else if (event.srcElement) {

   // ActiveX

    targ = event.srcElement;

} else {

   // No event object, just the value

   alert("Event value" + event );

   return;

}

if (targ.nodeType == 3) // defeat Safaribug

   targ = targ.parentNode;

alert("Event " + event.type +" has fired from " + targ );

}

// handle mouse grab event from videofilter

function handleMouseGrab(event,X,Y)

{

if (!event)

   event = window.event; // IE

alert("new position (" + X +"," + Y + ")");

}

// Register a bunch of callbacks.

registerVLCEvent('MediaPlayerNothingSpecial',handleEvents);

registerVLCEvent('MediaPlayerOpening',handleEvents);

registerVLCEvent('MediaPlayerBuffering',handleEvents);

registerVLCEvent('MediaPlayerPlaying',handleEvents);

registerVLCEvent('MediaPlayerPaused',handleEvents);

registerVLCEvent('MediaPlayerForward',handleEvents);

registerVLCEvent('MediaPlayerBackward',handleEvents);

registerVLCEvent('MediaPlayerEncounteredError',handleEvents);

registerVLCEvent('MediaPlayerEndReached',handleEvents);

registerVLCEvent('MediaPlayerTimeChanged',handleEvents);

registerVLCEvent('MediaPlayerPositionChanged',handleEvents);

registerVLCEvent('MediaPlayerSeekableChanged',handleEvents);

registerVLCEvent('MediaPlayerPausableChanged',handleEvents);

</script>

-->

音訊物件:

vlc.audio.count:調節音訊。

vlc.audio.mute: 靜音和取消靜音音訊的布林值.

vlc.audio.volume:調節音量。

vlc.audio.track:在(1-65535)中選擇音訊,當設為0值時無效。

vlc.audio.channel:取值在1-5之間,選擇頻道模式: "1=stereo", "2=reverse stereo","3=left", "4=right", "5=dolby"。

vlc.audio.toggleMute():控制靜音的方法,根據前一個狀態來對靜音和不是靜態的狀態進行切換。

vlc.audio.description(int i):根據引數i的值進行控制頻道是否有效。0相當於無效,1表示第一個頻道。

舉例:

Audio Channel:

<SELECT readonlyonChange='doAudioChannel(this.value)'>

<OPTION value=1>Stereo</OPTION>

<OPTION value=2>Reversestereo</OPTION>

<OPTION value=3>Left</OPTION>

<OPTION value=4>Right</OPTION>

<OPTION value=5>Dolby</OPTION>

</SELECT>

<SCRIPTlanguage="javascript">

<!--

function doAudioChannel(value)

{

var vlc = getVLC("vlc");

vlc.audio.channel = parseInt(value);

alert(vlc.audio.channel);

};

-->

輸入物件:

vlc.input.length:輸入的檔案的長度以毫秒為單位。0表示正在播放vlc不能獲取長度。如果是-1表示沒有輸入播放。

vlc.input.fps:每秒幀用一個浮點值返回。(例如:60.0,50.0,23.976等)。

vlc.input.hasVout:布林型別,當視訊播放時返回True,否則false,屬於讀寫屬性。

vlc.input.position:用於多媒體流中,在(0.0-1.0)中選值。

vlc.input.time:尋找視訊流。

舉例:

<!-- absolute seek instream !-->

vlc.input.time = <absolute seek>

<!-- relative seek instream !-->

vlc.input.time = vlc.input.time +<relative seek>

vlc.input.state:(IDLE=0, OPENING=1, BUFFERING=2,PLAYING=3, PAUSED=4, STOPPING=5, ENDED=6, ERROR=7).

vlc.input.rate:輸入速率。

播放列表的物件:

vlc.playlist.itemCount:

vlc.playlist.isPlaying:

vlc.playlist.items:

方法:

vlc.playlist.add(mrl):

vlc.playlist.add(mrl,name,options):

vlc.playlist.play():

vlc.playlist.playItem(number):

vlc.playlist.togglePause():

vlc.playlist.stop():

vlc.playlist.next():

vlc.playlist.prev():

vlc.playlist.clear():

vlc.playlist.removeItem(number):

vlc.playlist.items.count: