Mar*_*bri 7 objective-c ios avplayer ios6
我能够AVPlayer在iOS 6上显示字幕轨道,但我无法自定义它.它只显示相同的样式(小字体,白色).
这是我选择副标题的方法:
AVMediaSelectionGroup *subtitle = [asset mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicLegible];
[self.videoPlayer.currentItem selectMediaOption:subtitle.options[0] inMediaSelectionGroup: subtitle];
Run Code Online (Sandbox Code Playgroud)
我是如何尝试自定义字幕的:
AVTextStyleRule *rule = [[AVTextStyleRule alloc] initWithTextMarkupAttributes:@{
(id)kCMTextMarkupAttribute_ForegroundColorARGB : @[ @1, @1, @0, @0 ],
(id) kCMTextMarkupAttribute_ItalicStyle : @(YES)}];
self.videoPlayer.currentItem.textStyleRules = @[rule];
Run Code Online (Sandbox Code Playgroud)
无论我在选择字幕之前还是之后都放了这个片段,结果都是一样的.
在AVPlayer与本地(文件)的URL(一个MP4文件)创建的.
有关如何做到这一点的任何想法?
我在Apple开发者论坛上问了这个问题,我从Apple员工那里得到了答案:
该
textStyleRules属性仅适用于WebVTT内容.您的本地文件可能带有TX3G格式的字幕.你是对的,文档没有提到这个限制,所以你应该提交一个bug,以便我们可以更新我们的文档.
所以,我会打开一个雷达,要求他们更新文档,如果有人想欺骗它,我会在这里发布它的号码.
编辑:
我创建了rdar:// 14923673,要求Apple更新有关此当前限制的文档.我还创建了rdar:// 14923755,要求他们为TX3G格式的字幕提供支持.
如果你受到这个问题的影响,请欺骗他们.
我找到了正确修改文本前景色和背景的解决方法。只需将样式分离到多个 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]
}
Run Code Online (Sandbox Code Playgroud)
请不要问我为什么,该解决方案来自尝试和错误 XD
| 归档时间: |
|
| 查看次数: |
5000 次 |
| 最近记录: |