Как записать что-то отличное от линейного PCM на iPhone

StackOverflow https://stackoverflow.com/questions/676750

  •  21-08-2019
  •  | 
  •  

Вопрос

Мне трудно пытаться записать что-то другое, кроме линейного PCM, на iPhone:-( Образцы, которые я нашел (SpeakHere из SDK, книги Здзарского и Садуна и та, что на trailsinthesand.com ) все используют линейный PCM, но вместо этого я бы хотел использовать обычно используемый сжатый формат (без ima4 или как там это называется ...).

Я просто не могу понять, как настроить пример кода для использования, например, с AAC, MP3 или AMR вместо этого.Любые предложения и подсказки о том, как это сделать, очень ценятся!

(Кстати, я не думаю, что MP3-кодировщик или AMR-кодировщик доступны из-за проблем с лицензированием, но AAC существует, или???)

Редактировать / Обновлять: Я наткнулся на следующий текст в Apple "Руководство по программированию приложений для iPhone", 2009-01-06, страница 137, раздел:Запись аудио:
"Вы можете записывать аудио в любом из форматов, перечисленных в разделе “Предпочтительные аудиоформаты в iPhone OS” (стр. 140)", и в качестве предпочтительных аудиоформатов на стр. 140 указаны:"Для сжатого аудио при воспроизведении одного звука за раз и когда вам не нужно воспроизводить аудио одновременно с приложением iPod, используйте формат AAC, упакованный в файл CAF или m4a".
Таким образом, я интерпретирую это как четкое указание на то, что действительно не только возможно, но даже предпочтительнее записывать аудио в формате AAC, обернутое в файл m4a, что как раз то, что я хочу.Но все же, я не в состоянии достичь этого?!

Спасибо, /Джон

Это было полезно?

Решение

Продолжайте смотреть на эти документы.В разделе "Основные аудио-основы", раздел "Основные аудио-плагины:Аудиоустройства и кодеки" отмечает, что:

iPhone OS содержит запись кодеки, перечисленные в таблице 2-5.Как вы можете видите, ни MP3, ни AAC запись не доступна .Это связано с высокой нагрузкой на процессор и, как следствие, с разрядкой батареи в этих форматах.

В таблице 2-5 перечислены несколько форматов, но, поскольку текстовые примечания не включают те, которые вы ищете.Если вам нужны эти форматы, вам придется взять с собой свой собственный кодировщик.

Другие советы

Это возможно в iPhone 3GS и iPod 2-го поколения и выше.У них есть аппаратный энкондер для AAC.Для этого есть примерный проект Apple, который делает именно то, что вы хотите сделать:

iphoneextaudiofileconvertest Тестировать

Совет по использованию faac для преобразования линейных файлов pcm, выводимых с iPhone, в формат aac:

Экспериментально я обнаружил, что вы должны использовать -X установите флажок в версии faac командной строки (работающей на Mac OS X), которая "меняет местами входные байты". (Я предполагаю, что это изменяет порядковый номер.)

Так, например, если вы записали аудио в файл linear.pcm затем на вашем iPhone вы могли бы запустить:

faac -XP linear.pcm

на вашем Mac, чтобы преобразовать это в файл aac linear.aac.

Я предполагаю, что это означает, что вы могли бы использовать faac в своем приложении для выполнения преобразования, если бы захотели, поскольку это библиотека C.

Также обратите внимание, что технически файлы, выводимые аудиосервисами iPhone, обычно представляют собой файлы CAF, основной аудиоформат, который является своего рода форматом-оболочкой для множества возможных кодировок: Документы Apple по CAF.Приведенная выше командная строка работает для меня нормально, хотя linear.pcm начинается с caff заголовок.

Вы пробовали Хромой кодировщик mp3?Или faac/фаад Кодеки AAC?Вы можете встроить их в ffmpeg для еще большего количества аудиокодеков.

Почему бы не попробовать TPAACAudioConverter - аудиопреобразователь написанный Легендарные Майкл Тайсон ?

TPAACAudioConverter - это простой класс Objective-C, который выполняет асинхронное преобразование любого аудиофайла в m4a в кодировке AAC с делегатом или преобразует любой звук, предоставленный классом источника данных (который обеспечивает запись непосредственно в AAC).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top