Come usare il plug-in Microsoft Smooth Streaming per Adobe Open Source Media FrameworkHow to Use the Microsoft Smooth Streaming Plugin for the Adobe Open Source Media Framework

PanoramicaOverview

Il plug-in Microsoft Smooth Streaming per Open Source Media Framework 2.0 (SS per OSMF) estende le funzionalità predefinite di OSMF e aggiunge la funzionalità di riproduzione del contenuto Smooth Streaming ai lettori OSMF nuovi ed esistenti.The Microsoft Smooth Streaming plugin for Open Source Media Framework 2.0 (SS for OSMF) extends the default capabilities of OSMF and adds Microsoft Smooth Streaming content playback to new and existing OSMF players. Il plug-in aggiunge inoltre funzionalità di riproduzione Smooth Streaming a Strobe Media Playback (SMP).The plugin also adds Smooth Streaming playback capabilities to Strobe Media Playback (SMP).

In Smooth Streaming per OSMF sono incluse due versioni di plug-in:SS for OSMF includes two versions of plugin:

  • Plug-in Static Smooth Streaming per OSMF (con estensione swc)Static Smooth Streaming plugin for OSMF (.swc)
  • Plug-in Dynamic Smooth Streaming per OSMF (con estensione swf)Dynamic Smooth Streaming plugin for OSMF (.swf)

In questo documento si presuppone che il lettore disponga già di conoscenze tecniche generali relative a OSMF e ai plug-in per OSMF. Per altre informazioni su OSMF, consultare la documentazione sul sito Web ufficiale di OSMF.This document assumes that the reader has a general working knowledge of OSMF and OSMF plug-ins. For more information about OSMF, please see the documentation on the official OSMF site.

Plug-in Smooth Streaming per OSMF 2.0Smooth Streaming plugin for OSMF 2.0

Il plug-in supporta il caricamento e la riproduzione di contenuto Smooth Streaming su richiesta con le funzionalità seguenti:The plugin supports loading and playback of on-demand Smooth Streaming content with the following features:

  • Riproduzione Smooth Streaming su richiesta (riproduzione, pausa, ricerca, arresto)On-demand Smooth Streaming playback (Play, Pause, Seek, Stop)
  • Riproduzione Smooth Streaming in diretta (riproduzione)Live Smooth Streaming playback (Play)
  • Funzioni DVR in diretta (pausa, ricerca, riproduzione DVR, modalità attiva)Live DVR functions (Pause, Seek, DVR Playback, Go-to-Live)
  • Supporto per codec video: H.264Support for video codecs - H.264
  • Supporto per codec audio: AACSupport for Audio codecs - AAC
  • Commutazione tra più lingue per l'audio grazie alle API incorporate in OSMFMultiple audio language switching with OSMF built-in APIs
  • Selezione della qualità di riproduzione massima grazie alle API incorporate in OSMFMax playback quality selection with OSMF built-in APIs
  • Sottotitoli collaterali con il plug-in per didascalie OSMFSidecar closed captions with OSMF captions plugin
  • Adobe® Flash® Player 11.4 o versione successiva.Adobe® Flash® Player 11.4 or higher.
  • In questa versione è supportato solo OSMF 2.0.This version only supports OSMF 2.0.

Funzionalità supportate e problemi notiSupported features and known issues

Per un elenco completo di funzionalità supportate, funzionalità non supportate e problemi noti, fare riferimento a questo documento.For a full list of supported features, unsupported features and known issues, refer to this document.

Caricamento del plug-inLoading the Plugin

