采用以下代码:
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/flashplatform/reference/referenions/crionscript/3/flash/net/nets/netstream.html)和Adobe中,并且ADOBE明显地跳过了那个细节。我知道如何在整个应用程序的整个执行过程中有效地控制NetStream是使用H264还是"默认",但是我希望能够继续单击一个按钮以使其在不替换NetStream或执行任何操作的情况下使其来回切换否则疯狂。
这是如何正确完成的?谢谢!
阅读您的问题,似乎有几个问题,您的提问和更多澄清会有所帮助,因此我将做一些假设 答案:
问题1:
切换M_NS的VideoStreamSettings是什么不错的方法 仍在使用H264吗?
by 默认值您是说使用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:
我希望能够继续单击一个按钮以使其重新切换并 第四,不替换网状或做其他事情 这样。
我建议一个重新连接例程,以切换您的设置以未发布现有流并重新连接相机并发布具有不同视频设置的新流。这将保持流的完整性,并说实话,不发行和重新发布流并不是您所说的所有疯狂。
如果您必须沿着切换设置的路由,那么我上面对您声明为 default 的假设将阻止在已经发布的流中更改文件格式。
我个人不会使用相同的编解码器并应用不同的编解码器H264VideoStreamSettings中期流。H264VideoStreamSetting仅在将相机添加到流中并在压缩开始后应用。我的理解是压缩始于发表流的开始,因此,您建议您将在已经发布的流中进行压缩时切换。在我看来,由此产生的流将导致太多波动,我很难看为什么这是必要的。但是,我可能要纠正或可能是用于测试目的。
这是完全未经测试的,但是您可以创建相机实例,应用您的VideoStreamSettings,将相机连接到流实例,然后发布。当它发布以切换设置时,您可以将相机实例从网络流分离:
stream.attachCamera(null);
,然后只需创建一个新的实例,应用新的VideoStreamSettings并将其连接到已经发布的流。
我通常会收到状态事件" netstream.publish.start" 时发送元数据。只要流正在发布时,您就必须修改此操作并重新介绍相机。我不知道这将是什么含义,但是您的连接播放器应该希望会更改元数据的回调。