我最近发现一个比较好的解决方案,可以在移动端很流畅的将多短视频当完整的一段视频进行播放,并且可以任意位置拖动。对于类似于优酷等视频网站,他们的视频地址可能是多段的,就可以采用这种解决方案进行播放(对用户感觉是完整的一段)。
将视频切分为多段播放,有以下好处:
1)节省流量:很多用户是只看了一会开头就关闭了视频,或者暂停了视频。如果是整个视频就完整一段地址的方式,如果该用户网速很快,很可能他只看了一会,却把整个视频给缓冲完了,浪费了服务器流量。
2)防盗链:如果只有一段地址,用户很容易获得到完整的视频文件;如果是多段地址,增加了盗链难度。
3)服务器负载均衡:多段地址可以更有利于负载均衡。
多段合并部分接口函数,如下:
static int ykseg_probe(AVProbeData *probe)
static int open_next_file(AVFormatContext *fmtctx)
static int seek_pos(AVFormatContext *fmtctx, int stream, int64_t ts, int flags)
多段视频合并播放示例程序下载地址:http://www.dolit.cn/download/f/segPlayer-1.0.rar
测试方法:
程序在android手机下安装后打开,需要输入的地址是一个类似于这样的地址: http://www.dolit.cn:8098/ykseg/1.ykseg (其实这是一个记事本,您
如果需要测试自己的多段视频,可以下载下来仿照这种方式做一个测试的ykseg文件,将地址交给播放器)。
这个1.ykseg里面的示例内容如下:
#YKSEG
url 'http://www.dolit.cn:8098/ykseg/1.flv'
duration 380
url 'http://www.dolit.cn:8098/ykseg/2.flv'
duration 403
url 'http://www.dolit.cn:8098/ykseg/3.flv'
duration 398
url 'http://www.dolit.cn:8098/ykseg/4.flv'
duration 398
url 'http://www.dolit.cn:8098/ykseg/5.flv'
duration 415
url 'http://www.dolit.cn:8098/ykseg/6.flv'
duration 366
url 'http://www.dolit.cn:8098/ykseg/7.flv'
duration 374
url 'http://www.dolit.cn:8098/ykseg/8.flv'
duration 374
其中url后面是每一段的地址,duration是这一段的时长为380s。这样一个格式的记事本交给播放器就可以测试播放了。