- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在没有任何额外的 AS 帧率逻辑的情况下立即播放 NetStream 帧?
我已经记录了Red5接收到的一些来自RTMP
协议(protocol)的音频和视频数据包,现在我试图通过将数据包推送到来循环发送回flash客户端带有递增时间戳的 NetStream
。循环序列的长度约为 20 秒,由大约 200 个 RTMP 数据包(视频数据/音频数据)构建
环境:本地主机上的 Flash 客户端和服务器,没有网络瓶颈,视频由同一 Flash 客户端更早地编码为 H.264。
它通常有效,但视频不是很流畅 - 有很多卡住、减速和长时间停顿。 较慢的数据包传输导致更多的暂停和卡住。,即使是极长的暂停,如传输整个序列 2x-3x 次(~60 秒)也没有效果 - 当转发速度低于 ~2 RTPM 数据包时会出现这种情况每秒。
这个问题看起来像是一些 AS 逻辑试图强制视频的帧速率,而不仅仅是输出接收到的帧,所以我的问题之一是AS 是否会寻找视频内-直播中的frame fps info?为什么可以播放的更快,但不能播放的更慢?如何“按帧”播放视频而不将视频 fps 与 RTPM 数据包时间戳同步?
另一方面,如果我推送数据包的速度比录像机快,视频只是更快但几乎流畅 - 我只是无法获得更慢或稳定的流(速度仍然非常不规则)。
我已经分析了一些 NetStream
值:
.bufferLength
= ~0 or 0.001, incrasing 当我转发数据包速度极快(比如以 ~90fps 为目标).currentFPS
= 显示真实的 FPS在 Video
对象中看到的计数,而不是传入的帧/秒.info.currentBytesPerSecond
= ~8 kB/s 到 ~50kB/s 取决于转发速度.info.droppedFrames
= 经常增加,即使我像 2/sec 这样的流数据包! 在长时间的自启动暂停后也会跳转(但缓冲整个时间为 0!).info.isLive
= true .info.dataBufferLength
= 与 .bufferLength 相同
看起来 AS 正在丢帧,因为收到的 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.step(1)吗
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#step()
另外,我会从 play() 调用中删除“live”。
最后,也许 flash 会像在常规时间轴中那样尝试与音频同步。你试过没有音频 channel 的视频吗?
关于actionscript-3 - 如何在 ActionScript 中播放来自 NetStream 的 "incoming frames speed"(非视频内部)的 FLV 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19812309/
这是我的测试用例。 http://tobeythorn.com/isi/dummy2.svg http://tobeythorn.com/isi/isitest.html 如果我自己打开 svg,内部
这是我的测试用例。 http://tobeythorn.com/isi/dummy2.svg http://tobeythorn.com/isi/isitest.html 如果我自己打开 svg,内部
我正在尝试做类似的事情: SELECT SUM( CASE WHEN ( AND EXISTS(SELECT 1
我想问如何在外部 ng-repeat 内部正确使用内部 ng-repeat: 这意味着你想使用这样的东西: {{milestone.id}} {{
我希望在 wordpress 的仪表板内编辑 css 样式并且如果可能的话不必编辑 php 文件。 我知道至少可以编辑一些属性,所以我希望我可以直接在仪表板中编辑所有属性。 更具体地说如何更改自定义类
我在安装在 windows10 上的 vmware 中的 Ubuntu 上安装了伪分布式独立 hadoop 版本。 我从网上下载了一个文件,复制到ubuntu本地目录/lab/data 我在 ubun
我有一个如下所示的 WHERE 语句: WHERE ((@Value1 IS NULL AND [value1_id] IS NULL) OR [value1_id] = ISNULL(@Va
我有一个如下所示的 WHERE 语句: WHERE ((@Value1 IS NULL AND [value1_id] IS NULL) OR [value1_id] = ISNULL(@Va
在我的一些测试帮助程序代码中,我有一个名为 FakeDbSet(Of T) 的 IDbSet(Of T) 实现,它模拟了许多 EF 行为,但没有实际的数据库。我将类声明为 Friend ,因为我想强制
我正在寻找 Cassandra/CQL 的常见 SQL 习语 INSERT INTO ... SELECT ... FROM ... 的表亲。并且一直无法找到任何以编程方式或在 CQL 中执行此类操作
如何防止内部 while 循环无限运行?问题是,如果没有外部 while 循环,内部循环将毫无问题地运行。我知道它必须对外循环执行某些操作,但我无法弄清楚是什么导致了问题。 import java.u
我正在努力学习更多有关 C++ 的知识,但在国际象棋程序中遇到了一些代码,需要帮助才能理解。我有一个 union ,例如: union b_union { Bitboard b; st
这是我项目网页中的代码片段。这里我想显示用户选择的类别,然后想显示属于该类别的主题。在那里,用户可以拥有多个类别,这没有问题。我可以在第一个 while 循环中打印所有这些类别。问题是当我尝试打印主题
我想知道如何在 swing 中显示内部框架。这意味着,当需要 JFrame 时,通常我所做的是, new MyJFrame().setVisible(true); 假设之前的表单也应该显示。当显示这个
我最近发现了一些有趣的行为,这让我想知道对象如何知道存在哪些全局变量。例如,假设我有一个文件“test.py”: globalVar = 1 toDelete = 2 class Test(objec
我知道它已经在这里得到回答: google maps drag and drop objects into google maps from outside the Map ,但这并不完全是我所需要的
我目前正在学习Javascript DOM和innerHTML,发现在理解innerHTML方面存在一些问题。 这是我的代码:http://jsfiddle.net/hphchan/bfjx1w70/
我构建了一个布局如下的库: lib/ private_class_impl.cc private_class_decl.h public_class_impl.cc include/
我有一个使用 bootstrap 3 的组合 wordpress 网站。它基本上是一个图像网格。当屏幕展开时,它会从三列变为四列。移动时它是一列。 我想出了如何调整图像的顶部和底部边距,但我希望图像的
我正在试用 MSP-EXP430G2 的教程程序,使用 Code Composer Studio 使 LED 闪烁。最初,它有一个闪烁的无限循环: for(;;) // This emp
我是一名优秀的程序员,十分优秀!