2011-12-14 3 views
4

Я работаю над приложением, которое необходимо модифицировать метаданные аудиофайлов. Я играл с официальной демонстрацией Apple AVReaderWriterOSX. Я попытался установить метаданные AVAssetWriterInput и AVAssetWriter, но я все еще не могу заставить его работать, чтобы записывать метаданные в выходной файл. У кого-нибудь есть примеры для этого?Использование AVFoundation для изменения звуковых метаданных

Заранее спасибо.

ответ

5

Я думаю, что нашел решение. Самое простое решение - использовать AVAssetExportSession.

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] 
    initWithAsset:asset presetName:AVAssetExportPresetMediumQuality]; 
exportSession.outputURL = ...; 
exportSession.outputFileType = AVFileTypeQuickTimeMovie; 
exportSession.timeRange = CMTimeRangeMake(startTime, duration); 
exportSession.metadata = ...; 
[exportSession exportAsynchronouslyWithCompletionHandler:handlerBlock]; 
+0

Вы подтвердили, что это не перекодирует выходной файл? –

+3

Это преобразование без потерь, если вы используете пресет «AVAssetExportPresetPassthrough». – nonamelive

+0

Не уверен, что это по-прежнему имеет место с сентября 2016 года для AVAssetWriter, но это (по-прежнему) давняя ошибка в AVFoundation для AVCaptureAudioFileOutput, которая также обладает свойством метаданных, но записывается только название. Другие ключи, такие как название альбома и имя исполнителя, не записываются. Чтобы обойти это, вам нужно записать/записать во временный файл, а затем создать AVAssetExportSession (как указано выше), чтобы добавить во все метаданные. Экспорт только для добавления метаданных, когда он должен поддерживаться во время первоначальной записи. Такие отходы. – Dalmazio