Я конвертирую файл MP3 в raw PCM, и мне нужно сохранить его как просто raw PCM. (Обратите внимание, что я использую Java/RoboVM портировать прошивку.)Как сохранить только raw PCM в файл с SDK IOS (Core Audio)?
Я использую пакет CoreAudio, и соответствующая часть моего кода выглядит следующим образом:
// Define the output PCM format.
AudioStreamBasicDescription outputFormat = new AudioStreamBasicDescription();
outputFormat.setFormat(AudioFormat.LinearPCM);
outputFormat.setFormatFlags(AudioFormatFlags.Canonical);
outputFormat.setBitsPerChannel(16);
outputFormat.setChannelsPerFrame(1);
outputFormat.setFramesPerPacket(1);
outputFormat.setBytesPerFrame(2);
outputFormat.setBytesPerPacket(2);
outputFormat.setSampleRate(22050);
// ...
outputFile = ExtAudioFile.create(outputFileURL, AudioFileType.CAF, outputFormat, null, AudioFileFlags.EraseFile);
Я затем запустить через петлю , чтение из файла MP3 и запись в выходной файл.
После импорта этого необработанного файла в Audacity я заметил, что он всегда имеет всплеск в начале, что указывает на то, что он не является исходным файлом PCM, а вместо него находится внутри оболочки с заголовком (будь то WAV или CAF-заголовки , и т.д).
Я понимаю, что могу просто взять файл и отключить заголовок и получить необработанные данные PCM, но с точки зрения пространства/производительности этой части моего приложения, я бы очень хотел, чтобы я мог просто держать его простым и сохранить исходные данные PCM как есть без оболочки, но я не знаю, как это сделать.
Проблема возникает здесь:
outputFile = ExtAudioFile.create(outputFileURL, AudioFileType.CAF, outputFormat, null, AudioFileFlags.EraseFile);
Там не много вариантов для AudioFileType, я попытался WAVE и CAF. Идеально было бы PCM или RAW вариант, но нет. Есть ли конкретный AudioFileType
, который я должен выбрать, или мне нужно пойти по этому пути?