抖音在线播放(抖音在线播放量会增加吗)


一. 文档大纲

  • 效果预览
  • 功能说明
  • 工程说明
  • 无限滑动技术实现
  • 边播边下载技术实现
  • 参考资料

Demo地址:MBVideoPlayer

二. 效果预览

工程效果预览如下图所示

android 仿抖音播放列表 抖音播放器模板_ide

preview.gif

三. 功能说明

工程实现了三方面的功能

  • 基于UIScrollView的无限滑动功能

在下拉过程中,到底部的时候,加载新的数据,若数据无限,则页面可以无限滑动下去。

  • 在线视频的边播放边下载功能

视频播放过程中,会自动下载到本地沙盒中。支持断点续传功能。

  • 离线播放功能

如果本地存在播放的视频数据,则优先播放本地的数据,所以在离线状态下也可以进行视频播放。

四. 工程说明

工程结构如下所示:

抖音在线播放android 仿抖音播放列表 抖音播放器模板_ide_02

project.png

说明如下:

五. 无限滑动技术实现

使用实现无限滑动,基于具体的应用场景,有不同的实现方式。这里列举两种应用场景的使用方式。

1.显示的View的数目固定的情况下(这种方式不在本工程中)

当显示View抖音在线播放的数目固定的时候,其实UIScollView上面只需要添加三个View就能显示所有的View,无需为所有的View都添加一个独立的View。实现的原理如下:

  • 初始化scrollView的时候,设置3个View,添加到scrollView中,并通过设置contentoffset的属性,让中间的view显示到界面上。
  • 每次滑动的时候,在方法种,判断是否滑动的下一个View,如果滑动到下一个View的话,则继续设置scrollView的contentOffset,让scrollView复位,始终让中间那个View显示。
  • 复位ScrollView之后,设置3个View的位置,如果是UIImageView的话,其实直接修改它们的image的值就可以了。

代码如下所示:

2.显示的view的数目不固定,通过上拉到底进行数据加载的场景

当要显示的View的数目不固定的时候,使用上面那种方式对于数据加载时机的判断就会相对比较复杂,所以考虑使用一个比较简单的方式,第一种方式可以把UIScrollView想成一个闭环,3个View无限循环。为了实现上滑到底加载,我们可以考虑把这个闭环打开,还是3个View。但是3个view的整体位置,从滑动第二个view开始到倒数第二个view之间,相对位置不变,整体随着滑动向下滑。整体流程,如下草图所示:

android 仿抖音播放列表 抖音播放器模板_数据_03

unlimitscroll.png

示例代码如下所示

六. 边播边下载技术实现

工程中使用来实现视频的播放,在视频播放过程中,会经历如下过程:

android 仿抖音播放列表 抖音播放器模板_视频播放_04

avplayerprocess.png

这些过程都是系统的类帮我们完成的。如果我们要实现边下边播,就需要在数据请求的过程中,设置一个代理,截取请求,然后转发,收到服务器数据返回后,代理保存数据到本地,然后再把数据返回到播放器那边,如下所示:

android 仿抖音播放列表 抖音播放器模板_android 仿抖音播放列表_05

avplayerprocess.png

而中的就是负责数据加载的,我们只要遵守它的协议,就能设置一个代理。加载数据的时候,都会调用到协议方法,我们通过这个方法取获取到请求,并转发到网络访问模块。具体流程可以分为以下步骤:

1.修改视频的URL的scheme为系统无法识别的scheme,这样发出的请求才会跑到我们的代理。

2.设置我们的代理。

3.转发请求

4.把请求返回给播放器

七. 参考资料

  • https://www.jianshu.com/p/0d4588a7540f
  • https://github.com/doubleYang1020/DYVideoListPlayV2


转载请说明出处 内容投诉内容投诉
九幽软件 » 抖音在线播放(抖音在线播放量会增加吗)