1

Adobe Airを使用してRTSP経由でビデオを再生しようとしていますが、次の権限があります。

<action>access_internet</action>
<action>set_audio_volume</action>
<action>access_shared</action>
<action>play_audio</action>

しかし、私が()をプレイすると、何もしません。

PlaybookでRTSPストリーミングを実行することは可能ですか?そうでない場合は、他の種類のビデオストリーミングが可能ですか?webworks?html5ビデオタグ?

ネイティブのYoutubeアプリは、ストリーミングビデオを事前にインストールします。

前もって感謝します

ここにサンプルコード

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

import qnx.events.MediaPlayerEvent;
import qnx.media.MediaPlayer;
import qnx.media.VideoDisplay;
import qnx.ui.events.MediaControlEvent;
import qnx.ui.media.*;
import qnx.dialog.AlertDialog;
import qnx.dialog.DialogSize;



/**
 * ...
 * @author Fernando Franco Giraldez
 */

// The following metadata specifies the size and properties of the canvas that
// this application should occupy on the BlackBerry PlayBook screen.
[SWF(width="1024", height="600", backgroundColor="#cccccc", frameRate="30")]

public class Main extends Sprite 
{

    private var _myPlayer:MediaPlayer;
    private var _myVD:VideoDisplay;
    private var _myMediaControl:MediaControl;
    private var alert:AlertDialog;

    public function Main()
    {
        try {
        initializeUI();
        initializePlayer();  
        }catch (ex:Error) {
            showAlertDialog("Initialize error", ex.name + " - " + ex.message + "\n"+ex.getStackTrace());
        }
    }

    private function initializePlayer():void
    {

        _myVD = new VideoDisplay;
        _myVD.setPosition(1024/2 - 800/2, 600/2 - 480/2);
        _myVD.setSize(800, 480);
        _myVD.backgroundColor = 0xFFFFFF;
        addChild(_myVD);

        _myPlayer = new MediaPlayer();
        _myPlayer.addEventListener(MediaPlayerEvent.INFO_CHANGE, infoChange);        

        var file:File = File.userDirectory.resolvePath("shared/videos/Wildlife.wmv");
                    //_myPlayer.url = file.nativePath;   //using this i can see the video  
        _myPlayer.url = "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"; 
        //_myPlayer.url = "rtsp://stream.the.sk/live/joj/joj-hm.3gp"
                    // but using any of internet urls i can`t see anything
        _myPlayer.videoDisplay = _myVD;
        _myPlayer.prepare();
        showAlertDialog("Preparando video", "acabo de meteer: " + _myPlayer.url);

    }

    private function initializeUI():void
    {

        _myMediaControl = new MediaControl();
        _myMediaControl.width = 900;
        _myMediaControl.x = Math.round((stage.stageWidth - _myMediaControl.width) / 2);
        _myMediaControl.y = stage.stageHeight - _myMediaControl.height;

        _myMediaControl.setOption( MediaControlOption.VOLUME, true );
        _myMediaControl.setOption( MediaControlOption.PLAY_PAUSE, true );
        _myMediaControl.setOption( MediaControlOption.NEXT, true );
        _myMediaControl.setOption( MediaControlOption.PREVIOUS, true );
        _myMediaControl.setOption( MediaControlOption.STOP, true );
        _myMediaControl.setOption( MediaControlOption.SEEKBAR, true );
        _myMediaControl.setOption( MediaControlOption.DURATION, true );
        _myMediaControl.setOption( MediaControlOption.POSITION, true );
        _myMediaControl.setOption( MediaControlOption.BACKGROUND, true);
        _myMediaControl.setProperty( MediaControlProperty.VOLUME, 80 );

        _myMediaControl.addEventListener( MediaControlEvent.STATE_CHANGE, mediaControlStateChange );
        _myMediaControl.addEventListener( MediaControlEvent.PROPERTY_CHANGE, mediaControlPropChange );

        addChild(_myMediaControl);            

    }

    private function infoChange(event:MediaPlayerEvent):void {

        if (event.what.position) {
            _myMediaControl.setProperty(MediaControlProperty.POSITION, _myPlayer.position);
        }
        if (event.what.duration) {
            _myMediaControl.setProperty(MediaControlProperty.DURATION, _myPlayer.duration);
        }
        if (event.what.state) {
            _myMediaControl.setState(_myPlayer.isPlaying ? MediaControlState.PLAY : MediaControlState.PAUSE);
        }        


    }

    private function mediaControlStateChange(mediaControlEvent:MediaControlEvent):void
    {
        var state:String = _myMediaControl.getState();

        switch( state )
        {
            case MediaControlState.PLAY:
                if (!_myPlayer.isPlaying) 
                {
                    try {                           
                        _myPlayer.play();
                        showAlertDialog("Play", "play detectado");
                    }catch (ex:Error) {
                        showAlertDialog("play() error", ex.name + " - " + ex.message + "\n"+ex.getStackTrace());
                    }
                } 
                else 
                {
                    _myPlayer.speed = 1000;
                }
                break;
            case MediaControlState.PAUSE:
                _myPlayer.pause();
                break;
            case MediaControlState.STOP:
                _myPlayer.stop();
                break;
            case MediaControlState.SEEK_START:
                _myPlayer.pause();
                break;
            case MediaControlState.SEEK_END:
                _myPlayer.play();
                break;
            default:
                break;
        }
    }

    private function mediaControlPropChange(event:MediaControlEvent):void {

        switch (event.property) {

            case MediaControlProperty.POSITION:
            {
                _myPlayer.seek(uint( _myMediaControl.getProperty(MediaControlProperty.POSITION)));
            }
                break;
            case MediaControlProperty.DURATION:
                break;
            case MediaControlProperty.FULLSCREEN:
                break;
            case MediaControlProperty.VOLUME:
                break;
            default:
                break;
        }
    }

    private function showAlertDialog(title:String,message:String):void
    {
        alert = new AlertDialog();
        alert.title = title;
        alert.message = message;
        alert.addButton("OK");
        alert.addButton("CANCEL");
        alert.dialogSize= DialogSize.SIZE_MEDIUM;
        alert.addEventListener(Event.SELECT, alertButtonClicked); 
        alert.show();
    }

    private function alertButtonClicked(event:Event):void
    {
        trace("Button Clicked Index: " + event.target.selectedIndex);
        trace("Button properties Object"+event.target.getItemAt(event.target.selectedIndex));
    }

}

}

4

1 に答える 1

0

RTSPは2011年6月(1年前)にはサポートされていなかったようです。NDKのアップデートに関するリリースノートから。ネイティブのYoutubeアプリはストリーミングにRSTPを使用していない可能性があります(ビデオをストリーミングする他の方法があります)。詳細については、このリンクを確認してください。

しかし、Webworks側では、はい。Html5ビデオタグは完全に実装されています。詳細については、 https ://bdsc.webapps.blackberry.com/html5/apis/HTMLVideoElement.htmlに組み込まれているビデオプレーヤーを使用します。これはBB10では機能しないことに注意してください。

更新:HTML5ビデオタグがBB10プラットフォームでもサポートされるようになりました。

于 2012-06-04T18:30:10.540 に答える