check the server log output to see if you get any java exceptions, im
pretty sure one of them to do with metadata keyframes is causing
problems when publishing and disconnecting but thats after a while anyway :\
Saifur Rahman wrote:
> When I connects with the server and play a video, suddenly it disconnects
> and as I can trace the NetConnection.Connect.Closed fired I try to
> connect
> the server and try the seek the video on the time which it was
> disconnected.
> But I face a problem when I reconnect with the server, it connects
> successfully again and NetStream.seek method is called but the client
> disconnects immediately and reconnect itself again and plays the video
> from
> the beginning. Can anyone give me any solution, here is my code given
> below:
>
> import mx.utils.Delegate;
>
> // hook up adhock listener for Xray events if the user doesn't have
> the xray
> interface
> //import com.blitzagency.xray.Xray;
>
> var pauseStatus:Number;
> pauseStatus = 0;
> var videoStatus:Number;
> videoStatus = 0;
> //var total = 0;
> //var loadedTime = 0;
> var seekTo = 0;
>
> //var startPosition = this.seekButton._x;
> var fileName= "";
>
> if(this.timePassed.text=="")
> this.timePassed.text = "0";
>
> init();
>
> function init()
> {
> Xray.xrayTrace.addEventListener("onTrace", this);
> //mydgrid.setStyle("borderStyle", "none");
> mydgrid.setStyle("backgroundColor", 0xF3F0FB);
> mydgrid.setStyle("fontfamily", "Arial Rounded MT Bold");
> mydgrid.setStyle("fontSize", 12);
> mydgrid.setStyle("color", 0x333333);
> mydgrid.setStyle("embedfonts", true);
> mydgrid.setStyle("shadowColor", 0xBE9EDE);
> mydgrid.setStyle("borderCapColor", 0xBE9EDE);
> mydgrid.setStyle("shadowCapColor", 0xBE9EDE);
>
>
> }
>
> function onTrace(traceInfo):Void
> {
>
> info.maxScroll;
> }
>
> // FCS connectio and shared Object
> var nc:NetConnection;
> var ns:NetStream = null;
>
> // initial width and height
> var vidWidth = this.videoContainer._width;
> var vidHeight = this.videoContainer._height;
>
> var lowBufferTime = "2";
> var highBufferTime = "15";
>
> function connect():Boolean
> {
> this.nc = new NetConnection();
> this.nc.onStatus = Delegate.create(this, this.ncOnStatus);
>
> var connected:Boolean = this.nc.connect(this.rtmpURI.text);
> tt("connected?", connected);
>
> //light.gotoAndStop(2);
> return connected;
> }
>
> // disconnect from the fcs server
> function disconnect()
> {
> this.nc.close();
> stopWatchStream();
> //this.txtName.text = "Disconnected ";
> tt("disconnected");
> }
>
> // status for the netconnection
> function ncOnStatus(obj:Object):Void
> {
> //tt("NetConnection.onStatus", obj);
>
> if(obj.code == "NetConnection.Connect.Success")
> {
> this.txtName.text = "Connected";
> tt("catchVideos", catchVideos);
> catchVideos();
> //if(this.txtVideoName.text!=""){
> fileName = "Spiderman3_trailer_300_1";
> playMovie(fileName);
> //}
> }else if(obj.code == "NetConnection.Connect.Closed"){
> tt("Now Disconnected");
> this.txtName.text = "Disconnected ";
> //this.totalDuration.text =
> connect();
> catchVideos();
> //if(this.txtVideoName.text!=""){
> fileName = "Spiderman3_trailer_300_1";
> reloadMovie(fileName);
> //}
> }
> }
>
> // setup the netstream object
> function initNetStream()
> {
>
> this.ns = new NetStream(this.nc);
> this.ns.onStatus = Delegate.create(this, this.nsOnStatus);
> ns.setBufferTime(lowBufferTime);
> this.ns.onMetaData = Delegate.create(this, this.onMetaData);
> //pauseStatus = 0;
> //this.txtName.text = "";
>
>
> }
>
> function onMetaData(obj:Object):Void
> {
> tt("metaData", obj);
> this.totalDuration.text = Math.round(obj.duration);
> tt(this.totalDuration.text);
> //frameRate.text = obj.framerate;
> //widthHeight.text = obj.width + "x" + obj.height;
> }
>
> // status for the netstream object
> function nsOnStatus(obj:Object):Void
> {
> tt("NetStream.onStatus", obj);
>
> if(this.totalDuration.text!=""){
> this.totalVal.text = this.totalDuration.text;
>
> }
> //tt("Total Rec: "+this.totalVal.text);
>
>
> if(obj.code == "NetStream.Buffer.Full")
> {
> snow._visible = false;
> startWatchStream();
> //if(this.totalDuration.text!="")
>
>
> }else if(obj.code == "NetStream.Buffer.Empty")
> {
> stopWatchStream();
>
>
> }else if (obj.code == "NetStream.Unpause.Notify"){
> this.txtName.text = "Buffering...";
> }
> }
> //Code Added Bu Mishu on test
> function statusBar(){
> this.mcPosition._width = (Math.round(this.ns.time)*
> this.mcProgressBar._width )/ this.totalDuration.text;
> //tt((Math.round(this.ns.time)* mcProgressBar._width )/
> this.totalDuration.text);
> if(this.txtName.text == "Finished"){
> this.mcPosition._width = this.mcProgressBar._width;
> }
>
> //tt(this.seekButton._x);
> //tt(startPosition);
> //tt(this.mcProgressBar._width)
> /*
> if(this.seekButton._x >=
> (startPosition+this.mcProgressBar._width)){
> this.seekButton._x = this.seekButton._x -
> this.seekButton._width
> ;
> }
> else{
> this.seekButton._x = startPosition + this.mcPosition._width;
> }
> */
> }
>
>
>
> function startWatchStream()
> {
> ns.setBufferTime(highBufferTime);
> //var fName = mydgrid.selectedItem.name
> var fName = fileName;
> this.txtName.text = "Playing: " + fName;
>
> this.onEnterFrame = function()
> {
> //tt(this.totalDuration.text);
> //tt(this.ns.time);
>
> if(this.timePassed.text < Math.floor(this.ns.time)){
> this.timePassed.text = Math.floor(this.ns.time);
> }
> if(this.txtName.text == "Finished"){
> this.txtTime.text = Math.round(this.totalDuration.text/60) +
> ":" + Math.round(this.totalDuration.text%60) + " / " + Math.round(
> this.totalDuration.text/60) + ":" +
> Math.round(this.totalDuration.text%60);
> }
> else{
> this.txtTime.text = Math.round(this.ns.time/60)+ ":"
> +Math.round(this.ns.time%60) + " / " +
> Math.round(this.totalDuration.text/60)
> + ":" + Math.round(this.totalDuration.text%60);
> statusBar();
> }
>
>
> //bufferLength.text = this.ns.bufferLength;
> if(this.ns.time>= this.totalDuration.text){
> this.txtName.text = "Finished";
> //ns.seek(0);
> }
>
>
> }
> }
>
> function stopWatchStream()
> {
>
> ns.setBufferTime(lowBufferTime);
> this.txtName.text = "Buffering...";
>
> }
>
> // call back from the server
> function returnObjectStatus(obj):Void
> {
> tt("returnObjectStatus", obj);
>
> }
>
> // pauses/toggles pausing
> function pauseVideo():Void
> {
> //ns.pause();
> //this.txtName.text = "Paused";
>
> if(fileName==""){
> this.txtName.text = "No Video Selected";
> }else{
> //this.videoContainer.clear();
> ns.pause();
> if(pauseStatus==0){
> pauseStatus = 1;
> this.txtName.text = "Paused";
> }else if(videoStatus == 1){
> pauseStatus = 0;
> this.txtName.text = "Buffering...";
> }
> }
>
> disconnect();
> }
>
> function playVideo():Void
> {
> var fName = fileName;
> if(fileName==""){
> this.txtName.text = "No Video Selected";
> }else{
> playMovie(fName);
> pauseStatus = 0;
> }
> videoStatus = 1;
> }
>
> function muteVideo():Void
> {
>
> }
> // stops video, clears video object
> function stopVideo():Void
> {
>
> if(fileName==""){
> this.txtName.text = "No Video Selected";
> }else{
> this.videoContainer.clear();
> ns.close();
> videoStatus = 0;
> pauseStatus = 0;
> this.txtName.text = "Stopped";
> }
> this.txtTime.text = "";
> }
>
> var res = new Object();
> res.onResult = function(obj:Object)
> {
> tt(obj);
> mydgrid.removeAll();
> var k:Number;
> k=0;
> for(var items:String in obj)
> {
> if(typeof(obj[items]) == "object")
> {
> mydgrid.addItem(obj[items]);
> mydgrid.removeColumnAt(2);
> mydgrid.removeColumnAt(mydgrid.getColumnIndex("size"));
> mydgrid.editField(k, "name",
> mydgrid.getItemAt(k).name.substr(0,
> mydgrid.getItemAt(k).name.length-4));
> }
> k++;
> }
> }
>
> function catchVideos()
> {
> this.nc.call("demoService.getListOfAvailableFLVs", res);
> }
>
>
> // Create listener object.
> function cellPress(evt_obj:Object)
> {
> var item = mydgrid.selectedItem;
> tt(mydgrid.selectedItem.name);
> var fName = mydgrid.selectedItem.name;
> playMovie(fName);
> };
>
> // Add listener
> mydgrid.addEventListener("cellPress", this);
> //mydgrid.showHeaders = true;
> mydgrid.rollOverColor = "0xAFAEE3";
> mydgrid.selectionColor= "0x6869CA";// textRollOverColor
> mydgrid.textSelectedColor = "0xFFFFFF";
> mydgrid.vScrollPolicy = "auto";
> mydgrid.spaceColumnsEqually();
> mydgrid.showHeaders = false;
>
>
> function playMovie(what) {
>
> this.videoContainer._width = vidWidth;
> this.videoContainer._height = vidHeight;
> stopVideo();
> initNetStream();
> this.txtName.text = "Buffering...";
> this.videoContainer.attachVideo(this.ns);
> //this.videoContainer.seekBar = this.mySeekBar;
> //ns.play("ad/ad.flv", 0, -1, false);
> var actualName = what + ".flv";
> tt(actualName);
>
> this.ns.play(actualName, 0, -1, false);
> //this.ns.seek(50);
> //tt(this.totalDuration.text);
> //this.ns.time = 50*60;
> //this.ns.seek(1);
> }
>
> function reloadMovie(what) {
>
> this.videoContainer._width = vidWidth;
> this.videoContainer._height = vidHeight;
> //stopVideo();
> initNetStream();
> this.txtName.text = "Buffering...";
> this.videoContainer.attachVideo(this.ns);
> //this.videoContainer.seekBar = this.mySeekBar;
> //ns.play("ad/ad.flv", 0, -1, false);
> var actualName = what + ".flv";
>
> if(this.timePasses.text!="")
> var timeToSeek = this.timePassed.text;
> //timeToSeek = timeToSeek.substr(0, timeToSeek.indexOf(":")+1)*60 +
> timeToSeek.substr(timeToSeek.indexOf(":")+1);
>
> if(this.totalVal.text!="")
> this.totalDuration.text = Math.round(this.totalVal.text);
>
> this.ns.play(actualName, 0, -1, false);
>
> this.ns.seek(timeToSeek);
> tt("seek called ",timeToSeek);
> tt(timeToSeek);
> //this.totalDuration.text = this.ns.
> //this.ns.time = this.txtTime.text.substr(0, this.txtTime.text.indexOf
> ("/")+1);
> //tt(this.totalDuration.text);
> }
>
>
> this.onLoad = function() {
> connect();
> }
>
>
> Regrads,
> Saifur
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Red5 mailing list
> [email protected]
> http://osflash.org/mailman/listinfo/red5_osflash.org
>
_______________________________________________
Red5 mailing list
[email protected]
http://osflash.org/mailman/listinfo/red5_osflash.org