gpt4 book ai didi

actionscript-3 - 如何在 NetStream 中打开和关闭 H264?

转载 作者:行者123 更新时间:2023-12-01 05:27:39 26 4
gpt4 key购买 nike

取以下代码:

m_h264Settings = new H264VideoStreamSettings();
<some configuration in between>
m_ns.videoStreamSettings = m_h264Settings;

切换 m_ns 的 videoStreamSettings 是否仍在使用 H264 的好方法是什么?

我尝试在 NetStreams ( http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html ) 的主要文档中查找属性 videoStreamSettings,而 Adob​​e 显然跳过了那个小细节。我知道如何在应用程序的整个执行过程中有效地控制 NetStream 是使用 H264 还是“默认”,但我希望能够不断单击按钮使其来回切换,而无需更换 NetStream 或执行任何操作否则像那样疯狂。

这是如何正确完成的?谢谢!

最佳答案

阅读您的问题,似乎您提出的几个问题加上更多的澄清会有所帮助,因此我将做出一些假设来尝试回答:

问题一:

What's a decent way to toggle whether m_ns's videoStreamSettings are still using H264 or not?



来自 默认 您的意思是使用 On2 VP6 视频编解码器并因此发布为 FLV 格式而不是 F4V?

我认为您的查询与正在播放已发布流的连接应用程序有关?显然,您可以使用变量来跟踪您在录制应用程序本身中应用于流的设置。

我将假设您有一个单独的应用程序正在摄取已发布的流,并且您只是尝试确定是否使用 H264 而不是 On2 VP6 发布流。首先文件类型会有所不同,一种是 FLV,一种是 F4V。其次,您可以在发布时利用将元数据分配给流:
protected function sendMetadata():void {
var metaData:Object = new Object();
metaData.codec = stream.videoStreamSettings.codec;
metaData.profile = m_h264Settings.profile;
metaData.level = m_h264Settings.level;
metaData.hasMetadata = true;
stream.send("@setDataFrame", "onMetaData", metaData);
}

在您的播放应用程序中,您可以使用 onMetaData() 回调来获取您需要的信息:
public function onMetaData(infoObject:Object):void {}

问题2:

I want to be able to keep clicking a button to make it switch back and forth, without replacing the NetStream or doing anything else crazy like that.



我建议使用重新连接例程来切换设置以取消发布现有流并重新连接相机并发布具有不同视频设置的新流。这将保持流的完整性,老实说,取消发布和重新发布流并不像您所说的那么疯狂。

如果您必须沿着切换设置的路线走下去,那么我上面的假设是关于您声明为 的内容。默认 将阻止更改已发布流上的文件格式。

我个人不会使用相同的编解码器并应用不同的
H264VideoStreamSettings流的中间发布。 H264VideoStreamSettings 仅在将摄像机添加到流时进行验证,并在压缩开始后应用。我的理解是压缩开始于流的发布,因此在您建议您将在已经发布的流上进行压缩时进行切换。由此产生的流将导致我认为太多的波动,我很难理解为什么这是必要的。但是,我可能会接受纠正,也可能是为了测试目的。

这是完全未经测试的,但您可以创建相机实例,应用您的 videoStreamSettings,将相机附加到您的流实例,然后发布。在发布以切换设置时,您可以从网络流中分离您的相机实例:
stream.attachCamera(null);

然后简单地创建一个新的相机实例,应用新的 videoStreamSettings,最后将它附加到已经发布的流。

我通常在状态事件 时发送元数据"NetStream.Publish.Start"已经收到。只要流正在发布,您就必须修改它并在每次将相机重新连接到流时重新发送。我不知道这会带来什么影响,但是您连接的播放器应该会收到有关元数据更改的回调。

关于actionscript-3 - 如何在 NetStream 中打开和关闭 H264?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13018950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com