10 防录屏跑马灯
此篇是以点播2.15.0版本为示例讲解的跑马灯功能集成文档。跑马灯是视频防录屏策略中的一种,可以实现设定文字在视频上不规则运动,用于视频的防盗溯源。
其中包含了以下三个类:
PLVMarqueeView
跑马灯view,用于显示跑马灯的视图PLVMarqueeModel
跑马灯model,用于描述跑马灯样式和动画的定义PLVMarqueeAnimationManager
跑马灯动画管理,负责给跑马灯提供动画
跑马灯的使用详见demo中PLVCourseDetailController
的使用示例。
10.1 跑马灯的使用
10.1.1 添加跑马灯
把PLVMarqueeView
添加到任意需要显示跑马灯的地方,例如添加到 PLVVodSkinPlayerController
中的 maskView 上(demo中已经添加)。
- (void)viewDidLoad {
[super viewDidLoad];
。。。。。。
// 设置新版跑马灯(2.0)
self.marqueeView = [[PLVMarqueeView alloc]init];
self.marqueeView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
self.marqueeView.frame = self.maskView.bounds;
[self.maskView addSubview:self.marqueeView];
。。。。。。
}
10.1.2 设置跑马灯样式和动画定义
使用 PLVMarqueeModel 设置跑马灯样式
__weak typeof(self) weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
PLVMarqueeModel *marqueeModel = [[PLVMarqueeModel alloc]init];
marqueeModel.style = PLVMarqueeModelStyleRoll;
marqueeModel.content = @"Polyv跑马灯";
marqueeModel.fontSize = 30;
marqueeModel.fontColor = @"#000000";
marqueeModel.outline = YES;
marqueeModel.outlineColor = @"#000000";
marqueeModel.shadowAlpha = 1;
marqueeModel.shadowBlurRadius = 4;
marqueeModel.shadowOffsetX = 2;
marqueeModel.shadowOffsetY = 2;
marqueeModel.alpha = 1;
marqueeModel.tweenTime = 1;
marqueeModel.interval = 5;
marqueeModel.lifeTime = 3;
marqueeModel.speed = 20;
[weakSelf.player.marqueeView setPLVMarqueeModel:marqueeModel];
weakSelf.player.marquee = nil; //移除旧版本的跑马灯
});
10.1.3 控制跑马灯
监听播放器状态回调,控制跑马灯启动、暂停和停止
__weak typeof (self) weakSelf = self;
self.player.playbackStateHandler = ^(PLVVodPlayerViewController *player) {
//跑马灯的控制
if (player.playbackState == PLVVodPlaybackStatePlaying) {
[weakSelf.player.marqueeView start];
}else if (player.playbackState == PLVVodPlaybackStatePaused) {
[weakSelf.player.marqueeView pause];
}else if (player.playbackState == PLVVodPlaybackStateStopped) {
[weakSelf.player.marqueeView stop];
}
};
10.2 跑马灯支持的样式和动画定义
使用PLVMarqueeModel
来定义跑马灯样式,其属性如下所示:
#pragma mark - 内容属性
/// 跑马灯内容,默认”PLV跑马灯“
@property (nonatomic, strong) NSString *content;
/// 字体大小,默认30
@property (nonatomic, assign) NSUInteger fontSize;
/// 字体颜色,默认#000000
@property (nonatomic, strong) NSString *fontColor;
/// 自定义播放错误提示信息(跑马灯校验失败)
@property (nonatomic, strong) NSString *errorMessage;
#pragma mark - 描边属性
/// 是否描边,默认NO
@property (nonatomic, assign) BOOL outline;
/// 描边颜色,默认#000000
@property (nonatomic, strong) NSString *outlineColor;
/// 阴影透明度,(范围:0~1),默认1
@property (nonatomic, assign) float shadowAlpha;
/// 阴影半径,默认4
@property (nonatomic, assign) NSUInteger shadowBlurRadius;
/// 阴影水平偏移量,默认2
@property (nonatomic, assign) NSUInteger shadowOffsetX;
/// 描边垂直偏移量.默认2
@property (nonatomic, assign) NSUInteger shadowOffsetY;
#pragma mark - 动画相关属性
/// 文本透明度(范围:0~1),默认1
@property (nonatomic, assign) float alpha;
/// 文本渐隐渐现时间 (单位:秒),默认1,有效样式:Flash、PartFlash、DoubleFlash、RollFade
@property (nonatomic, assign) NSUInteger tweenTime;
/// 文本隐藏间隔时间 (单位:秒),默认5,有效样式:Flash、PartFlash、DoubleFlash
@property (nonatomic, assign) NSUInteger interval;
/// 文本显示时间 (单位:秒),默认3,有效样式:Flash、PartFlash、DoubleFlash
@property (nonatomic, assign) NSUInteger lifeTime;
/// 文字移动指定像素所需时间/显示时间(单位:秒),默认20,有效样式:Roll、RollFade、PartRoll、DoubleRoll
@property (nonatomic, assign) NSUInteger speed;
/// 暂停跑马灯的时候,是否隐藏。默认为YES
@property (nonatomic, assign) BOOL isHiddenWhenPause;
/// 跑马灯运行的时候,是否一直完整显示跑马灯。为YES时interval不生效。默认为NO
@property (nonatomic, assign) BOOL isAlwaysShowWhenRun;
使用PLVMarqueeModelStyle
来定义跑马灯的运动类型,其枚举如下:
typedef NS_ENUM(NSUInteger, PLVMarqueeModelStyle) {
/// 滚动(自屏幕右方至左方一直滚动)
PLVMarqueeModelStyleRoll = 1,
/// 闪烁(屏幕内随机位置闪烁)
PLVMarqueeModelStyleFlash,
/// 滚动+闪烁(自屏幕右方至左方一直滚动,渐隐渐现)
PLVMarqueeModelStyleRollFade,
/// 局部滚动(上下15%的视频区域之间滚动)
PLVMarqueeModelStylePartRoll,
/// 局部闪烁(上下15%的视频区域随机闪烁文字)
PLVMarqueeModelStylePartFlash,
/// 滚动(自屏幕右方至左方一直滚动)双跑马灯
PLVMarqueeModelStyleDoubleRoll,
/// 闪烁(屏幕内随机位置闪烁))双跑马灯
PLVMarqueeModelStyleDoubleFlash,
};
Last updated