Что ж, проблема, с которой я сталкиваюсь сейчас, - это проблема размера.Я разрешаю пользователю выбирать песню из своей библиотеки, а затем разбивать ее на части, а затем использовать файл .wav или .mp3 на своем компьютере с включенным общим доступом к файлам.В основном я использую следующие параметры AVAssetWritter и продолжаю получать гигантский огромный аудиофайл.Например, 5 минут музыки около 50 МБ.Я пытаюсь сократить это до отраслевого размера.У меня есть ощущение, что это связано с тем фактом, что я использую LinearPCM в качестве одного из моих вариантов, но когда я изменяю этот или любой из параметров звука, пишущий не может писать.Я также изменяю параметр FileType на AVAssetWritter.Вот мой код, который работает совершенно нормально, мне просто нужно найти, чтобы сжать или сжать файлы.
AVAssetWriter *assetWriter = [[AVAssetWriter assetWriterWithURL:exportURL
fileType:AVFileTypeWAVE
error:&assetError]
NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey,
[NSNumber numberWithFloat:41000.0], AVSampleRateKey,
[NSNumber numberWithInt:2], AVNumberOfChannelsKey,
[NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey,
[NSNumber numberWithInt:16], AVLinearPCMBitDepthKey,
[NSNumber numberWithBool:NO], AVLinearPCMIsNonInterleaved,
[NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
[NSNumber numberWithBool:NO], AVLinearPCMIsBigEndianKey,
nil];
AVAssetWriterInput *assetWriterInput = [[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio
outputSettings:outputSettings]
retain];
Любая помощь по сжатию или использованию моего AVAssetWritter для записи в другой кодек вместо WAVE или CoreAudioFormat будет принята с благодарностью.
РЕДАКТИРОВАТЬ: Если есть способ пойти прямо измузыкальная библиотека для .m4a вместо .wav, это был бы идеальный подход, который я хотел бы использовать!
Спасибо, Ник
ОТВЕТ
Thisэто правильные параметры звука для .m4a, и если вы хотите, чтобы пользователь видел его как файл .mp3 или .wav, просто добавьте их в конец имени файла!
AudioChannelLayout channelLayout;
memset(&channelLayout, 0, sizeof(AudioChannelLayout));
channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
[NSNumber numberWithFloat:44100.0], AVSampleRateKey,
[NSNumber numberWithInt:2], AVNumberOfChannelsKey,
[NSNumber numberWithInt:128000], AVEncoderBitRateKey,
[NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey,
nil];