【问题标题】:Use one NetStream object to feed two Video objects simultaneously使用一个 NetStream 对象同时馈送两个 Video 对象
【发布时间】:2010-10-27 19:06:53
【问题描述】:

我正在尝试将单个 NetStream 对象附加到两个单独的 Video 对象,而不是从服务器中提取冗余流。预期的行为是两个视频都显示相同的内容。但是,我附加 NetStream 的最后一个视频似乎是唯一会显示内容的视频。

还有其他人遇到过这种情况吗?如果没有必要,我宁愿不去使用 BitmapData 克隆像素的不雅步骤。

谢谢

【问题讨论】:

    标签: flash video-streaming


    【解决方案1】:

    从 Flash 10.1 开始,Adobe 终于添加了一些新功能,用于直接连接到 NetStream 对象的字节。新方法称为 appendBytes,正如它所暗示的,它允许以编程方式将字节添加到 NetStream 对象。这主要用于 Adob​​e 对 HTTP 流的支持(最后)。在 bytearray.org 上有更多关于 here 的信息和演示。

    这意味着您可以做的是使用 HTTP 流式传输您的视频。您可以使用 HTTP 流式传输您的视频,然后将来自单个 HTTP 流的字节提供给您的两个不同的 NetStreams。因此,您从 HTTP 流中获取字节,然后在每个 NetStream 对象上调用 ns.appendBytes(inputbytes)。您将拥有 2 个 NetStream 对象,但它会节省您尝试为每个对象提取冗余流的带宽。

    如果您尝试推出自己的视频分配器,您可能会遇到skipping between your video segments。 Adobe 在其视频服务器中支持 HTTP 流拆分,但我一直无法找到一个很好的参考来说明如何自己滚动。

    【讨论】:

    • 呵呵,还没有看到 Adob​​e 实现了这一点,很高兴有流媒体替代品。最后,我将要求更改为允许单个视频 32x9 窗口。但这可能是人们前进的一种选择。
    【解决方案2】:

    嗯,将视频流解码两次是不是有点傻?在 enterFrame 处理程序中使用 BitmapData.draw() 来复制视频既简单又高效。

    【讨论】:

    • 这并不像你想象的那么简单,因为 swf 的帧率不一定与视频匹配。此外,Flash 中的 drm 控件可防止在没有正确 fms 策略文件的情况下将视频绘制到位图。当您使用 cdn 并且不控制 fms 时,这并不总是可能的。理想情况下,应该有一个解码器对象,您可以将网络流通过管道传输到多个视频中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多