美文网首页
iOS实现简单的音视频播放器

iOS实现简单的音视频播放器

作者: is_E | 来源:发表于2020-08-16 17:26 被阅读0次

    最近封装了一个音视频播放器,拷贝进项目即能使用,大致实现了以下功能:

    -本地网络音视频播放(无网自动播放已缓存视频)

    -屏幕滑动调节进度、亮度、音量(模拟器中音量亮度无法显示)

    -倍速播放

    -全屏状态画面(自适应、铺满)调节

    -竖播视频适配(竖播视频全屏为竖屏)

    -屏幕发生物理旋转时调整全屏状态

    -在wifi条件下自动缓存网络视频

    -断点续播功能

    -自定义播放结束页面及音频播放界面

    -长按加速视频

    倍速播放 滑动调节 断点续播

    具体实现源码在以下链接中:

    https://github.com/isHYE/HYPlayerDemo

    调用方法:

    将项目中HYPlayer文件夹拖拽进自己项目中(项目为swift5编写,部分语法需要自行适配)。

    在自己controller中实例化“HYPlayerCommonView”

    初始化播放器

    初始化|切换 音视频则调用 updateCurrentPlayer 方法(具体方式查看demo)

    更新播放内容

    HYPlayerCommonConfig为需要传入播放器的唯一参数(可根据自己需求传参),具体配置如下:

    HYPlayer配置

    播放器 缓存|播放状态 相关则会通过代理方法进行回调,如有需要可进行实现:

    变化回调

    最后在controller的viewWillDisappear中调用 videoView.dealToDisappear()以销毁播放器。


    部分实现说明:

    1.视频全屏实现:

    通过AVAsset获取视频尺寸  ->  根据视频宽高判断为横播视频还是竖播视频  ->  根据竖播横播旋转屏幕  ->  全屏时从baseView移除播放器并添加至UIApplication.shared.windows,修改AVPlayerLayer尺寸

    获取视频尺寸 旋转屏幕

    2.屏幕快捷操作:

    通过重写touchesBegan、touchesMoved、touchesEnded监听用户滑动手势  ->  记录滑动起始点及之后活动轨迹判断所处功能区域  ->  对播放器做出相应调整

    - AVPlayer.seek ...调整播放进度

    - UIScreen.main.brightness ... 调整屏幕亮度

    - MPVolumeView -> UISlider.setValue ...调整音量

    快捷操作类型 音量调整对象

    部分需要注意的点:

    视频全屏锁定时需要在controller层修改 shouldAutorotate 属性值来限制屏幕转动(通过回调 fullScreenLock() 修改isRollEnable)

    ️注意:在controller被UINavigationController或UITabBarController嵌套式,在这两个基础控制器也需要重写以下属性

    屏幕转动限制

    ️注意:通过判断为退出当前页面还是前往二级页面分别调用HYPlayer的dealToDisappear与playerPause。

    dealToDisappear为销毁播放器,调用后播放器不可再播放视频。

    playerPause为暂停播放器,可通过playerPlay继续播饭。


    附加功能:

    添加缓存列表用于主动缓存视频以及清除已缓存视频。

    缓存列表

    播放器目前还有很多待完善的功能,大家如有什么建议或希望添加的功能也可留言作者,功能会持续更新!

    demo链接:https://github.com/isHYE/HYPlayerDemo

    相关文章

      网友评论

          本文标题:iOS实现简单的音视频播放器

          本文链接:https://www.haomeiwen.com/subject/fzotjktx.html