2014-09-14 2 views
1

Я пытаюсь добавить метки разделов (текст + изображения) к существующему видео в 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 объединить треки разделов.

Кто-нибудь нашел способ сделать это, прежде чем сойти с ума? Я испытываю желание отказаться от этой идеи всей главы и просто сохранить файл приложения, который ссылается на видео.

ответ

1

Существует сессия от WWDC 2014 от Apple под названием «Закрепление метаданных в аудиовизуальных медиа». Проверьте видео здесь: https://developer.apple.com/videos/wwdc/2014/

Кроме того, проверьте пример кода под названием AVTimedAnnotationWriter

+0

Это именно то, что я искал, хотя он использует API доступны только с прошивкой 8+ и OSX 10,10 + ... Это похоже, единственный способ в более ранних версиях - построить дорожки в памяти, создав буферы выборки вручную. Демоверсия [avsubtitlewriterOSX] (https://developer.apple.com/library/mac/samplecode/avsubtitleswriterOSX/Introduction/Intro.html) показывает, как, хотя на данный момент я только что создал формат приложения. По крайней мере, я не пропустил ничего очевидного! – user1387

Смежные вопросы