Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash NetStream接收数据但不总是显示数据_Flash_Video_Rtmp - Fatal编程技术网

Flash NetStream接收数据但不总是显示数据

Flash NetStream接收数据但不总是显示数据,flash,video,rtmp,Flash,Video,Rtmp,我有一个flash应用程序,它连接到EvoStream服务器,通过RTMP接收视频。我从SNC摄像机模拟器和物理摄像机中获取视频。当我第一次启动时,物理摄影机显示视频,但模拟摄影机不显示。让播放器继续运行,我关闭了SNC程序,出现了一帧视频。当我重新启动SNC程序时,视频现在可以在客户端正常播放 当我打印NetStream.info.currentBytesPerSecond时,无论视频是否播放,我都会得到类似的值 下面是负责显示视频的客户端代码;它与Adobe提供的示例代码基本相同 packa

我有一个flash应用程序,它连接到EvoStream服务器,通过RTMP接收视频。我从SNC摄像机模拟器和物理摄像机中获取视频。当我第一次启动时,物理摄影机显示视频,但模拟摄影机不显示。让播放器继续运行,我关闭了SNC程序,出现了一帧视频。当我重新启动SNC程序时,视频现在可以在客户端正常播放

当我打印NetStream.info.currentBytesPerSecond时,无论视频是否播放,我都会得到类似的值

下面是负责显示视频的客户端代码;它与Adobe提供的示例代码基本相同

package {
import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.events.SecurityErrorEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.Event;

public class testRTMP extends Sprite {
    private var connection:NetConnection;
    private var stream:NetStream;
    private var video:Video = new Video();   
    private var sID: String;

    public function testRTMP(serverURL: String, streamId : String) {
        sID = streamId;
        connection = new NetConnection();
        connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
        connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        connection.connect(serverURL);
    }

    private function netStatusHandler(event:NetStatusEvent):void {
        switch (event.info.code) {
            case "NetConnection.Connect.Success":
                connectStream();
                break;
            case "NetStream.Play.StreamNotFound":
                trace("Stream not found: " + sID);
                break;
        }
    }

    private function securityErrorHandler(event:SecurityErrorEvent):void {
        trace("securityErrorHandler: " + event);
    }

    private function connectStream():void {
        addChild(video);
        var stream:NetStream = new NetStream(connection);
        stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
        stream.client = new CustomClient();
        video.attachNetStream(stream);
        stream.play(sID);
    }
}
}

class CustomClient {
public function onMetaData(info:Object):void {
    trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate);
}
public function onCuePoint(info:Object):void {
    trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type);
}
}
尝试添加:

connection.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
connection.client = { onBWDone: function():void{} };
然后确保
onFCSubscribe
onBWDone
存在,因为Flash Player可能需要调用它们

public function asyncErrorHandler(event:AsyncErrorEvent):void 
{ trace("asyncErrorHandler.." + "\r"); }

public function onFCSubscribe (info:Object) : void
{ trace("onFCSubscribe - succesful"); }

public function onBWDone (...rest) : void
{ 
    var p_bw:Number; 
    if (rest.length > 0)
      { p_bw = rest[0]; }
    trace("bandwidth = " + p_bw + " Kbps."); 
}
同时尝试删除行
var-stream:NetStream=etc..

private function connectStream() : void 
{
    addChild(video);
    //var stream:NetStream = new NetStream(connection); //# Is already a (private) var...
    stream = new NetStream(connection);
    stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
    stream.client = new CustomClient();
    video.attachNetStream(stream);
    stream.play(sID);
}
尝试添加:

connection.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
connection.client = { onBWDone: function():void{} };
然后确保
onFCSubscribe
onBWDone
存在,因为Flash Player可能需要调用它们

public function asyncErrorHandler(event:AsyncErrorEvent):void 
{ trace("asyncErrorHandler.." + "\r"); }

public function onFCSubscribe (info:Object) : void
{ trace("onFCSubscribe - succesful"); }

public function onBWDone (...rest) : void
{ 
    var p_bw:Number; 
    if (rest.length > 0)
      { p_bw = rest[0]; }
    trace("bandwidth = " + p_bw + " Kbps."); 
}
同时尝试删除行
var-stream:NetStream=etc..

private function connectStream() : void 
{
    addChild(video);
    //var stream:NetStream = new NetStream(connection); //# Is already a (private) var...
    stream = new NetStream(connection);
    stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
    stream.client = new CustomClient();
    video.attachNetStream(stream);
    stream.play(sID);
}