Определение предполагаемой продолжительности потока с использованием Core Audio - PullRequest
0 голосов
/ 25 марта 2010

Я передаю MP3 по сети, используя пользовательский код подачи, а не AVAudioPlayer (который работает только с URL-адресами), используя такие API, как AudioFileStreamOpen и т. Д.
Есть ли способ оценить длину потока? Я знаю, что могу получить свойство 'elapsed', используя:

if(AudioQueueGetCurrentTime(queue.audioQueue, NULL, &t, &b) < 0)
        return 0;

    return t.mSampleTime / dataFormat.mSampleRate;

Но как насчет общей продолжительности создания индикатора выполнения? Это возможно?

P.S. Уточнение - я знаю фактический размер файла MP3, не знаю, можно ли его использовать ... Я даже соглашусь на решение, которое просто дает мне индикатор выполнения, а не фактическое время воспроизведения / длительности.

1 Ответ

0 голосов
/ 26 марта 2010

Если вам известен общий размер файла MP3, вы можете рассчитать количество бит в секунду и, следовательно, рассчитать длительность потока. Если это VBR, вам, вероятно, придется усреднить несколько кадров MPEG. Для CBR вы можете просто использовать битрейт одного пакета.

...