Skip to content

feat(douyin): 原画画质优先抓取HEVC#1440

Open
SuperKenVery wants to merge 1 commit into
ihmily:mainfrom
SuperKenVery:feat/douyin_hevc
Open

feat(douyin): 原画画质优先抓取HEVC#1440
SuperKenVery wants to merge 1 commit into
ihmily:mainfrom
SuperKenVery:feat/douyin_hevc

Conversation

@SuperKenVery

@SuperKenVery SuperKenVery commented Jun 15, 2026

Copy link
Copy Markdown

抖音原画画质优先抓取 HEVC

🔍 描述(Description)

请描述这个PR做了什么/为什么这些更改是必要的:

  • 抖音网页端返回的常规 hls_pull_url_map / flv_pull_url 里通常只包含 H.264 清晰度流,但直播页 HTML 内的 stream_data 还可能包含一个无清晰度后缀的 .flv 原始流。
  • 新增从直播页 HTML 提取无后缀 .flv 原始流的逻辑,并过滤 only_audio=1 的音频流。
  • 当用户选择 原画 且成功提取到该原始流时,优先将其作为抖音 flv_url 使用;如果提取不到,则保持原有 H.264 流选择逻辑不变。
  • 新增 scripts/debug_douyin_streams.py,用于调试抖音返回的清晰度、编码、stream_datahls_pull_url_mapflv_pull_url 和 HEVC 候选地址,便于后续排查编码选择问题。

Closes #943 #947 #1353

📝 类型(Type of Change)

这个PR引入了哪种类型的更改?(请勾选所有适用的选项)

  • 修复Bug
  • 新功能
  • 代码风格更新(格式化,局部变量)
  • 重构(改进代码结构)
  • 构建相关更改(依赖项,构建脚本等)
  • 其他:请描述

🏗️ 测试(Testing)

请描述您已经进行的测试:

  • 使用抖音直播间页面 HTML 验证可以提取无后缀 .flv 候选地址,例如:.../stream-<id>.flv
  • 使用 ffprobe 验证该候选地址的视频流为 hevc,音频流为 aac
  • 使用本项目录制生成的 .ts 样本验证文件内包含 hevc 视频流和 aac 音频流;macOS Quick Look 可能只播放音频,但 ffprobe 可正确识别视频流。
  • 运行语法检查:
.venv/bin/python -m py_compile src/spider.py src/stream.py scripts/debug_douyin_streams.py

如果适用,请提供测试更改的说明:

  1. config.ini 中保持抖音录制清晰度为 原画
  2. 启动抖音直播录制。
  3. 对录制文件运行:
ffprobe -v error -show_entries stream=codec_type,codec_name,width,height,r_frame_rate -of json <录制文件>
  1. 如果直播页返回 HEVC 原始流,应能看到 codec_namehevc 的视频流;如果未返回 HEVC 原始流,则自动回退到原有流选择逻辑。

也可以使用调试脚本检查当前直播间返回的流信息:

python scripts/debug_douyin_streams.py <抖音直播间URL> --profile project

📋 检查清单(Checklist)

在您创建这个PR之前,请确保以下所有框都被勾选,方法是在每个框中放置一个x

  • 贡献指南:仓库中未发现 CONTRIBUTING.md,已按现有代码风格和项目结构核对
  • 我的更改没有产生新的警告;已通过 Python 语法检查
  • 我已经添加了覆盖我更改的调试脚本,并完成手动录制/ffprobe 验证
  • 文档更新不适用;本次变更不改变用户配置项,默认 原画 自动优先尝试 HEVC
  • 我遵循了这个项目的代码风格

注意: 这个PR在所有复选框被勾选之前不会被合并。


感谢您的贡献!

@SuperKenVery SuperKenVery marked this pull request as ready for review June 15, 2026 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🚀[Feature] 希望增加h265/hevc编码方式

1 participant