加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 01:45:18 所属栏目:百科 来源:网络整理
导读:请使用以下代码: m_h264Settings = new H264VideoStreamSettings();some configuration in betweenm_ns.videoStreamSettings = m_h264Settings; 什么是切换m_ns的videoStreamSettings是否仍在使用H264的好方法? 我尝试在NetStreams(http://help.adobe.com/
请使用以下代码:

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,Adobe显然跳过了那个小细节.我知道如何在应用程序的整个执行过程中有效地控制NetStream是使用H264还是“默认”,但我希望能够不断点击按钮使其来回切换,而无需更换NetStream或做任何事情别的疯了.

这怎么做得好?谢谢!

解决方法

阅读你的问题似乎有一些问题你的问题加上一点澄清会有所帮助所以我会做一些假设来尝试回答:

问题1:

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”时发送元数据.只要流正在发布,您就必须对此进行修改并在每次将摄像机重新连接到流时重新发送.我不知道这会带来什么影响,但是你的连接播放器应该有希望收到有关元数据更改的回调.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读