如何做流媒体缓存,即暂停时能继续缓冲?


目前手上有一项目,在线视频。通过底层解析m3u8进行播放网络视频。但是自身设定的缓存非常小,只有几分钟。而且暂停后不进行数据获取了。
现在有个需求,是想暂停时能继续下载视频。
如果视频获取是放在上层来做的话,那还有思路;但现在视频的获取是放在ffmpeg(包括解析流,获取视频,解码等。。。)中的。请问,要做这么一个缓存视频的需求有什么思路吗?目前自己不会动ffmpeg(这个是别人修改过的)

流媒体技术

見習魔法師 12 years, 7 months ago

你可以创建一个packets数组,当数组满的时候,播放器调用

av_read_pause();

以便停止缓存。

当数组有空间的时候,播放器调用

av_read_play();

来继续缓存。

与此同时,还需要一个 read 线程,以便从缓存中读取packets信息,同时解码这些packets。

需要注意一下两点:

  1. 如果用户暂定播放,那么这个 read 线程也需要暂停;
  2. 如果用户恢复播放,那么这个 read 线程也需要恢复。
GG思密达 answered 9 years, 8 months ago

Your Answer