I plug-in OSMF possono essere caricati in modo statico (in fase di compilazione) o dinamico (in fase di esecuzione).OSMF plugins can be loaded statically (at compile time) or dynamically (at run-time). Nel download del plug-in Smooth Streaming per OSMF sono incluse entrambe le versioni statica e dinamica.The Smooth Streaming plugin for OSMF download includes both dynamic and static versions.

  • Caricamento statico: per eseguire il caricamento in modo statico, è necessario un file di libreria statica (SWC).Static loading: To load statically, a static library (SWC) file is required. I plug-in statici vengono aggiunti come riferimento ai progetti e vengono uniti all'interno del file di output finale in fase di compilazione.Static plugins are added as a reference to the projects and merge inside the final output file at the compile time.
  • Caricamento dinamico: per eseguire il caricamento dinamico, è necessario un file precompilato (SWF).Dynamic loading: To load dynamically, a precompiled (SWF) file is required. I plug-in dinamici vengono caricati in fase di esecuzione e non sono inclusi nell'output del progetto.Dynamic plugins are loaded in the runtime and not included in the project output. (Output compilato) I plug-in dinamici possono essere caricati tramite i protocolli HTTP e FILE.(Compiled output) Dynamic plugins can be loaded using HTTP and FILE protocols.

Per altre informazioni sul caricamento statico e dinamico, vedere la pagina ufficiale del plug-in OSMF.For more information on static and dynamic loading, see the official OSMF plugin page.

Caricamento statico di Smooth Streaming per OSMFSS for OSMF Static Loading

Nel frammento di codice seguente viene illustrato come caricare il plug-in Smooth Streaming per OSMF in modo statico e riprodurre un video di base usando la classe MediaFactory di OSMF.The code snippet below shows how to load the SS plugin for OSMF statically and play a basic video using OSMF MediaFactory class. Prima di includere il codice di Smooth Streaming per OSMF, verificare che nei riferimenti del progetto sia incluso il plug-in statico "MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swc".Before including the SS for OSMF code, please ensure that the project reference includes the "MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swc" static plugin.

package 
{

    import com.microsoft.azure.media.AdaptiveStreamingPluginInfo;

    import flash.display.*;
    import org.osmf.media.*;
    import org.osmf.containers.MediaContainer;
    import org.osmf.events.MediaErrorEvent;
    import org.osmf.events.MediaFactoryEvent;
    import org.osmf.events.MediaPlayerStateChangeEvent;
    import org.osmf.layout.*;



    [SWF(width="1024", height="768", backgroundColor='#405050', frameRate="25")]
    public class TestPlayer extends Sprite
    {        
        public var _container:MediaContainer;
        public var _mediaFactory:DefaultMediaFactory;
        private var _mediaPlayerSprite:MediaPlayerSprite;


        public function TestPlayer( )
        {
            stage.quality = StageQuality.HIGH;

            initMediaPlayer();

        }

        private function initMediaPlayer():void
        {

            // Create the container (sprite) for managing display and layout
            _mediaPlayerSprite = new MediaPlayerSprite();    
            _mediaPlayerSprite.addEventListener(MediaErrorEvent.MEDIA_ERROR, onPlayerFailed);
            _mediaPlayerSprite.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, onPlayerStateChange);
            _mediaPlayerSprite.scaleMode = ScaleMode.NONE;
            _mediaPlayerSprite.width = stage.stageWidth;
            _mediaPlayerSprite.height = stage.stageHeight;
            //Adds the container to the stage
            addChild(_mediaPlayerSprite);

            // Create a mediafactory instance
            _mediaFactory = new DefaultMediaFactory();

            // Add the listeners for PLUGIN_LOADING
            _mediaFactory.addEventListener(MediaFactoryEvent.PLUGIN_LOAD,onPluginLoaded);
            _mediaFactory.addEventListener(MediaFactoryEvent.PLUGIN_LOAD_ERROR, onPluginLoadFailed );

            // Load the plugin class 
            loadAdaptiveStreamingPlugin( );  

        }

        private function loadAdaptiveStreamingPlugin( ):void
        {
            var pluginResource:MediaResourceBase;

            pluginResource = new PluginInfoResource(new AdaptiveStreamingPluginInfo( )); 
            _mediaFactory.loadPlugin( pluginResource ); 
        }

        private function onPluginLoaded( event:MediaFactoryEvent ):void
        {
            // The plugin is loaded successfully.
            // Your web server needs to host a valid crossdomain.xml file to allow plugin to download Smooth Streaming files.
        loadMediaSource("http://devplatem.vo.msecnd.net/Sintel/Sintel_H264.ism/manifest")

        }

        private function onPluginLoadFailed( event:MediaFactoryEvent ):void
        {
            // The plugin is failed to load ...
        }


        private function onPlayerStateChange(event:MediaPlayerStateChangeEvent) : void
        {
            var state:String;

            state =  event.state;

            switch (state)
            {
                case MediaPlayerState.LOADING: 

                    // A new source is started to load.

                    break;

                case  MediaPlayerState.READY :   
                    // Add code to deal with Player Ready when it is hit the first load after a source is loaded. 

                    break;

                case MediaPlayerState.BUFFERING :

                    break;

                case  MediaPlayerState.PAUSED :
                    break;      
                // other states ...          
            }
        }

        private function onPlayerFailed(event:MediaErrorEvent) : void
        {
            // Media Player is failed .           
        }

        private function loadMediaSource(sourceURL : String):void 
        {
            // Take an URL of SmoothStreamingSource's manifest and add it to the page.

            var resource:URLResource= new URLResource( sourceURL );

            var element:MediaElement = _mediaFactory.createMediaElement( resource );
            _mediaPlayerSprite.scaleMode = ScaleMode.LETTERBOX;
            _mediaPlayerSprite.width = stage.stageWidth;
            _mediaPlayerSprite.height = stage.stageHeight;

            // Add the media element
            _mediaPlayerSprite.media = element;
        }     

    }
}

