P2P直播SDK实现文件断点续传
P2P直播SDK,从1.40.0.38版本起,支持文件的断点续传机制。为了实现文件续传,播放端增加了FileGetRequest2() 和 FilePutRequest2() 这2个API。新增的 FileGetRequest2() 和 FilePutRequest2() 与以前的 FileGetRequest() 和 FilePutRequest() 相比,多了 iOffset 和 iSize 两个参数。其中 iOffset 可以指定从某个位置开始传输文件;而 iSize 可以指定传输的数据长度(而不是总是传输到文件末尾),当iSize传0时,指传输到文件的末尾。
我们以 FileGetRequest2() 为例,说明一下怎么实现文件的断点续传:
- 例如,我们要下载的文件名为 test.mp4,则我们在文件名的后面加上一个后缀 ._temp 作为临时保存文件的文件名,也就是 test.mp4._temp。下载的文件先保存到 test.mp4._temp ,等整个文件下载完成之后,再把 test.mp4._temp 改名为 test.mp4
- 如果是首次下载文件 test.mp4,也就是 test.mp4._temp 还没有创建,则我们调用 FileGetRequest2() 时,iOffset 和 iSize 都传入0,也就是从文件头开始下载,下载的长度是直到文件的末尾。
- 如果文件 test.mp4 以前下载过,但是中断了,那么 test.mp4._temp 已经创建了,则我们读取文件 test.mp4._temp 的长度。并把 test.mp4._temp 的长度传入到 FileGetRequest2() 的 iOffset 参数(意思是从 test.mp4._temp 末尾位置接着传输),而 FileGetRequest2() 的 iSize 参数传入0 (意思是传输到整个文件的末尾)。
- 每次下载文件 test.mp4 时,如果 “FileFinish”事件上报了,说明文件传输结束了,就可以把 test.mp4._temp 改名为 test.mp4,断点续传完成了。