Получение точного времени от FFMPeg с Objective C (Audio Queue Services) - PullRequest
1 голос
/ 31 мая 2011

Приложение для iPhone воспроизводит аудиофайл с помощью FFMPeg.

Я получаю истекшее время (для показа пользователю) из воспроизводимого аудио (в минутах и ​​секундах после преобразования в микросекундах, заданных FFMPeg) следующим образом:

AudioTimeStamp currentTimeStamp;
AudioQueueGetCurrentTime (audioQueue, NULL, &currentTimeStamp, NULL);

getFFMPEGtime = currentTimeStamp.mSampleTime/self.basicAudioDescription.mSampleRate;

self.currentAudioTime = [NSString stringWithFormat: @"%02d:%02d",
                            (int) getFFMPEGtime / (int)60000000,
                            (int) ((getFFMPEGtime % 60000000)/1000000)];

Все работает нормально, но когда я перемещаюсь назад или вперед, чтобы воспроизвести другую часть песни, истекшее время вернется к нулю , независимо от текущей позиции. Таймер всегда обнуляется.

Я знаю, что я должен сделать некоторую математику, чтобы отследить старое и новое время, возможно, построить другие часы или около того, возможно, реализовать другую функцию обратного вызова и т. Д. Я не уверен, каким образом я должен идти.

Мои вопросы :

1) Как лучше всего отслеживать прошедшее время при переходе назад / вперед в песне, избегая того, чтобы часы всегда возвращались к нулю?

2) Должен ли я подробно изучить функции FFMPeg или мне следует использовать Objective-C и Cocoa Touch для решения этой проблемы?

Пожалуйста, мне нужны советы / идеи от опытных программистов. Я застрял. Заранее спасибо!

1 Ответ

2 голосов
/ 31 мая 2011

Если вы делаете это, чтобы показать истекшее время в медиа для пользователя (о чем свидетельствует тот факт, что вы превращаете его в форматированную строку), вам следует вместо этого запросить систему воспроизведения, которую вы используете для времени.он думает, что это в файле.Аудио-очередь полностью не осведомлена о ваших медиафайлах, поэтому вам придется дублировать работу, выполняемую системой воспроизведения, чтобы сопоставить ее с медиа-временем.Отметки времени из аудио-очереди больше похожи на часы высокой точности для таких вещей, как синхронизация аудио / видео.

...