AVUrlAsset и WebVTTs
На iOS/TVOS можно ли загрузить удаленный файл.vtt с URL-адреса и использовать его в качестве дорожки субтитров с удаленным видео HLS, также загруженным с URL-адреса (в отличие от VTT, указанного в списке воспроизведения m3u8)?
псевдокод:
AVAsset* video_asset = AVAsset( "http://video.m3u8" );
AVAsset* subtitle_asset = AVAsset( "http://subtitle.vtt" );
AVPlayer player = player.playVideoWithSubtitle( video_asset, subtitle_asset );
player.play().
Редактировать:
В документах упоминается использование AVAsset для субтитров, но есть ли у кого-нибудь пример? Я могу только найти примеры, касающиеся добавления строк в качестве субтитров, а не загрузки удаленного VTT.
3 ответа
Я разместил решение здесь: /questions/29194935/subtitryi-dlya-avplayermpmovieplayercontroller/29194961#29194961 В основном вам нужно использовать AVMutableComposition
присоединиться к видео с субтитрами, а затем воспроизвести эту композицию.
Согласно документам, это возможно
AVAsset - это абстрактный класс для представления аудиовизуальных медиа, таких как видео и звуки. Каждый ресурс содержит коллекцию дорожек, которые предназначены для представления или обработки вместе, каждый из которых имеет одинаковый тип носителя, включая, но не ограничиваясь, аудио, видео, текст, закрытые титры и субтитры.
Вы должны использовать AVMutableComposition
объединить активы тогда. Вы бы объединили актив с видео с активом с субтитрами. Docs:
Вы можете вставить объекты AVAsset в объект AVMutableComposition, чтобы собрать аудиовизуальные конструкции из одного или нескольких исходных ресурсов.
Я искал какие-то решения, но не нашел, поэтому реализовал одно, чтобы оно работало. Я сделал доступным SPM с этим решением, и он довольно прост в использовании. Я назвал это SimpleSubtitles . Он поддерживает WebVTT без стилей и может быть улучшен для поддержки других форматов.