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视频的缓存和播放。选择哪种方式,需要根据具体需求和项目情况进行考虑。

    评论

报告相同问题?

悬赏问题

  • ¥15 一道python难题2
  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备