Monibuca / plugin-hls

HLS协议的实现,提供HLS协议拉流,和HLS的写磁盘功能
MIT License
40 stars 40 forks source link

内存模式m3u8文件优先, 解决低版本升级到v3.0.4之后版本出现m3u8文件打开错误bug #7

Closed tobyzxj closed 2 years ago

tobyzxj commented 2 years ago

原来文件系统中存在stream.m3u8文件,导致在内存模式下,直接去打开stream.m3u8文件了,导致hls播放失败

langhuihui commented 2 years ago

不管是否是内存模式,实时播放的HLS的m3u8都从内存中读取了。

tobyzxj commented 2 years ago

对的,但是代码中先去从本地文件系统中读取m3u8文件就有问题,老版本不管内存模式还是写本地文件模式,都会在本地文件系统中生成一个主m3u8文件, ts会写到这个文件中。这样会导致之前只配置内存模式的用户,升级到3.0.4版本之后,会去读取存在在本地文件系统中的这个老m3u8文件(理论上删除这个文件也就没问题了,但从老版本升级过来的用户就会遇到hls无法播放的问题,我升级后调试了老半天才发现是这个问题造成的)导致播放失败。

langhuihui commented 2 years ago

你说的没错,但是不需要判断内存模式

tobyzxj commented 2 years ago

可以,那就是把打开本地的的语句直接删除好了

langhuihui commented 2 years ago

不是的,打开本地也需要的,因为有回放的需求,会保留一个完整的m3u8用来播放回放的视频

tobyzxj commented 2 years ago

我明白你的意思了,那就是要对用户请求的m3u8文件路径进行判断,是请求实时m3u8文件,还是历史以unix时间戳存储的文件,如果请求的实时m3u8文件路径,就走内存,否则走本地文件,对吧