解决方法写在最前
如果在下载ts文件时已经解密过,FFmpeg在使用m3u8文件合并时就不要带#EXT-X-KEY。
错误截图
思路
一开始我查看了很多关于这两个报错的博客,如下文章来源:https://www.toymoban.com/news/detail-406408.html
- 使用ffmpeg将m3u8文件转为mp4
- m3u8及TS文件下载解密:用FFmpeg解密合并m3u8中ts文件(二)
- ffmpeg合并m3u8 ts key文件 解决Invalid data found when processing input错误
- FFmpeg 出现错误 Invalida data found when processing input
按照这些博客的方法都试了一下,发现并没有用,还是同样Error when loading first segment和Invalid data found when processing input,甚至按照有些做法出现了更为离谱的错误。所以我就结合FFmpeg的输出稍微推理了一下过程。
一开始,我以为是ts文件路径有问题,相对路径导致FFmpeg没有读到正确的文件路径,但是在我对修改路径进行了各种尝试之后发现,相对路径的用法是没问题的。
接着,通过研究我发现所有的ts列表都读到了,但是按照报错提示是打开第一个ts文件时读错误,无法读取这个片段。
于是,我思考是不是加密的问题,我下载的这个m3u8是有加密的,如果加密出错是否会导致读ts文件出错,于是我仔细看了一下m3u8文件,在我下载时,将m3u8文件里的ts文件和key文件都下载到了本地,而我用来合并的m3u8文件是已经将ts和key的网络路径转换成本地路径的重新生成的m3u8文件。
再接着,我就发现问题所在了,我在下载ts文件时,已经将ts文件解密过了,保存在本地的ts文件已经是解密完的文件,而我在FFmpeg中想再次将这些ts文件解密,这就导致再次解密出来的ts文件数据是有问题的。自然妄图用这些有问题的ts来拼接是不行。
最终我把m3u8文件中的#EXT-X-KEY这一行删了,于是合并成功。
文章来源地址https://www.toymoban.com/news/detail-406408.html
到了这里,关于关于FFmpeg报错Error when loading first segment和Invalid data found when processing input的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!