Caricamento dinamico di Smooth Streaming per OSMFSS for OSMF Dynamic Loading

Nel frammento di codice seguente viene illustrato come caricare il plug-in Smooth Streaming per OSMF in modo dinamico e riprodurre un video di base usando la classe MediaFactory di OSMF.The code snippet below shows how to load the SS plugin for OSMF dynamically and play a basic video using the OSMF MediaFactory class. Prima di includere il codice di Smooth Streaming per OSMF, copiare il plug-in dinamico "MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swf" nella cartella del progetto se si desidera eseguire il caricamento tramite il protocollo FILE o copiarlo in un server Web per il caricamento tramite HTTP.Before including the SS for OSMF code, copy the "MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swf" dynamic plugin to the project folder if you want to load using FILE protocol, or copy under a web server for HTTP load. Non è necessario includere il file "MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swc" nei riferimenti del progetto.There is no need to include "MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swc" in the project references.

pacchetto {package {

import flash.display.*;
import org.osmf.media.*;
import org.osmf.containers.MediaContainer;
import org.osmf.events.MediaErrorEvent;
import org.osmf.events.MediaFactoryEvent;
import org.osmf.events.MediaPlayerStateChangeEvent;
import org.osmf.layout.*;
import flash.events.Event;
import flash.system.Capabilities;


//Sets the size of the SWF

[SWF(width="1024", height="768", backgroundColor='#405050', frameRate="25")]
public class TestPlayer extends Sprite
{        
    public var _container:MediaContainer;
    public var _mediaFactory:DefaultMediaFactory;
    private var _mediaPlayerSprite:MediaPlayerSprite;


    public function TestPlayer( )
    {
        stage.quality = StageQuality.HIGH;
        initMediaPlayer();
    }

    private function initMediaPlayer():void
    {

        // Create the container (sprite) for managing display and layout
        _mediaPlayerSprite = new MediaPlayerSprite();    
        _mediaPlayerSprite.addEventListener(MediaErrorEvent.MEDIA_ERROR, onPlayerFailed);
        _mediaPlayerSprite.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, onPlayerStateChange);

        //Adds the container to the stage
        addChild(_mediaPlayerSprite);

        // Create a mediafactory instance
        _mediaFactory = new DefaultMediaFactory();

        // Add the listeners for PLUGIN_LOADING
        _mediaFactory.addEventListener(MediaFactoryEvent.PLUGIN_LOAD,onPluginLoaded);
        _mediaFactory.addEventListener(MediaFactoryEvent.PLUGIN_LOAD_ERROR, onPluginLoadFailed );

        // Load the plugin class 
        loadAdaptiveStreamingPlugin( );  

    }

    private function loadAdaptiveStreamingPlugin( ):void
    {
        var pluginResource:MediaResourceBase;
        var adaptiveStreamingPluginUrl:String;

        // Your dynamic plugin web server needs to host a valid crossdomain.xml file to allow loading plugins.

        adaptiveStreamingPluginUrl = "http://yourdomain/MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swf";
        pluginResource = new URLResource(adaptiveStreamingPluginUrl);
        _mediaFactory.loadPlugin( pluginResource ); 

    }

    private function onPluginLoaded( event:MediaFactoryEvent ):void
    {
        // The plugin is loaded successfully.

        // Your web server needs to host a valid crossdomain.xml file to allow plugin to download Smooth Streaming files.

loadMediaSource("http://devplatem.vo.msecnd.net/Sintel/Sintel_H264.ism/manifest")
    }

    private function onPluginLoadFailed( event:MediaFactoryEvent ):void
    {
        // The plugin is failed to load ...
    }


    private function onPlayerStateChange(event:MediaPlayerStateChangeEvent) : void
    {
        var state:String;

        state =  event.state;

        switch (state)
        {
            case MediaPlayerState.LOADING: 

                // A new source is started to load.

                break;

            case  MediaPlayerState.READY :   
                // Add code to deal with Player Ready when it is hit the first load after a source is loaded. 

                break;

            case MediaPlayerState.BUFFERING :

                break;

            case  MediaPlayerState.PAUSED :
                break;      
            // other states ...          
        }
    }

    private function onPlayerFailed(event:MediaErrorEvent) : void
    {
        // Media Player is failed .           
    }

    private function loadMediaSource(sourceURL : String):void 
    {
        // Take an URL of SmoothStreamingSource's manifest and add it to the page.

        var resource:URLResource= new URLResource( sourceURL );

        var element:MediaElement = _mediaFactory.createMediaElement( resource );
        _mediaPlayerSprite.scaleMode = ScaleMode.LETTERBOX;
        _mediaPlayerSprite.width = stage.stageWidth;
        _mediaPlayerSprite.height = stage.stageHeight;
        // Add the media element
        _mediaPlayerSprite.media = element;
    }     

}

}}

