kingslay / KSPlayer

A video player for iOS、macOS、tvOS、visionOS , based on AVPlayer and FFmpeg, support the horizontal, vertical screen. support adjust volume, brightness and seek by slide, support subtitles.
GNU General Public License v3.0
869 stars 184 forks source link

关于边下边播,缓存本地。 #724

Closed HYY666 closed 4 months ago

HYY666 commented 5 months ago

*你的功能请求是否与问题相关?请描述 * 考虑节省多刷流量和增加预缓存解决在线视频播放过程的卡顿。 边下边播在线视频,并且能将在线视频缓存在本地,如果本地有缓存优先使用本地缓存。

描述你想要的解决方案 使用AVAssetResourceLoaderDelegate可以拦截下载,自己做请求队列缓存本地。 我们的资源是m3u8的MPEG-2传输流(TS)文件。AVPlayer拿不到本地视频的视频流和音频流(普通资源如MP4使用AVPlayer可播)。尝试MEPlayer可以直接播放本地完整M3U8。 简单尝试了整个流程是可行的,很多细节没有研究,本地视频的加密,本地视频的完整校验,本地视频缺失处理,快进处理。

FaiChou commented 5 months ago

https://developer.apple.com/documentation/avfoundation/offline_playback_and_storage/using_avfoundation_to_play_and_persist_http_live_streams

HYY666 commented 5 months ago

hls应该只支持AVPlayer,AVPlayer只能播h264,16.4模拟器下还会黑屏(没有验证是否有真机黑屏)。我们现在优先选MEPlayer播放h265,相对稳定,虽然会大量消耗cpu。

kingslay commented 5 months ago

@HYY666 我对AVAssetResourceLoaderDelegate 这块不是很熟悉。你可以先搞了一个分支,把AVAssetResourceLoaderDelegate集成进来。把简单的功能给实现了。如果有遇到什么问题的话,我再参与进来一起修改。