Actionscript 3 如何在“播放FLV视频”;“传入帧速度”;(非视频内部)来自ActionScript中的NetStream
如何在NetStream帧到达时立即播放,而无需任何额外的as帧速率逻辑? 我已经从Red5接收到的Actionscript 3 如何在“播放FLV视频”;“传入帧速度”;(非视频内部)来自ActionScript中的NetStream,actionscript-3,flash,video,red5,netstream,Actionscript 3,Flash,Video,Red5,Netstream,如何在NetStream帧到达时立即播放,而无需任何额外的as帧速率逻辑? 我已经从Red5接收到的RTMP协议中录制了一些音频和视频数据包,现在我正试图通过将数据包推送到NetStream并加上时间戳,以循环方式将其发送回flash客户端。循环序列的长度约为20秒,nad由约200个RTMP数据包(视频数据/音频数据)构成 环境:本地主机上的Flash客户端和服务器,无网络瓶颈,视频由同一Flash客户端进行早期H.264编码 它通常能工作,但视频不是很流畅——有很多冻结、减速和长时间停顿传输
RTMP
协议中录制了一些音频和视频数据包,现在我正试图通过将数据包推送到NetStream
并加上时间戳,以循环方式将其发送回flash客户端。循环序列的长度约为20秒,nad由约200个RTMP数据包(视频数据/音频数据)构成
环境:本地主机上的Flash客户端和服务器,无网络瓶颈,视频由同一Flash客户端进行早期H.264编码
它通常能工作,但视频不是很流畅——有很多冻结、减速和长时间停顿传输速度较慢的数据包会导致更多的暂停和冻结。,即使是非常长的暂停,例如传输整个序列2-3倍(~60秒)都不会产生效果-当每秒转发速度低于~2个RTPM数据包时,会出现这种情况
问题看起来像是逻辑在试图强制视频的帧速率,而不仅仅是输出接收到的帧,所以我的一个问题是AS在直播流中查找视频帧中的fps信息吗?为什么它可以播放得更快,但不能播放得更慢?如果不将视频fps与RTPM数据包时间戳同步,如何“按帧”播放视频
另一方面,如果我推包的速度比录像机快,视频速度就快了,但几乎流畅——我就是不能得到较慢或稳定的流(仍然是非常不规则的速度)
我分析了一些NetStream
值:
=~0或0.001,在我转发数据包时递增 极快(如以每秒90帧的速度瞄准目标).bufferLength
=显示真实FPS 在.currentFPS
对象,而不是传入帧/s视频中看到的计数
=~8 kB/s至~50kB/s,具体取决于 转发速度.info.currentBytesPerSecond
=经常出现,即使我 流数据包,如2/秒在长时间自启动暂停后也会跳转(但不包括缓冲区) 整段时间都是0!).info.droppedFrames
=true.info.isLive
=与.info.dataBufferLength
.bufferLength
NetStream
配置:
chatStream.videoReliable = false;
chatStream.audioReliable = false;
chatStream.backBufferTime = 0;
chatStream.bufferTime =0;
请注意,如果我将bufferTime
设置为1
,视频将暂停,直到采集“视频的1秒”,但这不是真的-缓冲非常慢,就像假设视频的FPS为100或200-即使我快速转发数据包(如无缓冲的目标为~15fps),缓冲区正在归档大约10-20秒
当然,循环从关键帧视频数据开始,序列的关键帧间隔约为15帧。您是否尝试过netStream。步骤(1) 我还将从play()调用中删除“live”
最后,也许flash会像在常规时间轴中一样尝试同步到音频。您尝试过没有音频频道的视频吗?您是否在数据生成模式下使用NetStream,即使用
NetStream.appendBytes()
为其提供数据包?否,我使用“NetStream.play”('some_stream','live');无法使用setp,因为实时流媒体,并且不知道传入帧的速度。但是+1用于音频建议,谢谢