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 без стилей и может быть улучшен для поддержки других форматов.

Подробнее:https://github.com/peantunes/SimpleSubtitles

Другие вопросы по тегам