Захват и воспроизведение новых типов медиа с AVFoundation - PullRequest
3 голосов
/ 20 сентября 2011

У меня очень нестандартный вопрос AVFoundation, и, как относительный новичок в мире iOS, я мог бы действительно использовать некоторые рекомендации от экспертов -

Я работаю над приложением, которое позволяетпользователь записывает биты аудио, которые мне нужно программно упорядочить, используя AVMutableComposition.Вот в чём дело, помимо звуковой дорожки, я хочу захватывать и сохранять данные акселерометра и синхронизировать их со звуком.Обычно AVFoundation используется для известных типов мультимедиа, таких как фотографии, аудио и видео, но мне было интересно, возможно ли захватить что-то вроде данных акселерометра с помощью этой платформы.Это облегчит мне синхронизацию данных датчика с захваченным звуком, особенно при соединении частей с AVMutableComposition.

Вот что мне нужно сделать:

  1. Запись данных акселерометра в виде AVAsset/AVAssetTrack, чтобы я мог вставить их в AVMutableComposition

  2. Разрешить воспроизведение данных акселерометра в пользовательском представлении рядом со звукомбыло записано с

  3. Сохраните AVMutableComposition на диск, включая аудио и треки акселерометра.Было бы неплохо использовать стандартный контейнер, такой как Quicktime

. Для части 1 и 3 я рассматриваю использование классов AVAssetReader, AVAssetReaderOutput, AVAssetWriter, AVAssetWriterInputчтобы захватить с акселерометра, но без большого опыта с какао, я пытаюсь выяснить, что именно нужно расширить.На данный момент я думаю, что мне нужно создать подкласс AVAssetReaderOutput и AVAssetWriterInput и работать с CMSampleBuffers, чтобы разрешить преобразование между необработанными данными акселерометра и AVAsset.Я заметил, что большинство этих классов имеют только один закрытый член, ссылающийся на конкретную реализацию (то есть AVAssetReaderInternal или AVAssetWriterInputInternal).Кто-нибудь знает, является ли это общим шаблоном или что это значит для написания пользовательской реализации?

Я еще не задумывался над частью 2.В настоящее время я использую AVPlayer для воспроизведения аудио, но я не уверен, как заставить его распределять выборочные данные из ресурса в мое пользовательское представление акселерометра.

Извинения за такой открытый вопрос - яПредположим, я ищу больше рекомендаций, чем конкретного решения.Есть ли какие-то интуитивные чувства относительно того, возможно ли это вообще с архитектурой AVFoundations?

1 Ответ

0 голосов
/ 21 сентября 2011

Я бы использовал NSmutableArray и сохранял там данные акселератора и временной код.Таким образом, при воспроизведении вы можете получить время от видеоплеера и использовать его для поиска данных ускорителя в массиве.Поскольку данные хранятся в виде временной шкалы, вам не нужно искать весь массив.Достаточно сделать шаг вперед в массиве и проверить, совпадают ли данные времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...