Flash AS3广播播放器播放BBC广播

时间:2012-04-18 15:36:14

标签: actionscript-3 flash stream

我正在用闪光灯制作一个无线电播放器,我需要让所有BBC广播电台在播放器中工作。

我正在尝试使用他们的AAC Streams,我有一些ActionScript 3代码用于读取AAC Streams,但这似乎不适用于BBC Radio Streams。我得到的错误信息是: NetStream.Play.StreamNotFound但是同一个流在WinAmp中运行良好。

这是我试图播放的AAC流样本(BBC Radio 3):

http://bbcmedia.ic.llnwd.net/stream/bbcmedia_lc1_radio3_q?s=1334749463&e=1334763863&h=3bc870c82d1e1f360d8cfc1d296d97c2

这是我用来播放流的AS3类:

package play {

import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import flash.events.AsyncErrorEvent;

public class aacplay {

    private var netConn:NetConnection=new NetConnection();
    private var netStrm:NetStream;
    private var urlStr:String;

    public function aacplay(radiourl) {
        urlStr=radiourl;
        connect();
    }

    private function connect():void{
        netConn.close();
        netConn=new NetConnection();
        netConn.addEventListener(NetStatusEvent.NET_STATUS,netStatusHdlr);
        netConn.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHdlr);
            netConn.connect(null);
        }

        private function netStatusHdlr(e:NetStatusEvent):void{
            trace('netStatusHdlr:'+e.info.code);
            switch(e.info.code){
                case 'NetConnection.Connect.Success':
                    requestAudio();
                    break;
            }
        }

        private function requestAudio():void{
            if(netStrm!==null){
                netStrm.close();
            }
            netStrm=new NetStream(netConn);
            netStrm.addEventListener(NetStatusEvent.NET_STATUS,netStatusHdlr);
            netStrm.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHdlr);
            netStrm.checkPolicyFile=false;
            netStrm.play(urlStr);
        }

        private function asyncErrorHdlr(e:AsyncErrorEvent):void{
            trace('asyncErrorHdlr:'+e);
        }
    }
}

我正在调用这个类:

var aac:aacplay=new aacplay('http://bbcmedia.ic.llnwd.net/stream/bbcmedia_lc1_radio3_q?s=1334749463&e=1334763863&h=3bc870c82d1e1f360d8cfc1d296d97c2');

任何人都可以告诉我为什么我无法播放BBC流 - 这是一个安全问题吗?如果是这样,我该如何解决这个安全问题?

1 个答案:

答案 0 :(得分:1)

使用netConn.connect(null)表示您将播放本地mp4或flv文件,或者手动将数据推送到缓冲区使用NetStream.appendBytes()

在这种情况下你需要:

  • 打开URLSocket到您的网址
  • 收到数据
  • 动态解析
  • 从上一步
  • 创建包含FLVTag数据的AAC
  • 将此数据推送到NetStream.appendBytes()

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#appendBytes()