2
我已經寫了一個OSMF播放器,通過從亞馬遜Cloudfront RTMP流。有一個已知的問題,mp3的持續時間不正確地從元數據中獲得,因此查找功能不起作用。 我知道有一種解決方法暗示了使用NetConnection的getStreamLength函數,該函數在以前的非OSMF播放器中成功實現,但現在我不知道如何以及何時調用OSMF Events和Traits。 此代碼是不工作:OSMF尋求與亞馬遜Cloudfront
protected function initApp():void
{
//the pointer to the media
var resource:URLResource = new URLResource(STREAMING_PATH);
// Create a mediafactory instance
mediaFactory = new DefaultMediaFactory();
//creates and sets the MediaElement (generic) with a resource and path
element = mediaFactory.createMediaElement(resource);
var loadTrait:NetStreamLoadTrait = element.getTrait(MediaTraitType.LOAD) as NetStreamLoadTrait;
loadTrait.addEventListener(LoaderEvent.LOAD_STATE_CHANGE, _onLoaded);
player = new MediaPlayer(element);
//Marker 5: Add MediaPlayer listeners for media size and current time change
player.addEventListener(DisplayObjectEvent.MEDIA_SIZE_CHANGE, _onSizeChange);
player.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, _onProgress);
initControlBar();
}
private function onGetStreamLength(result:Object):void {
Alert.show("The stream length is " + result + " seconds");
duration = Number(result);
}
private function _onLoaded(e:LoaderEvent):void
{
if (e.newState == LoadState.READY)
{
var loadTrait:NetStreamLoadTrait = player.media.getTrait(MediaTraitType.LOAD) as NetStreamLoadTrait;
if (loadTrait && loadTrait.netStream)
{
var responder:Responder = new Responder(onGetStreamLength);
loadTrait.connection.call("getStreamLength", responder, STREAMING_PATH);
}
}
}
+1一個口齒伶俐的問題。儘管如此,我還沒有最清楚的解決方案。 – JeffryHouser 2011-06-07 12:31:30