首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在局域网(无卷/层)与空中建立Flash对等通信

如何在局域网(无卷/层)与空中建立Flash对等通信
EN

Stack Overflow用户
提问于 2014-07-20 10:13:38
回答 1查看 433关注 0票数 1

我试图在局域网中播放音频/视频(我只对音频感兴趣)。

我在互联网上学习过一些教程,我发现这些教程内容丰富,就像来自汤姆·克尔查的教程一样,我认为它可以解决我的问题。但到目前为止,我还没有成功地接收到这条小溪。

这是我正在使用的代码,有人能告诉我我遗漏了什么吗?

代码语言:javascript
运行
复制
package {

import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
import flash.events.SecurityErrorEvent;
import flash.media.Camera;
import flash.media.Microphone;
import flash.media.Video;
import flash.net.GroupSpecifier;
import flash.net.NetConnection;
import flash.net.NetGroup;
import flash.net.NetStream;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;

[SWF(width="640", height="920", frameRate="60")]
public class LoudApp extends Sprite {

    private var _interpreterStartButton:TextField = new TextField();
    private var _listenerStartButton:TextField = new TextField();
    private var _connectedLabel:TextField = new TextField();
    private var _userTextField:TextField = new TextField();

    private var _stream:NetStream;
    private var _netConnection:NetConnection;
    private var _netGroup:NetGroup;
    private var _isConnected:Boolean;
    private var _listenerStream:NetStream;
    private var _isListener:Boolean;
    private var _video:Video;

    public function LoudApp() {
        addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
    }

    private function connect():void{
        _netConnection = new NetConnection();
        _netConnection.addEventListener(NetStatusEvent.NET_STATUS,netStatus);
        _netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        _netConnection.connect("rtmfp:");
    }

    private function securityErrorHandler(event:SecurityErrorEvent):void {
        trace("securityErrorHandler: " + event);
    }

    private function init(event:Event):void {
        _listenerStartButton.border = _interpreterStartButton.border = true;
        _listenerStartButton.backgroundColor = _interpreterStartButton.borderColor = 0;
        _listenerStartButton.autoSize = _interpreterStartButton.autoSize = TextFieldAutoSize.LEFT;
        _listenerStartButton.selectable = _interpreterStartButton.selectable = false;

        _connectedLabel = new TextField();
        _connectedLabel.y = 70;
        _connectedLabel.text = "not connected";

        _listenerStartButton.addEventListener(MouseEvent.CLICK, onButtonClicked, false, 0, true);
        _interpreterStartButton.addEventListener(MouseEvent.CLICK, onButtonClicked, false, 0, true);

        _interpreterStartButton.text = " Start\rTalking! ";
        _listenerStartButton.text = " Start\rListening! ";

        addChild(_interpreterStartButton);
        addChild(_listenerStartButton);
        addChild(_connectedLabel);

        _listenerStartButton.x = 120;
        var textFormat:TextFormat = new TextFormat(null, 30, 0x000000, true);
        _listenerStartButton.setTextFormat(textFormat);
        _interpreterStartButton.setTextFormat(textFormat);


//        Init the Video

        _video = new Video(stage.stageWidth, stage.stageHeight - 100);
        _video.y = 100;
        addChild(_video);

       connect();
    }

    private function onButtonClicked(event:MouseEvent):void {
        _isListener = event.target == _listenerStartButton;


        _listenerStartButton.removeEventListener(MouseEvent.CLICK, onButtonClicked);
        _interpreterStartButton.removeEventListener(MouseEvent.CLICK, onButtonClicked);

        removeChild(_listenerStartButton) && removeChild(_interpreterStartButton);

        /*_isConnected && */setupStream();

    }

    private function setupStream():void{
        var groupSpecifier:GroupSpecifier = new GroupSpecifier("en-GB");
        groupSpecifier.serverChannelEnabled = true;
        groupSpecifier.multicastEnabled = true;
        groupSpecifier.ipMulticastMemberUpdatesEnabled = true;
        groupSpecifier.addIPMulticastAddress("225.225.0.1:30303");

//        _netGroup = new NetGroup(_netConnection, groupSpecifier.groupspecWithAuthorizations());
//        _netGroup.addEventListener(NetStatusEvent.NET_STATUS, netStatus);

        _stream = new NetStream(_netConnection, groupSpecifier.groupspecWithAuthorizations());
        _stream.addEventListener(NetStatusEvent.NET_STATUS, netStatus);

        if(_isListener){
            _video.attachNetStream(_stream);
            _stream.receiveAudio(true);
//            _stream.receiveVideo(false);
            _stream.play('sound');
            return;
        }else{
            if(!Microphone.isSupported) return;

            _stream.attachAudio(Microphone.getMicrophone());
//            var camera:Camera = Camera.getCamera();
//            _stream.attachCamera(camera);
            _stream.publish("sound", "live");
//            _video.attachCamera(camera);

        }


    }

    private function netStatus(event:NetStatusEvent):void{
        switch(event.info.code){
            case "NetConnection.Connect.Success":
//                _isConnected = true;
//                _connectedLabel.text = "CONNECTED !";
                break;
            case "NetGroup.Connect.Success":
                _isConnected = true;
                _connectedLabel.text = "CONNECTED !";
                break;
            case "NetStream.Connect.Success":

                break;
            case "NetStream.Publish.Start":
                break;
        }
    }

    private function set listenerStream(value:NetStream):void {
        _listenerStream = value;
    }

}
}

前面谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-21 15:08:10

汤姆·克尔查( Tom )指出,有些网络阻止了组播。事实就是这样。

我有一个新的路由器再次测试应用程序,这一切都很完美。

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

https://stackoverflow.com/questions/24849452

复制
相关文章

相似问题

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