Actionscript 3 AAC/MP4不在ActionScript 3'中工作;s NetStream
我试图在Flash CS3的ActionScript 3中播放远程AAC文件,目前正在使用以下代码:Actionscript 3 AAC/MP4不在ActionScript 3'中工作;s NetStream,actionscript-3,flash-cs3,mp4,netstream,aac,Actionscript 3,Flash Cs3,Mp4,Netstream,Aac,我试图在Flash CS3的ActionScript 3中播放远程AAC文件,目前正在使用以下代码: var-url:String=“” var connect_nc:NetConnection=new NetConnection() connect\u nc.connect(空) var stream\u ns:NetStream=新NetStream(connect\u nc) 流媒体播放(url); (这是基于:) 不会抛出错误,但不会播放声音。我在本地AAC文件和本地MP4视频中得到
var-url:String=“”
var connect_nc:NetConnection=new NetConnection()
connect\u nc.connect(空)
var stream\u ns:NetStream=新NetStream(connect\u nc)
流媒体播放(url);
(这是基于:)
不会抛出错误,但不会播放声音。我在本地AAC文件和本地MP4视频中得到了相同的行为
如果我使用的URL或文件路径不是可流化文件,则会出现NetStream.Play.StreamNotFound错误,我猜这意味着该流是在有效URL的情况下找到的。如果我使用本地FLV,它的音频播放得很好
如果我在netStatusHandler中添加以下侦听器和跟踪(evt.info.code),我只会看到用FLV跟踪的任何代码(例如NetStream.Play.Start)。AAC或MP4不跟踪任何代码。
stream_ns.addEventListener(NetStatusEvent.NET_状态,netStatusHandler)
添加此侦听器也是如此(即,仅使用FLV跟踪onMetaData参数,而不使用其他文件类型),metaDataListener被定义为具有跟踪其参数的onMetaData方法的对象。stream_ns.client=metaDataListener 你知道这里可能出了什么问题,或者如何诊断吗 谢谢 如本文所述,您所做的是正确的
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语言参考可在此处找到:
声明:
play()方法
在不使用Flash Media Server的情况下使用此方法时,需要考虑安全问题。本地trusted或local with networking沙箱中的文件可以从远程沙箱加载和播放视频文件,但如果没有以跨域策略文件的形式获得明确许可,则无法访问远程文件的数据。另外,通过设置对象的allowNetworking参数并在包含SWF内容的HTML页面中嵌入标记,可以防止在Flash Player中运行的SWF文件使用此方法
。。。
参数
... arguments—要播放的视频文件的位置,如URL请求对象或字符串。在Flash Player和应用程序安全沙盒之外的空中内容中,您可以播放本地视频文件,这些文件存储在与SWF文件相同的目录或子目录中;但是,您无法导航到更高级别的目录
因此,这可能是一个安全沙箱问题。Oliver所说的很有可能是真的,因为您没有从与NetStream关联的任何事件侦听器获得任何反馈,并且您得到的是StreamNotFound响应
未连接到FMS时,StreamNotFound表示由于安全问题,您的路径错误或无法看到它。ActionScript 3.0中的所有内容都是基于事件的(在使用回调的情况下很少有随机例外) 您需要使用info.code“NetConnection.Connect.Success”侦听NetStatusEvent,以便允许调用NetStream.play()函数 以下是一些有效的方法(我现在刚刚编写了它,并为您进行了测试): 有关更多信息,请参阅ActionScript 3.0语言参考
package
{
import flash.display.Sprite;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import flash.events.AsyncErrorEvent;
import flash.events.Event;
public class MainDocument extends Sprite
{
private var _connection:NetConnection=new NetConnection();
private var _netStream:NetStream=null;
private var _strM4AURL:String="http://a1.phobos.apple.com/us/r1000/020/Music/d4/50/94/mzm.kjjofihr.aac.p.m4a";
//constructor
public function MainDocument():void
{
this._connect();
}
private function _connect():void
{
this._connection.close();
this._connection=new NetConnection();
this._connection.addEventListener(NetStatusEvent.NET_STATUS, this._netStatusHandler);
this._connection.addEventListener(AsyncErrorEvent.ASYNC_ERROR, this._asyncErrorHandler);
this._connection.connect(null);
}
private function _netStatusHandler(event:NetStatusEvent):void
{
trace(event.info.code);
switch (event.info.code)
{
case "NetConnection.Connect.Success":
this._requestAudio();
break;
}
}
private function _requestAudio():void
{
if(this._netStream!==null)
this._netStream.close();
this._netStream=new NetStream(this._connection);
this._netStream.addEventListener(NetStatusEvent.NET_STATUS, this._netStatusHandler);
this._netStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, this._asyncErrorHandler);
this._netStream.checkPolicyFile=false;
this._netStream.play(this._strM4AURL);
}
private function _asyncErrorHandler(event:AsyncErrorEvent):void
{
trace(event);
}
}
}