dadaima 2015-11-20 04:03 采纳率: 0%
浏览 3893

关于videoview播放 m3u8视频 的缓存问题

最近用videoview播放m3u8在线直播视频,当把流服务器关闭后, 再重新打开播放器;播放器又重复服务器关闭前的那十多秒的视频 。在网上看了一下说m3u8格式是一段的一段的缓存并播放 ,我就想如何在关闭播放器把缓存清除了 求大神指点

  • 写回答

1条回答 默认 最新

  • GeekyGuru 2023-05-05 09:29
    关注

    VideoView播放m3u8视频时,如果网络不稳定或速度慢,可能会出现卡顿或视频无法播放的情况,这时可以考虑使用缓存来优化播放效果。

    一般来说,有两种方式可以实现缓存:

    1.利用HttpURLConnection类或OkHttp等网络框架读取m3u8文件内容并缓存到本地,然后在VideoView中设置本地视频路径进行播放。

    这种方式的实现难度较高,需要考虑m3u8的分段加载、解密和合并等问题,且对网络框架的熟练度要求较高。但是可以确保播放流畅,卡顿概率小。

    2.使用第三方库或工具,例如ExoPlayer或HlsDownloader,实现m3u8视频的缓存和播放。

    ExoPlayer是Android开源的用于播放音频和视频的库,支持大部分视频格式和网络传输协议,包括m3u8。它可以自动分段、缓存、解密和合并,无需开发者另外实现。只需要在代码中调用几个简单的API,就可以实现m3u8视频的缓存和播放,且ExoPlayer支持自定义配置,可以根据具体需求进行调整。

    HlsDownloader是一个简单的命令行工具,可以将m3u8视频缓存到本地,然后在VideoView中播放。它并不支持自动分段、解密和合并,需要开发者手动实现。但是利用HlsDownloader实现m3u8视频缓存的优点是代码简单,易于使用,适合于小型应用。

    总之,通过以上两种方式,都可以实现m3u8视频的缓存和播放。选择哪种方式,需要根据具体需求和项目情况进行考虑。

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码