actionscript-3 – AAC / MP4无法在ActionScript 3的NetStream中运行

我正在尝试在Flash CS3中的ActionScript 3中播放远程AAC文件,目前我正在使用此代码:

var url:String =“http://a1.phobos.apple.com/us/r1000/020/Music/d4/50/94/mzm.kjjofihr.aac.p.m4a”;
var connect_nc:NetConnection = new NetConnection();
connect_nc.connect(NULL);
var stream_ns:NetStream = new NetStream(connect_nc);
stream_ns.play(URL);

(这是基于:http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player_03.html)

没有错误,但没有播放声音.我使用本地AAC文件和本地MP4视频获得相同的行为.

如果我使用不是可流式文件的URL或文件路径,我会收到NetStream.Play.StreamNotFound错误,我猜这意味着在有效URL的情况下找到该流.如果我使用本地FLV,它的音频播放就好了.

如果我在netStatusHandler中添加以下侦听器和跟踪(evt.info.code),我只会看到使用FLV跟踪的任何代码(例如NetStream.Play.Start). AAC或MP4无法跟踪代码.
stream_ns.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);

添加此侦听器也是如此(即,仅使用FLV跟踪onMetaData参数,而不跟踪其他文件类型),并将metaDataListener定义为具有跟踪其参数的onMetaData方法的对象.
stream_ns.client = metaDataListener;

这里可能出现什么问题的想法,或者如何诊断?

谢谢!

最佳答案 正如
http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player_03.html所述,你所做的是正确的.

var connect_nc:NetConnection = new NetConnection();
connect_nc.connect(null);
var stream_ns:NetStream = new NetStream(connect_nc);
stream_ns.play("RE-Sample.m4a");

但是,在这里找到关于nestream的Actionscript语言参考:
http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/net/NetStream.html#play%28%29

说:

play()方法

在没有Flash Media Server的情况下使用此方法时,需要考虑安全性.本地受信任或本地联网沙箱中的文件可以从远程沙箱加载和播放视频文件,但如果没有跨域策略文件形式的显式权限,则无法访问远程文件的数据.此外,通过在包含SWF内容的HTML页面中设置object和embed标记的allowNetworking参数,可以阻止在Flash Player中运行的SWF文件使用此方法.


参数
    … arguments – 要播放的视频文件的位置,作为URLRequest对象或字符串.在Flash Player和应用程序安全沙箱之外的AIR内容中,您可以播放存储在与SWF文件相同的目录中或子目录中的本地视频文件;但是,您无法导航到更高级别的目录.

所以它可能是一个安全沙箱问题.

点赞