使用Flash实现rtmp直播视频播放卡顿
我现在有一个使用flash实现rtmp实时播放的业务,我们一台设备有4个摄像头;首先我从服务器获取到一个rtmp的播放地址,然后使用as3的NetConnection和NetStream进行播放,下面是实例化NetStream的代码:
_videoStream = new NetStream(_videoConn);
_videoStream.addEventListener(NetStatusEvent.NET_STATUS, onVideoStreamNetStatusHandler, false, 0, true);
_videoStream.addEventListener(ProgressEvent.PROGRESS, onVideoStreamProgressHandler, false, 0, true);
_videoStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler,false,0,true);
_videoStream.client = this;
_videoStream.bufferTime = _bufferTime; // 设置缓存时间
_videoStream.bufferTimeMax = _bufferTimeMax; //设置缓存最大时间
_videoStream.useHardwareDecoder = true;
_videoStream.inBufferSeek = true;
下面是NetStream用到的其他属性:
_videoStream.time //[只读] 播放头的位置(播放的时间)。
_videoStream.bufferLength //[只读] 数据当前存在于缓冲区中的秒数
以下是我出现的问题:
1,如果将_videoStream.bufferTime设置为0。4个摄像头实时播放没问题,但是在网络较差的情况下,会出现快速跳播的情况(比如在1秒内播放完3秒的视频),使用体验不要,不建议采用
2,如果将_videoStream.bufferTime设置大于0的值(比如3),4个摄像头第一次播放正常,在将4个摄像头关闭后再次播放4个摄像头时出现问题:
a) 第一个摄像头播放时正常的,但是观察_videoStream.time(播放时间)不是从0开始计时的,具体是多少取决于上一次播放的时间,比如(10分钟)。正常情况_videoStream.time应该是从0开始计时。如果两次播放时间间隔比较久,就不会出现这种情况
b)其他3个摄像头播放1秒后画面卡顿不播放(使用VLC可以播放画面不卡顿),观察_videoStream.time(播放时间)是从0开始计时的,并且在画面不动的情况下继续计时;观察_videoStream.bufferLength(当前缓存区时间)是一个非常大的值(比如300秒),实际并没有缓存这么多的时间,大概缓存300秒后画面开始播放。正常情况画面应该不会卡顿,_videoStream.bufferLength应该缓存几秒钟。如果两次播放时间间隔比较久,就不会出现这种情况
希望各位大牛能够帮我解答a,b问题,小弟万分感谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论