关于FFmpeg报错Error when loading first segment和Invalid data found when processing input

关于FFmpeg报错Error when loading first segment和Invalid data found when processing input

解决方法写在最前

        如果在下载ts文件时已经解密过,FFmpeg在使用m3u8文件合并时就不要带#EXT-X-KEY。

错误截图

Error when loading first segment和Invalid data found when processing input
m3u8文件结构

思路

        一开始我查看了很多关于这两个报错的博客,如下

  1. 使用ffmpeg将m3u8文件转为mp4
  2. m3u8及TS文件下载解密:用FFmpeg解密合并m3u8中ts文件(二)
  3. ffmpeg合并m3u8 ts key文件 解决Invalid data found when processing input错误
  4. 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这一行删了,于是合并成功。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq1261275789/article/details/128535810