M3U8视频下载器AI开发过程,测试错误,功能进化。

本文摘要1、刚开始视频下载器就看不到视频资源,然后通过多轮测试终于可以下载了。2、抖音等平台反爬虫就下载使用,即下载=保存(ChromeDriver 是 Google 官方提供的浏览器自动化驱动程序,作为 Selenium WebDriver 与 Chrome 浏览器之间的通信桥梁,用于模拟用户操作浏览器)3、然后就是下载完成之后合并报错只合并了视频中的插播的广告正片没有合并。,FFmpeg转换失败:le...

1、刚开始视频下载器就看不到视频资源,然后通过多轮测试终于可以下载了。

2、抖音等平台反爬虫就下载使用,即下载=保存(ChromeDriver 是 Google 官方提供的浏览器自动化驱动程序,作为 Selenium WebDriver 与 Chrome 浏览器之间的通信桥梁,用于模拟用户操作浏览器)

3、然后就是下载完成之后合并报错只合并了视频中的插播的广告正片没有合并。,

FFmpeg转换失败:
le-libopus-
-enable-libspeex-enable-libvorbis-enable-librubberband
libavutil
57.22.100/ 57.22.100
libavcodec
59.21.103/59.21.103
libavformat
59.17.102/59.17.102
libavdevice
59.5.100/59.5.100
libavfilter
8.27.100/ 8.27.100
libswscale

  1. 5.100/ 6. 5.100
    libswresample 4. 4.100/4. 4.100
    libpostproc56.4.100/56.4.100 D:\桌面\sp\要下载的视频.ts: Invalid data found when processing
    input

这个错误说明 FFmpeg 试图直接读取 合并后的 TS 文件 时发现数据不合法。问题很可能是:​跳过了广告 TS 后,合并的 TS 流在断点处缺少关键帧(keyframe),导致 FFmpeg 无法识别为合法 TS 流​。

更本质的原因是:TS 流在 DISCONTINUITY 处有编码上下文重置,跳过中间片段后,下一个正片的第一个 TS 片段可能没有完整的编码参数集(SPS/PPS),FFmpeg 无法解码。

修复方案​:不用直接 cat 合并二进制的方式,改用 FFmpeg concat demuxer 来合并 TS,FFmpeg 会正确处理断点处的编码上下文

你说的对,确实是跳过广告导致的。当用 cat 方式把 TS 二进制拼接后,​跳过的广告位置处缺少关键帧(keyframe)和编码参数(SPS/PPS)​,FFmpeg 读到的就是非法数据 → Invalid data found when processing input

修复内容(两处改进)

1. 合并阶段​:不再用 cat 拼接,改用 FFmpeg concat demuxer 来合并

  • 生成 concat_list.txt 文件列表,让 FFmpeg 自己处理片段衔接
  • FFmpeg 会自动在断点处重新注入编码参数,保证流合法
  • 如果 FFmpeg concat 失败,自动回退到二进制拼接(兼容性保护)

2. 转码阶段​:给 FFmpeg 增加容错参数

  • -err_detect ignore_err — 忽略部分损坏数据继续处理
  • -fflags +genpts+igndts — 重新生成时间戳,忽略损坏的 DTS
  • 流复制失败后自动切换到重编码模式

结果无法解密,只能跳广告下载就不合并MP4,点M3U8文件来播放咯

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~