Strobe Media Playback con plug-in dinamico SS per OSMFStrobe Media Playback with the SS ODMF Dynamic Plugin

Il plug-in dinamico Smooth Streaming per OSMF è compatibile con Strobe Media Playback (SMP).The Smooth Streaming for OSMF dynamic plugin is compatible with Strobe Media Playback (SMP). È possibile utilizzare il plug-in SS per OSMF per aggiungere la riproduzione di contenuti Smooth Streaming a SMP.You can use the SS for OSMF plugin to add Smooth Streaming content playback to SMP. A questo scopo, copiare il plug-in "MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swf" in un server Web per il caricamento tramite HTTP attenendosi alla procedura seguente:To do this, copy "MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swf" under a web server for HTTP load using the following steps:

  1. Passare alla pagina di installazione di Strobe Media Playback.Browse the Strobe Media Playback setup page.
  2. Impostare l'elemento src su un'origine Smooth Streaming, ad esempio http://devplatem.vo.msecnd.net/Sintel/Sintel_H264.ism/manifest.Set the src to a Smooth Streaming source, (e.g. http://devplatem.vo.msecnd.net/Sintel/Sintel_H264.ism/manifest)
  3. Apportare le modifiche di configurazione desiderate e fare clic su Preview and Update.Make the desired configuration changes and click Preview and Update.

    Nota Per il server Web del contenuto deve essere presente un file crossdomain.xml valido.Note Your content web server needs a valid crossdomain.xml.

  4. Copiare e incollare il codice in una pagina HTML semplice utilizzando l'editor di testo desiderato, come illustrato nell'esempio seguente:Copy and paste the code to a simple HTML page using your favorite text editor, such as in the following example:

     <html>
     <body>
     <object width="920" height="640"> 
     <param name="movie" value="http://osmf.org/dev/2.0gm/StrobeMediaPlayback.swf"></param>
     <param name="flashvars" value="src=http://devplatem.vo.msecnd.net/Sintel/Sintel_H264.ism/manifest &autoPlay=true"></param>
     <param name="allowFullScreen" value="true"></param>
     <param name="allowscriptaccess" value="always"></param>
     <param name="wmode" value="direct"></param>
     <embed src="http://osmf.org/dev/2.0gm/StrobeMediaPlayback.swf" 
         type="application/x-shockwave-flash" 
         allowscriptaccess="always" 
         allowfullscreen="true" 
         wmode="direct" 
         width="920" 
         height="640" 
         flashvars=" src=http://devplatem.vo.msecnd.net/Sintel/Sintel_H264.ism/manifest&autoPlay=true">
     </embed>
     </object>
     </body>
     </html>
    
  5. Aggiungere il plug-in Smooth Streaming per OSMF al codice incorporato e salvare.Add Smooth Streaming OSMF plugin to the embed code and save.

     <html>
     <object width="920" height="640"> 
     <param name="movie" value="http://osmf.org/dev/2.0gm/StrobeMediaPlayback.swf"></param>
     <param name="flashvars" value="src=http://devplatem.vo.msecnd.net/Sintel/Sintel_H264.ism/manifest&autoPlay=true&plugin_AdaptiveStreamingPlugin=http://yourdomain/MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swf&AdaptiveStreamingPlugin_retryLive=true&AdaptiveStreamingPlugin_retryInterval=10"></param>
     <param name="allowFullScreen" value="true"></param>
     <param name="allowscriptaccess" value="always"></param>
     <param name="wmode" value="direct"></param>
     <embed src="http://osmf.org/dev/2.0gm/StrobeMediaPlayback.swf" 
         type="application/x-shockwave-flash" 
         allowscriptaccess="always" 
         allowfullscreen="true" 
         wmode="direct" 
         width="920" 
         height="640" 
         flashvars="src=http://devplatem.vo.msecnd.net/Sintel/Sintel_H264.ism/manifest&autoPlay=true&plugin_AdaptiveStreamingPlugin=http://yourdomain/MSAdaptiveStreamingPlugin-v1.0.3-osmf2.0.swf&AdaptiveStreamingPlugin_retryLive=true&AdaptiveStreamingPlugin_retryInterval=10">
     </embed>
     </object>
     </html>
    
  6. Salvare la pagina HTML e pubblicarla in un server Web.Save your HTML page and publish to a web server. Passare alla pagina Web pubblicata usando un browser Internet compatibile con Flash® Player, ad esempio Internet Explorer, Chrome, Firefox e così via.Browse to the published web page using your favorite Flash® Player enabled Internet browser (Internet Explorer, Chrome, Firefox, so on).
  7. Riprodurre il contenuto Smooth Streaming in Adobe® Flash® Player.Enjoy Smooth Streaming content inside Adobe® Flash® Player.

Per ulteriori informazioni sullo sviluppo generale per OSMF, consultare la pagina ufficiale per lo sviluppo di OSMF.For more information on general OSMF development, please see the official OSMF development page.

Percorsi di apprendimento di Servizi multimedialiMedia Services learning paths

Altre informazioni sui percorsi di apprendimento di Servizi multimediali di Azure:Read about the Azure Media Services learning paths:

Fornire commenti e suggerimentiProvide feedback

Usare il forum di suggerimenti degli utenti per fornire commenti e suggerimenti su come migliorare Servizi multimediali di Azure.Use the User Voice forum to provide feedback and make suggestions on how to improve Azure Media Services. È anche possibile passare direttamente a una delle categorie seguenti:You also can go directly to one of the following categories:

Vedere ancheSee Also

Plug-in di streaming adattivo Microsoft per aggiornamento OSMFMicrosoft Adaptive Streaming Plugin for OSMF Update