最近切片的时候,偶尔会遇到生成的m3u8文件里最后一行没有#EXT-X-ENDLIST,这就导致了点击播放的时候会从默认的倒数第三个切片文件开始播放,并不会从第一个切片开始播放。同时还会生成一个xxx.m3u8.tmp的临时文件,这个文件就是正常的m3u8文件。
关键在于,这是偶尔会出现的问题,而且同一个视频文件用同一段代码切片,可能会出现这个问题,也可能不出现这个问题。 这该怎么办? |
加个中间件,检测倒数第二行,没有endlist就强制添加 |
实际上会生成1个xxx.m3u8文件和1个xxx.m3u8.tmp文件,xxx.m3u8这个文件不仅没有EXT-X-ENDLIST,而且还会缺失一部分.ts文件。 xxx.m3u8.tmp这个文件内容就是正确的,如果把xxx.m3u8删除,再把xxx.m3u8.tmp改成xxx.m3u8就没问题了。 可是这也得手动操作,有点麻烦 |
脚本后面补一行mv命令就好了呀 |
根本原因是切片进程异常终止,journalctl -r -n 100 看一下有没有报错,什么原因导致的。 |
主要它是偶尔出现,我都怀疑是不是ffmpeg有bug了。 你是说在切片脚本里判断下有没有xxx.m3u8.tmp这个文件存在,如果有就删除xxx.m3u8然后改名xxx.m3u8.tmp? |
额,,我是在windows上切的, 看起来切片是完成了的,就是生成playlist.m3u8那里出了点问题,临时文件.m3u8.tmp生成了且数据正确,但是按理说应该删除临时文件,并且把临时文件内容复制到正式文件.m3u8,结果却是临时文件没删除,正式文件不完整 |