NetStream Info返回0(Icecast Stream)

时间:2011-12-04 21:27:22

标签: actionscript-3 null adobe icecast

我已经搜索了高位和低位以解决此问题,但无法找到任何关于为什么几乎所有属性都返回为0的原因。

我正在使用FLV包装从Icecast中提取实时音频流(因为Adobe,15年后,仍然没有解决他们的实时音频内存泄漏问题)。它工作得很好,一切都很完美。

但是,我想创建一个带宽监视器(对于我的iPhone端口,以及我的普通Flash播放器)......但每当我检索netStreamInfo时,它都会返回0!对于dataBytesPerSecondaudioBytesPerSecondbyteCountdataByteCount,几乎每个单一财产都会返回0。我有一个1秒计时器运行。

以下是总信息输出:

currentBytesPerSecond=0 
byteCount=0 
maxBytesPerSecond=0 
audioBytesPerSecond=0 
audioByteCount=0 
videoBytesPerSecond=0 
videoByteCount=0 
dataBytesPerSecond=0
dataByteCount=0 
playbackBytesPerSecond=16296.296296296296 
droppedFrames=0 
audioBufferLength=0.072
videoBufferLength=0 
dataBufferLength=0 
audioBufferByteLength=1540 
videoBufferByteLength=0
dataBufferByteLength=0 
srtt=0 
audioLossRate=0 
videoLossRate=0 Data Bytes Per Second

输出大概是5分钟。我注意到playBackBytesPerSecond从未改变,audioBufferByteLength喜欢随机切换1540和23xx之间。

任何人都可以请求帮助我吗?

我的动作:

package
{
    import flash.display.Sprite;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.media.Video;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextField;
    import flash.events.Event;
    import flash.events.TimerEvent;
    import flash.events.NetStatusEvent;
    import flash.utils.Timer;
    import flash.media.Sound;
    import flash.net.URLRequest;
    import flash.media.SoundChannel;
    import flash.media.SoundMixer;
    import flash.media.SoundTransform;
    import flash.display.Loader;
    import flash.errors.IOError;
    import flash.events.MouseEvent;
    import flash.geom.Rectangle;
    import flash.net.NetStreamInfo;
    import flash.utils.ByteArray;
    import flash.media.*

    public class soundContainer extends Sprite
    {
        public var slider:SliderMC = new SliderMC();
        private var _video:Video;
        private var _stream:NetStream;
        private var _playbackTime:TextField;
        private var _duration:uint;
        private var _timer:Timer;
        private var _soundChannel:SoundChannel;
        public var audioTransform:SoundTransform = new SoundTransform();
        public var _URL:String;
        public var flvUrl:String = "s";
        public var dragging:Boolean = false;
        public var rectangle:Rectangle = new Rectangle(0,0,100,0);
        private var ba:ByteArray;
        private var bn;


        public function soundContainer() {

            addEventListener(Event.ADDED_TO_STAGE, init);
        }

        public function init(e:Event):void
        {

            ba = new ByteArray();

            slider.x = 73.85;
            slider.y = 10.95;
            addChild(slider);

            slider.slider_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragIt);
            stage.addEventListener(MouseEvent.MOUSE_UP, dropIt);


            _timer = new Timer(1000);
            _timer.addEventListener(TimerEvent.TIMER, onTimer);
            _timer.start();


        }

        public function dragIt(e:MouseEvent):void
        {
            slider.slider_mc.startDrag(false, rectangle);
            dragging = true;
            slider.slider_mc.addEventListener(Event.ENTER_FRAME, adjustVolume);
        }

        public function dropIt(e:MouseEvent = null):void
        {
            if (dragging)
            {
                slider.slider_mc.stopDrag();
                dragging = false;
            }
        }

        public function adjustVolume(e:Event):void
        {
            var vol:Number = slider.slider_mc.x / 100;
            var st:SoundTransform = new SoundTransform(vol);
            SoundMixer.soundTransform = st;

        }

        public function playMyFlv(flvUrl)
        {
            _URL = flvUrl;
            _video = new Video();

            var connection:NetConnection = new NetConnection();
            connection.connect(null);

            _stream = new NetStream(connection);
            _stream.soundTransform = audioTransform;
            _stream.play(flvUrl);

            var Client:Object = new Object();
            _stream.client = Client;
            _video.attachNetStream(_stream);

            addChild(_video);

        }



        public function stopMyFlv()
        {
            SoundMixer.stopAll();
            trace("stop");
            try
            {
                _stream.close();
            }
            catch (error:IOError)
            {
            }

        }




        private function onNetStatus(e:NetStatusEvent)
        {

        }

        private function onTimer(t:TimerEvent):Number
        {
            trace(_stream.info + " Data Bytes Per Second");
        }


        public function onIOError(e:IOError)
        {
            trace("Failed to load");
        }
    }
}

0 个答案:

没有答案