3

I'm trying to stream local audio files in m4a (aac) similar to Tiberiu-IonuČ› Stan (http://stackoverflow.com/questions/2036107/aac-mp4-not-working-in-actionscript-3s-netstream):

package
{

    import flash.net.NetConnection;
    import flash.net.NetStream;

    import flash.events.NetStatusEvent;
    import flash.events.AsyncErrorEvent;
    import flash.events.Event;

    public class Mysound
    {
        private var _connection:NetConnection;
        private var _netStream:NetStream;
        private var _filePath:String;
        private var _client:Object;

        public function MainDocument(filePath:String):void
        {
            _filePath = filePath;
            connect();
        }

        private function connect():void
        {
            _connection=new NetConnection();
            _connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            _connection.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

            _connection.connect(null);
        }

        private function netStatusHandler(event:NetStatusEvent):void
        {
            switch (event.info.code)
            {
                case "NetConnection.Connect.Success":
                    requestAudio();
                    break;
            }
        }

        private function requestAudio():void
        {
            _netStream=new NetStream(_connection);
            _netStream.addEventListener(NetStatusEvent.NET_STATUS, this._netStatusHandler);
            _netStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, this._asyncErrorHandler);

            _client = new Object();
            _client.onMetaData = onMetaData;
            _netStream.client = _client;

            _netStream.backBufferTime = 0;
            _netStream.bufferTime = 0.5;
            _netStream.bufferTimeMax = 5;


            _netStream.play(filePath);
        }

        private function asyncErrorHandler(event:AsyncErrorEvent):void
        {
            trace(event);
        }

        private function onMetaData(metadata:Object):void
        {
            var str:String = "";
            for (var key:String in metadata) {
                str += key + ": " + metadata[key];
            }
            trace(str);
        }
    }
}

It works for me on emulator but it doesn't on devices (ipads). I found out that netStatusHandler on device catches status "NetStream.Play.Failed", but i have no idea why, I know that it correctly reads file as it does get correct metadata, it also starts to buffer sound, but fails to play it. Files are in folder next to my app swf so it shouln't be sandbox problem. What else should I try to get it working?

warmenos
  • 31
  • 3

0 Answers0