Skip to content
This repository has been archived by the owner on Sep 30, 2021. It is now read-only.

Commit

Permalink
Make it fire error code 4 if the stream is not found with RTMP. fixes #…
Browse files Browse the repository at this point in the history
  • Loading branch information
anssip committed Apr 27, 2015
1 parent f0fb9ef commit 18dfb4f
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 57 deletions.
2 changes: 1 addition & 1 deletion lib/as/Flowplayer.as
Expand Up @@ -247,7 +247,7 @@ package {
delete conf.rtmp;
}
if (! conf.proxyType) {
conf.proxyType = "none";
conf.proxyType = "best";
}

decode("rtmpt");
Expand Down
120 changes: 64 additions & 56 deletions lib/as/NetStreamProvider.as
Expand Up @@ -26,8 +26,9 @@ package {
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.utils.Timer;
import flash.utils.setTimeout;

public class NetStreamProvider implements StreamProvider {
public class NetStreamProvider implements StreamProvider {
// flashvars
private var conf : Object;
// state
Expand Down Expand Up @@ -64,8 +65,7 @@ package {

conf.autoplay = true;
netStream.close();
player.debug("starting play of stream '" + url + "'");
netStream.play(stream);
netStreamPlay();
paused = ready = false;
video.visible = true;
}
Expand Down Expand Up @@ -107,18 +107,16 @@ package {
connector.connect(function(conn : NetConnection) : void {
ready = true;
setupStream(conn);
netStream.play(stream);
netStreamPlay();
}, onDisconnect);
} else {
player.debug("starting play of stream '" + stream + "'");
netStream.play(stream);
netStreamPlay();
}
} else {
if (!ready) return;

if (preloadNone() && !preloadComplete) {
player.debug("starting play of stream '" + stream + "'");
netStream.play(stream);
netStreamPlay();
} else {
if (finished) {
seek(0);
Expand Down Expand Up @@ -243,8 +241,7 @@ package {
// start streaming

if (conf.autoplay) {
player.debug("autoplay is on, starting play of stream '" + stream + "'");
netStream.play(stream);
netStreamPlay();
return;
}

Expand All @@ -255,13 +252,12 @@ package {

// we pause when metadata is received
} else {
player.debug("preload: starting play of stream '" + stream + "'");
netStream.play(stream);
netStreamPlay();
}
}

private function setupStream(conn : NetConnection) : void {
player.debug("Connection success", {ready:ready, preloadCompete:preloadComplete, paused:paused, autoplay:conf.autoplay});
player.debug("setupStream() ", {ready:ready, preloadCompete:preloadComplete, paused:paused, autoplay:conf.autoplay});

netStream = new NetStream(conn);
var bufferTime : Number = conf.hasOwnProperty("bufferTime") ? conf.bufferTime : 3;
Expand All @@ -271,61 +267,64 @@ package {
volume(volumeLevel || conf.initialVolume as Number, false);

// metadata
netStream.client = {onPlayStatus:function(info : Object) : void {
player.debug("onPlayStatus", info);
if (info.code == "NetStream.Play.Complete") {
if (!paused) {
finished = true;
paused = true;
player.fire(Flowplayer.PAUSE, null);
player.fire(Flowplayer.FINISH, null);
netStream.client = {
onPlayStatus:function(info : Object) : void {
player.debug("onPlayStatus", info);
if (info.code == "NetStream.Play.Complete") {
if (!paused) {
finished = true;
paused = true;
player.fire(Flowplayer.PAUSE, null);
player.fire(Flowplayer.FINISH, null);
}
}
}
}, onMetaData:function(info : Object) : void {
player.debug("onMetaData()", {ready:ready, preloadCompete:preloadComplete, paused:paused, autoplay:conf.autoplay});
},

// use a real object
var meta : Object = {seekpoints:[]};
for (var key : String in info) {
meta[key] = info[key];
}
if (conf.debug) player.fire("debug.metadata", meta);
onMetaData:function(info : Object) : void {
player.debug("onMetaData()", {ready:ready, preloadCompete:preloadComplete, paused:paused, autoplay:conf.autoplay});

clip = {seekable:!!conf.rtmp, bytes:netStream.bytesTotal, duration:meta.duration, height:meta.height, width:meta.width, seekpoints:meta.seekpoints, src:completeClipUrl, url:completeClipUrl};
// use a real object
var meta : Object = {seekpoints:[]};
for (var key : String in info) {
meta[key] = info[key];
}
if (conf.debug) player.fire("debug.metadata", meta);

if (!ready) {
ready = true;
clip = {seekable:!!conf.rtmp, bytes:netStream.bytesTotal, duration:meta.duration, height:meta.height, width:meta.width, seekpoints:meta.seekpoints, src:completeClipUrl, url:completeClipUrl};

if (conf.autoplay) {
player.fire(Flowplayer.READY, clip);
player.fire(Flowplayer.RESUME, null);
} else {
player.debug("stopping on first frame");
netStream.seek(0);
pauseStream();
// hide the video if splash or poster should stay visible and not be hidden behind the first frame
if (conf.splash || conf.poster) {
player.debug("splash or poster used, hiding video");
video.visible = false;
if (!ready) {
ready = true;

if (conf.autoplay) {
player.fire(Flowplayer.READY, clip);
player.fire(Flowplayer.RESUME, null);
} else {
player.debug("stopping on first frame");
netStream.seek(0);
pauseStream();
// hide the video if splash or poster should stay visible and not be hidden behind the first frame
if (conf.splash || conf.poster) {
player.debug("splash or poster used, hiding video");
video.visible = false;
}

// make autoplay true so that first-frame pause is not done with webkit-fullscreen-toggling
conf.autoplay = true;
player.fire(Flowplayer.READY, clip);
}
return;
}

// make autoplay true so that first-frame pause is not done with webkit-fullscreen-toggling
conf.autoplay = true;
if (preloadNone() && !preloadComplete) {
preloadComplete = true;
player.fire(Flowplayer.READY, clip);
player.fire(Flowplayer.RESUME, null);
}
return;
}

if (preloadNone() && !preloadComplete) {
preloadComplete = true;
player.fire(Flowplayer.READY, clip);
player.fire(Flowplayer.RESUME, null);
}
}};
}};

// listen for playback events
netStream.addEventListener(NetStatusEvent.NET_STATUS, function(e : NetStatusEvent) : void {
if (conf.debug) player.fire("debug.stream", e.info.code);
if (conf.debug) player.fire("NetStatusEvent: ", e.info.code);

switch (e.info.code) {
case "NetStream.Play.Start":
Expand Down Expand Up @@ -387,5 +386,14 @@ package {
if (!clip) return 0;
return clip.duration;
}

private function netStreamPlay():void {
player.debug("netStreamPlay() " + stream);
if (conf.live) {
netStream.play(stream, -1);
} else {
netStream.play(stream, 0, -1);
}
}
}
}

0 comments on commit 18dfb4f

Please sign in to comment.