Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   проблема с воспроизведением с нужной точки (http://www.flasher.ru/forum/showthread.php?t=158300)

MXPain 18.06.2011 00:47

проблема с воспроизведением с нужной точки
 
делаю плеер с эквализацией, получаю данные в Sound обьект, но почемуто с нужной точки воспроизвести его не могу, все время проигрывается с самого начала трека(((
Код AS3:

        _out_snd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound);
        _channel = _out_snd.play(pos);
 
        function processSound(event:SampleDataEvent):void {
 
                _samples = new ByteArray();
                var len:Number = buf[trackDesc].sound.extract(_samples, BUFFER_SIZE);
                var i:int=0;
                var l:Number;
                var r:Number;
 
                if ( len < BUFFER_SIZE ) { // If end of MP3, start over
                        len += buf[trackDesc].sound.extract(_samples,BUFFER_SIZE-len,0);
                }
                _samples.position = 0;
                while (i < BUFFER_SIZE) {
                        event.data.writeFloat(_eqL.compute(_samples.readFloat()));
                        event.data.writeFloat(_eqR.compute(_samples.readFloat()));
                        i++;
                }
        }

подскажите плиз, заранее спасибо)

t4arty 18.06.2011 02:06

если мне память не изменяет то :
Код AS3:

_samples.position = 0;

эта строчку будет отвечать с какой секунды будет проигрываться.

MXPain 18.06.2011 14:53

память тебе изменила))) вообще это байтовая позиция с которой массив читается а не время в миллисекундах.

S-ed 18.06.2011 17:06

Код AS3:

        _out_snd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound);
        _channel = _out_snd.play(pos);//независимо от pos играется сначала?
 
        function processSound(event:SampleDataEvent):void {
 
                _samples = new ByteArray();
                var len:Number = buf[trackDesc].sound.extract(_samples, BUFFER_SIZE);/*надо
 указать место извлечения, если вы хотите обрабатывать данные не сначала*/

                var i:int=0;
                var l:Number;
                var r:Number;
 
                if ( len < BUFFER_SIZE ) { // If end of MP3, start over
                        len += buf[trackDesc].sound.extract(_samples,BUFFER_SIZE-len,0);/*тут
 третий параметр можно опустить, последовательне вызовы extract сдвигают начало выборки
 на значение 2го параметра*/

                }
                _samples.position = 0;
                while (i < BUFFER_SIZE) {
                        event.data.writeFloat(_eqL.compute(_samples.readFloat()));
                        event.data.writeFloat(_eqR.compute(_samples.readFloat()));
                        i++;
                }
        }//не учитывается event.position


MXPain 20.06.2011 03:56

S-ed большое спасибо, указал позицию, все заработало
Код AS3:

var len:Number = buf[trackDesc].sound.extract(_samples, BUFFER_SIZE,event.position);

только вот когда меняю позицию, непонятно почему, вклинивается милисекундный кусочек из начала(((


Часовой пояс GMT +4, время: 19:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.