Частота дискретизации AVAssetReader - PullRequest
0 голосов
/ 23 ноября 2011

Как рассчитать частоту дискретизации песни, полученной из библиотеки iPod, с помощью AVAssetReader. Я думаю, что могу довольно легко получить количество сэмплов (я все равно уже успешно читаю сэмплы ...), но я не знаю, где я могу получить длину (в секундах) песни.

Обратите внимание, что MPMediaItem не имеет свойства для длины элемента мультимедиа, может быть, есть другой способ через этот API получить длину элемента?

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Вы можете использовать MPMediaItem, чтобы получить длину. Посмотрите на ключ свойства MPMediaItemPropertyPlaybackDuration. Состояние документов:

Продолжительность воспроизведения медиа-элемента. Значение - это объект NSNumber, представляющий длительность в секундах как NSTimeInterval.

0 голосов
/ 28 ноября 2017

, если вы на самом деле все еще задаетесь вопросом о частоте дискретизации, это делается так: как только вы получите интересующий вас AVAssetTrack, вы можете получить AudioStreamBasicDescription и проверить его, чтобы найти исходную частоту дискретизации.

AVAssetTrack * track = ...;
CMAudioFormatDescriptionRef trackDescription = static_cast<CMAudioFormatDescriptionRef>([track.formatDescriptions firstObject]);
const AudioStreamBasicDescription * trackAsbd = CMAudioFormatDescriptionGetStreamBasicDescription(trackDescription);

double sampleRate = trackAsbd->mSampleRate;

проверка ошибок пропущена ...

...