2010-04-14 20 views
3

J'essaie de créer un SWF de lecteur vidéo simple en utilisant le framework multimédia open source de Flex 4. Je veux le faire évoluer dynamiquement en fonction des dimensions de la vidéo, entrée par l'utilisateur. Je suis les instructions sur the Adobe help site, mais la vidéo ne semble pas évoluer correctement. Selon la taille, parfois les vidéos jouent plus que l'espace alloué sur la page Web, et parfois plus petit. La seule façon de le faire fonctionner correctement est d'inclure une balise de métadonnées SWF codant en dur la largeur et la hauteur, mais je ne peux pas l'utiliser si je veux que le lecteur soit dimensionné dynamiquement. Mon code est:Comment puis-je mettre à l'échelle un lecteur OSMF dans ActionScript 3/Flex

package { 
import flash.display.Sprite; 
import flash.events.Event; 

import org.osmf.media.MediaElement; 
import org.osmf.media.MediaPlayer; 
import org.osmf.media.URLResource; 
import org.osmf.containers.MediaContainer; 
import org.osmf.elements.VideoElement; 
import org.osmf.layout.LayoutMetadata; 

public class GalleryVideoPlayer extends Sprite { 
    private var videoElement:VideoElement; 
    private var mediaPlayer:MediaPlayer; 
    private var mediaContainer:MediaContainer; 

    private var flashVars:Object; 

    public function GalleryVideoPlayer() { 
     if (stage) init(); 
     else addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

    private function init(e:Event = null):void { 
     removeEventListener(Event.ADDED_TO_STAGE, init); 

     flashVars = loaderInfo.parameters; 

     mediaPlayer = new MediaPlayer(); 

     videoElement = new VideoElement(new URLResource(flashVars.file)); 

     mediaContainer = new MediaContainer(); 

     var layoutMetadata:LayoutMetadata = new LayoutMetadata(); 
     layoutMetadata.width = Number(flashVars.width); 
     layoutMetadata.height = Number(flashVars.height); 

     videoElement.addMetadata(LayoutMetadata.LAYOUT_NAMESPACE, layoutMetadata); 

     mediaPlayer.media = videoElement; 
     mediaContainer.addMediaElement(videoElement); 

     addChild(mediaContainer); 
    } 
}} 

Répondre

-1

Je ne sais pas beaucoup sur flex mais j'ai utilisé un joueur OSMF appelé StrobeMediaPlayback et intégré sur une page html. Il y a un pont javascript que vous pouvez appeler en utilisant la fonction ExternalInterface.call() dans actionscript (dans le code du lecteur).

J'ai donc écrit une fonction javascript pour redimensionner le swf (peut être fait facilement en utilisant jquery) et l'ai appelée depuis le script ActionScript à chaque fois que la vidéo devait évoluer.

Voir si cela vous aide.