2012-07-01 4 views
0

У меня есть файл, который представляет собой контейнер RIFF с тремя кусками; RIFF имеет идентификатор WAVE. Первый фрагмент - «fmt», второй - «данные», последний - «eink» (мой собственный кусок). Таким образом, файл создается с помощью кода C#, который использует directshow. Звук закодирован в AAC. Поэтому я не хочу воспроизводить звук, который хранится в блоке данных, на iOS 5. *.
Я попытался прочитать весь фрагмент данных и использовать эти байты в [initWithData:error:][1] методе AVAudioPlayer. Но, похоже, это работает по-другому.
Чем я думал, я мог бы попытаться сделать свой собственный файл m4a с этими байтами и воспроизвести его, но есть ли другой правильный путь? Пожалуйста, предложите мне несколько способов исследовать его? Где читать? Или другой метод.Чтение аудио AAC из контейнера RIFF на iOS

+0

AAC в WAV может быть в следующих форматах - ADIF, ADTS и M4A. Вы знаете, какой формат присутствует в вашем WAV-файле? Некоторые ссылки, которые могут помочь найти формат (a) http://wiki.multimedia.cx/index.php?title=ADTS (b) http://developer.apple.com/library/ios/#technotes/ tn2236/_index.html –

+0

Я не знаю, может ли он помочь определить формат, но когда я переименовал файл в '* .aac', VLC мог его воспроизвести. Я все еще занимаюсь исследованиями. Я буду обновлять информацию, когда другой разработчик, создающий этот файл, произнесет свое слово. – DanSkeel

+0

любое обновление по проблеме? –

ответ

2

Few concepts regarding WAV, AAC and MP4

WAV является формат контейнера, который может хранить любые другие звуковые данные, как сжатый или несжатый. Подробнее на http://www.sonicspot.com/guide/wavefiles.html

AAC может быть инкапсулирован несколькими способами. Наиболее распространенными являются ADTS и MP4. Подробная информация о формате контейнера AAC находится на http://en.wikipedia.org/wiki/Advanced_Audio_Coding#Container_formats

ADTS - относительно простой формат, в котором каждому кадру AAC предшествует заголовок. Более подробная информация о заголовке ADTS находится на http://wiki.multimedia.cx/index.php?title=ADTS

MP4 - относительно более сложный формат с поддержкой хранения различных аудиоформатов и видеоформатов. В случае MP4 информация заголовка сохраняется один раз в структурах MP4 в файле, и остальные кадры AAC не должны иметь никакой информации заголовка.

How to support playing WAV file with AAC payload in iOS?

  • Определить тип полезной нагрузки, будь то ADTS или MP4 или ADIF
  • Если файл может быть преобразован в автономном режиме, использовать сторонние библиотеки, такие как FFMPEG конвертировать WAV с AAC в M4A файл, формат, поддерживаемый iOS.
  • Если файл необходимо преобразовать на устройство, лучшим способом было бы извлечь данные кадра AAC из полезной нагрузки, преобразовать их в путь, который iOS ожидает и декодирует. Лучший способ определить это - преобразовать файл в M4A в автономном режиме и посмотреть, как данные передаются в iOS Audio Player.
+0

Итак, правильно ли я понимаю, AAC может храниться как ADTS или ADIF внутри полезной нагрузки WAV. И рамки iOS могут читать только контейнеры mp4? Как определить, являются ли данные ADTS или ADIF? Что мне делать, когда я это выясню? И, пожалуйста, объясните больше в последнем решении ditail? Большое спасибо за помощь. – DanSkeel

+0

Хорошо, если это ADTS, это были бы те 12 бит syncwords ... – DanSkeel