首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接收NetGroup流

接收NetGroup流
EN

Stack Overflow用户
提问于 2013-08-31 17:38:05
回答 1查看 326关注 0票数 0

我正在尝试接收一个NetGroup (电视)流,但它在某一点上失败了。下面是代码(简化为测试用例):

代码语言:javascript
复制
package lib
{
    import flash.events.NetStatusEvent;
    import flash.external.ExternalInterface;
    import flash.media.SoundTransform;
    import flash.media.Video;
    import flash.net.GroupSpecifier;
    import flash.net.NetConnection;
    import flash.net.NetGroup;
    import flash.net.NetStream;
    import flash.net.NetStreamPlayOptions;
    import mx.core.FlexGlobals;

    public class player
    {
        private var connection:NetConnection;
        private var group:NetGroup;
        private var group_option:GroupSpecifier;
        private var self:Object;
        private var stream:NetStream;
        private var stream_option:NetStreamPlayOptions;
        private var video:Video;

        private function _connect():void
        {
            self.connection = new NetConnection();
            self.connection.addEventListener(NetStatusEvent.NET_STATUS, self._event_net_status);
            self.connection.connect('rtmfp://p2p.peer-stream.com');
        }

        private function _event_net_status(event:NetStatusEvent):void
        {
            if(event.info.code === '')
                return;
            ExternalInterface.call('echo', 'status', event.info.code, false);
            switch(event.info.code)
            {
                case 'NetConnection.Connect.Success':
                    self._p2p_start();
                    break;
                case 'NetGroup.Connect.Success':
                    self._stream_init();
                    break;
                case 'NetStream.Connect.Success':
                    self._stream_start();
                    break;
            }
        }

        private function _p2p_start():void
        {
            self.group_option = new GroupSpecifier('G:0101010c0b0e70726f2073696562656e00');
            self.group_option.ipMulticastMemberUpdatesEnabled = true;
            self.group_option.multicastEnabled = true;
            self.group_option.objectReplicationEnabled = true;
            self.group_option.postingEnabled = true;
            self.group_option.routingEnabled = true;
            self.group_option.serverChannelEnabled = true;
            self.group = new NetGroup(self.connection, self.group_option.groupspecWithAuthorizations());
            self.group.addEventListener(NetStatusEvent.NET_STATUS, self._event_net_status);
        }

        private function _stream_init():void
        {
            self.stream = new NetStream(self.connection, self.group_option.groupspecWithAuthorizations());
            self.stream.addEventListener(NetStatusEvent.NET_STATUS, self._event_net_status);
        }

        private function _stream_start():void
        {
            self.video.attachNetStream(self.stream);
            self.stream.soundTransform = new SoundTransform();
            self.stream_option = new NetStreamPlayOptions();
            self.stream_option.streamName = 'G:0101010c0b0e70726f2073696562656e00';
            self.stream.play2(self.stream_option);
        }

        public function player():void
        {
            super();
            FlexGlobals.topLevelApplication.stage.quality = 'BEST';
            self = this;
            self.video = new Video(640, 480);
            FlexGlobals.topLevelApplication.video_box.addChild(self.video);
            self.video.smoothing = true;
            self._connect();
        }
    }
}

那里的ExternalInterface调用只显示文本字段中传递的信息(我正在浏览器中测试这个信息)。以下是此输出的结果:

代码语言:javascript
复制
NetConnection.Connect.Success
NetGroup.Connect.Success
NetStream.Connect.Success
NetStream.Play.Reset
NetStream.Play.Start

但球员身上什么都没发生。以下是我的想法:

  • 我使用的字符串与GroupSpecifier和streamName相同,但我认为这是错误的。如果是这样,我如何才能获得NetGroup的流名?
  • 我启用了从GroupSpecifier到其他客户端的所有功能,因为我不知道接收流并将其传递给其他客户端的最低要求是什么。也许所有的东西都会在这里制造麻烦。

也许有人能告诉我如何解决这个问题,最终看到一条小溪。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-02 19:36:31

我能够解决这个问题: streamName确实错了,我可以手动找出正确的名称。另外,我必须将已知的组字符串直接传递给NetGroup和NetStream对象,而不是使用新的NetStream()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18550988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档