J'ai écrit un petit lecteur OSMF qui diffuse via RTMP depuis Amazon Cloudfront. Il y a un problème connu, la durée du mp3 n'est pas correctement lue à partir des métadonnées et donc la fonction de recherche ne fonctionne pas. Je sais qu'il existe une solution de contournement impliquant l'utilisation de la fonction getStreamLength de NetConnection, implémentée avec succès dans un lecteur non-OSMF précédent, mais maintenant je ne sais pas comment et quand l'appeler, en termes d'événements et de traits OSMF. Ce code ne fonctionne pas:Recherche OSMF avec Amazon 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 pour une question articulée. Cependant, je n'ai pas la moindre idée de la solution. – JeffryHouser