PDA

Просмотр полной версии : проблема с воспроизведением с нужной точки


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

_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
если мне память не изменяет то : _samples.position = 0; эта строчку будет отвечать с какой секунды будет проигрываться.

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

S-ed
18.06.2011, 17:06
_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 большое спасибо, указал позицию, все заработало
var len:Number = buf[trackDesc].sound.extract(_samples, BUFFER_SIZE,event.position);

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