项目需要用循环调用接口的方法实现播放视频弹幕(不要问为什么,领导让的),新手写的不太好,只是简单的实现总结一下。
先推荐两个库:
开源弹幕库:github.com/unash/BarrageRenderer
一个不错的开源播放器:github.com/guowilling/SRVideoPlayer
因为项目做的是直播,没有关联弹幕和播放时间,但要实现最基本的弹幕效果(比如后进来的人看不到他进来之前的弹幕)主要是在接口上做的处理。接口中有两个重要参数:一个是开始播放视频的当前时间戳,另一个是最后一条弹幕的id,这两个参数保证了在循环调用接口时显示在屏幕上的弹幕的正常逻辑。
说几个要注意的:
播放器的初始化写在了按钮的响应事件里,传入需要的参数和链接,目前为空,为了避免崩溃,弹幕用的是测试数据。
正式的是我封装的一个请求方法,根据接口来做处理的:
如果是push进去的一个播放器来播放视频和弹幕,因为是定时器循环调用接口,退出时如果不销毁定时去,当前视图也不会dealloc,我是在前一个控制器中,把写成属性的定时器销毁:
-(void)viewDidDisappear:(BOOL)animated{
[self.player.rendererstop];
[self.player.danmuTimerinvalidate];
//测试定时器
[self.player.timerinvalidate];
}
最后附上demo链接:
github.com/hsshuaigit/HSRepository
忘了效果图: