Я пытаюсь добавить метки разделов (текст + изображения) к существующему видео в iOS. Читая их тривиальным легко с встроенными функциями:Добавить информацию главы в существующее видео с AVFoundation
NSLocale * locale = [chapterLocalications lastObject];
NSLog(@"Locale: %@", [locale localeIdentifier]);
NSArray *keys = @[AVMetadataCommonKeyTitle, AVMetadataCommonKeyArtwork];
NSArray *chapters = [asset chapterMetadataGroupsWithTitleLocale:locale containingItemsWithCommonKeys:keys];
for (AVTimedMetadataGroup * metadataGroup in chapters) {
NSArray * items = metadataGroup.items;
CMTimeRange timeRange = metadataGroup.timeRange;
NSLog(@"time: %@", CMTimeCopyDescription(NULL, timeRange.start));
for (AVMetadataItem * metadataItem in items) {
NSLog(@"key: %@", metadataItem.commonKey);
NSLog(@"value: %@", metadataItem.value);
}
}
До сих пор я не нашел способ записи приуроченных метаданных в файл. Я могу легко написать нормальные метаданные (например, текст заголовка или изображения), используя AVAssetExportSession и AVMutableMetadataItem. Существует AVMutableTimedMetadataGroup, но, к сожалению, не существует способа записать их на дорожку.
Мое настоящее мышление заключается в том, что мне нужно записать информацию о главе во временный файл, а затем использовать AVMutableComposition для объединения трека раздела в существующее видео. Конечно, это оставляет проблему написания информации главы. Я мог бы написать контейнер MP4 вручную или с помощью сторонней библиотеки (чего я бы хотел избежать), или я мог бы попытаться убедить AVAssetWriter каким-то образом записать временные дорожки метаданных, хотя это и не документировано. И тогда я до сих пор не знаю, сможет ли AVMutableComposition объединить треки разделов.
Кто-нибудь нашел способ сделать это, прежде чем сойти с ума? Я испытываю желание отказаться от этой идеи всей главы и просто сохранить файл приложения, который ссылается на видео.
Это именно то, что я искал, хотя он использует API доступны только с прошивкой 8+ и OSX 10,10 + ... Это похоже, единственный способ в более ранних версиях - построить дорожки в памяти, создав буферы выборки вручную. Демоверсия [avsubtitlewriterOSX] (https://developer.apple.com/library/mac/samplecode/avsubtitleswriterOSX/Introduction/Intro.html) показывает, как, хотя на данный момент я только что создал формат приложения. По крайней мере, я не пропустил ничего очевидного! – user1387