Вопрос по ios6, avplayer, objective-c, ios – Настройка субтитров с помощью AVPlayer

7

Я смог отобразить дорожку субтитров сAVPlayer на iOS 6, но я не могу его настроить. Это просто показывает тот же стиль (маленький размер шрифта, в белом цвете).

Вот'Как я выбираю субтитры:

AVMediaSelectionGroup *subtitle = [asset mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicLegible];
[self.videoPlayer.currentItem selectMediaOption:subtitle.options[0] inMediaSelectionGroup: subtitle];

И как яЯ пытаюсь настроить субтитры:

AVTextStyleRule *rule = [[AVTextStyleRule alloc] initWithTextMarkupAttributes:@{
                         (id)kCMTextMarkupAttribute_ForegroundColorARGB : @[ @1, @1, @0, @0 ],
                         (id) kCMTextMarkupAttribute_ItalicStyle : @(YES)}];

self.videoPlayer.currentItem.textStyleRules = @[rule];

Независимо от того, поместил ли я этот фрагмент до или после выбора субтитров, результат будет одинаковым.

AVPlayer создается с локальным (файловым) URL-адресом (файл mp4).

Есть мысли о том, как это сделать?

Спасибо за предложение, но оно нет работа. Marcelo Fabri
это н'Исходя из опыта, но не могли бы вы попытаться создать два отдельных правила, задать один атрибут для каждого правила, а затем добавить оба правила в массив правил для установления? john.k.doe

Ваш Ответ

2   ответа
8

Я задал этот вопрос на форумах разработчиков Apple, и я получилответ от сотрудника Apple:

textStyleRules свойство относится только к содержимому WebVTT. Ваш локальный файл, вероятно, содержит субтитры в формате TX3G.

Вы'верно, что документация неНе говоря уже об этом ограничении, вы должны сообщить об ошибке, чтобы мы могли обновить нашу документацию.

Так что я'открою радар, чтобы попросить обновить документацию, а яЯ опубликую его номер здесь, если кто-то хочет обмануть его.

РЕДАКТИРОВАТЬ:

я создалrdar: // 14923673 попросить Apple обновить документы об этом действующем ограничении. Я также создалrdar: // 14923755 попросить их обеспечить поддержку субтитров в формате TX3G.

Пожалуйста, обманите их, если вызатронуты этой проблемой.

У меня нетЯ не смог этого сделать. Я'постараюсь сделать это позже сегодня. Я намереваюсь открыть 2 радара: один о документах и другой о предоставлении этой функции. Marcelo Fabri
Готово. Смотрите мои изменения в ответе. Marcelo Fabri
Я хочу дублировать! Позволять's оказывает некоторое давление на них. :) allprog
Согласен. Тот'почему яЯ открою два радара: один попросит уточнить в документации, что этот метод поддерживает только веб-ресурсы, а другой - чтобы он был совместим с локальными. Marcelo Fabri
Кажется противоречащим, что они поддерживают его для веб-ресурсов, а не для локальных, учитывая, что они все равно могут визуализировать его. Я'Я думаю, они могли бы использовать тот же код для добавления текста. allprog
1

Я нашел обходной путь для правильного изменения цвета текста и фона. Просто разделите стили на несколько AVTextStyleRule.

func initSubtitleStyle() {
    let textStyle:AVTextStyleRule = AVTextStyleRule(textMarkupAttributes: [
        kCMTextMarkupAttribute_CharacterBackgroundColorARGB as String: [0.2,0.3,0.0,0.3]
        ])!


    let textStyle1:AVTextStyleRule = AVTextStyleRule(textMarkupAttributes: [
        kCMTextMarkupAttribute_ForegroundColorARGB as String: [0.2,0.8,0.4,0.0]
        ])!

    let textStyle2:AVTextStyleRule = AVTextStyleRule(textMarkupAttributes: [
        kCMTextMarkupAttribute_BaseFontSizePercentageRelativeToVideoHeight as String: 20,
        kCMTextMarkupAttribute_CharacterEdgeStyle as String: kCMTextMarkupCharacterEdgeStyle_None
        ])!

    player.currentItem?.textStyleRules = [textStyle, textStyle1, textStyle2]
}

пожалуйста, не спрашивайте меня, почему, это решение пришло от попытки и ошибки XD

Похожие вопросы