Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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/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
Actionscript 3 如何在“播放FLV视频”;“传入帧速度”;(非视频内部)来自ActionScript中的NetStream_Actionscript 3_Flash_Video_Red5_Netstream - Fatal编程技术网

Actionscript 3 如何在“播放FLV视频”;“传入帧速度”;(非视频内部)来自ActionScript中的NetStream

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编码 它通常能工作,但视频不是很流畅——有很多冻结、减速和长时间停顿传输

如何在NetStream帧到达时立即播放,而无需任何额外的as帧速率逻辑?

我已经从Red5接收到的
RTMP
协议中录制了一些音频和视频数据包,现在我正试图通过将数据包推送到
NetStream
并加上时间戳,以循环方式将其发送回flash客户端。循环序列的长度约为20秒,nad由约200个RTMP数据包(视频数据/音频数据)构成

环境:本地主机上的Flash客户端和服务器,无网络瓶颈,视频由同一Flash客户端进行早期H.264编码

它通常能工作,但视频不是很流畅——有很多冻结、减速和长时间停顿传输速度较慢的数据包会导致更多的暂停和冻结。,即使是非常长的暂停,例如传输整个序列2-3倍(~60秒)都不会产生效果-当每秒转发速度低于~2个RTPM数据包时,会出现这种情况

问题看起来像是逻辑在试图强制视频的帧速率,而不仅仅是输出接收到的帧,所以我的一个问题是AS在直播流中查找视频帧中的fps信息吗?为什么它可以播放得更快,但不能播放得更慢?如果不将视频fps与RTPM数据包时间戳同步,如何“按帧”播放视频

另一方面,如果我推包的速度比录像机快,视频速度就快了,但几乎流畅——我就是不能得到较慢或稳定的流(仍然是非常不规则的速度)

我分析了一些
NetStream
值:

  • .bufferLength
    =~0或0.001,在我转发数据包时递增 极快(如以每秒90帧的速度瞄准目标)
  • .currentFPS
    =显示真实FPS 在
    视频中看到的计数
    对象,而不是传入帧/s
  • .info.currentBytesPerSecond
    =~8 kB/s至~50kB/s,具体取决于 转发速度
  • .info.droppedFrames
    =经常出现,即使我 流数据包,如2/秒在长时间自启动暂停后也会跳转(但不包括缓冲区) 整段时间都是0!)
  • .info.isLive
    =true
  • .info.dataBufferLength
    =与
    .bufferLength
它看起来像是在丢弃帧,因为接收到的RTMP数据包太少,就像期望它们以内部帧编码的fps速度到达一样

我目前最好的
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用于音频建议,谢谢