Welcome!

Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

Adobe AIR Development

Reply
Contributor
ffgiraldez
Posts: 10
Registered: ‎10-18-2011
My Device: Torch 9860

Video Streaming on playbook

[ Edited ]

HI!

 

I'm trying to play a video via RTSP, I have the permissions:

 

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

 

but when I play (), it does nothing.

It's possible to do RTSP Streaming on Playbook? If not, it's possible any other kind of videostreaming?

The native Youtube App preinstaled do streaming video.

 

Thanks in advance

 

Developer
zezke
Posts: 1,004
Registered: ‎12-12-2010
My Device: Z10 (red Limited Edition)

Re: Video Streaming on playbook

Can you post some code? Do you have any debug output?

-------------------------------------------
BlackBerry Certified Builder for Native Application Development -- Proud member of the Belgian BlackBerry Developer group
Samples: Park in Ghent
Feeling generous? Nominate me for BB Elite member!
Contributor
ffgiraldez
Posts: 10
Registered: ‎10-18-2011
My Device: Torch 9860

Re: Video Streaming on playbook

here the code 

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("Error en inicializar", 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("Error en play", 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));
		}
		
	}
	
}