首页/新闻资讯/正文详情

wx_channels_download v260830 更新详解:视频号直播「边下载边播放」与下载菜单自定义能力

发布时间:2026/9/25 6:54:15 来源:云帆数科 栏目:资讯中心
wx_channels_download v260830 更新详解:视频号直播「边下载边播放」与下载菜单自定义能力
桌面应用视频网络MCP 服务【免费下载链接】wx_channels_download微信视频号下载器项目地址https://gitcode.com/gh_mirrors/wx/wx_channels_download点击查看免费下载本文基于仓库内版本发布文档 docs/releases/260830.md 编写围绕 v260830 版本的核心更新展开视频号直播下载任务新增「边下载边播放」能力、直播页面支持自定义下载按钮下拉菜单以及多项下载链路与前端交互修复。阅读本文后你将掌握该版本新增功能的实际操作方式、其底层实现原理基于 FFmpeg 分段录制与 HLS 事件播放列表以及如何通过global.js扩展下载菜单项。一、版本概览v260830 是微信视频号下载器wx_channels_download的一个功能型版本更新内容聚焦在直播下载体验与前端交互细节两个方向同时修复了一批影响实际使用的问题类别内容关联问题新功能直播下载任务支持边下载边播放—新功能直播页面支持自定义下载按钮的下拉菜单项#526优化前端代码与交互体验优化—修复下载列表页「全部开始」实际只启动三个任务—修复首页有时无法获取详情#528修复API Host填写0.0.0.0时无法正确连接下载服务#529修复直播下载中断后无法继续下载#541其中「边下载边播放」与「自定义下载菜单」是本版本最值得关注的两项能力下文分别给出使用方式与源码级实现解析其余修复项也会结合仓库现状说明其意义。二、核心新功能直播下载任务支持边下载边播放2.1 使用方式与前置条件直播下载属于实验性功能使用前必须先安装ffmpeg录制过程由 ffmpeg 驱动详见 docs/feature/wxchannels/live.md。在视频号直播页面右上角会出现「下载图标」按钮点击下载按钮创建直播下载任务点击按钮旁的下拉菜单将ffmpeg命令复制到剪贴板供你手动录制或排查问题。v260830 的增强在于直播任务创建后下载尚未结束时即可在页面内播放已经录制好的内容无需等待整个直播下载完成从而解决长直播「想回看前面内容却要等到下载结束」的痛点。2.2 实现原理FFmpeg 分段录制 HLS 事件播放列表「边下载边播放」的核心实现在直播协议驱动StreamDriverpkg/hermes/protocol/stream.go。与普通视频下载不同直播源没有固定大小、无法用字节区间断点续传因此它采用「时间切片 分路输出」的录制策略归档分片ffmpeg 按固定时长默认10分钟见default_stream_rotate_minutes将直播流切分为segment-%06d.mkv的 Matroska 分片落盘到录制目录。分片保留原始编码-c copy供最终无损拼接。预览分片同一进程内对已经打开的同一个输入流再输出一路 HLS 预览流-f hls以4秒为切片单位default_stream_preview_seconds生成index.m3u8事件播放列表与segment-%09d.tsTS 分片写入录制目录下的playback/子目录。由于两路输出复用同一个已打开的输入开启预览不会额外向直播源发起新的请求。播放服务index.m3u8采用event类型播放列表append_listindependent_segmentsomit_endlisttemp_file即播放列表持续追加、直到录制结束才写入#EXT-X-ENDLIST——这正是「边下载边播放」能被浏览器/HLS 播放器持续拉取新分片的关键。录制过程还内置了网络容错对 http/https 直播源会附加-reconnect、-reconnect_streamed、-reconnect_on_http_error 429,500,502,503,504等重连参数并支持通过代理录制-http_proxy与携带自定义请求头、Cookie-headers。2.3 播放接口与安全校验播放资源的对外接口位于 internal/api/handler_stream_playback.go其 URL 形如/api/v1/download_task/live/{task_id}/{resource_id}/index.m3u8该接口对清单index.m3u8返回application/vnd.apple.mpegurl并对 TS 分片返回video/mp2tCache-Control: immutable便于播放器缓存已下载分片同时做了多重安全防护资源名必须严格匹配index.m3u8或segment-[0-9]{9}.ts白名单模式valid_stream_playback_asset_name解析后的文件路径必须位于该任务的下载根目录内path_within_any_download_root且拒绝符号链接防止路径穿越仅对ResourceTypeStream类型的资源提供服务并通过数据库校验任务与资源归属。录制结束后finalize_stream_playback会在清单末尾补写#EXT-X-ENDLIST将playback/目录整体迁移为正式播放目录后再清理录制分片pkg/hermes/protocol/stream.go 中finalize_recording。2.4 任务层流程为何直播走专用通道任务执行层在 pkg/hermes/stream.go 中提供download_stream方法。其注释明确说明直播录制刻意绕过普通downloadFile流程——直播源无法用字节范围断点续传且暂停/重连时必须保留已封闭的媒体分片而不是截断单个.part文件。流程上会等待RecordStart指定的开始时间兼容 Unix 秒与毫秒时间戳见stream_timestamp将进度回调已下载大小、速度、分片列表同步到任务/资源状态与追踪器结束时把状态置为「合并中」TaskStatusMerging将各 MKV 分片通过 ffconcat 清单无损拼接为单个 Matroska 文件后提交并记录时长等元信息。三、直播页面支持自定义下载按钮的下拉菜单3.1 机制说明v260830 起直播页面的下载按钮下拉菜单支持注入自定义菜单项。整套机制基于页面注入脚本暴露的WXU全局对象pkg/scraper/wxchannels/inject/channels.utils.js其中WXU.unshiftMenuItems(items)把自定义菜单项插入到现有菜单最前面before_menu_items前置队列WXU.pushMenuItems(items)把自定义菜单项追加到现有菜单末尾after_menu_items后置队列两者内部都经过__wx_download_menu_items归一化并与attach_download_dropdown_menu挂接的下载按钮菜单渲染逻辑配合。菜单项结构为{ label, onClick }即显示文本与点击回调。功能说明与完整示例见 docs/feature/wxchannels/custom-menu.md。3.2 实战示例增加「下载视频和封面」在wx_video_download.exe程序可执行文件同目录下新建global.js写入以下内容后重启程序直播/视频下载按钮的下拉菜单中就会出现「下载视频和封面」// global.js WXU.unshiftMenuItems([ { label: 下载视频和封面, async onClick() { var [err, feed] WXU.check_feed_existing({ silence: true, }); if (err) return; var filename WXU.build_filename( feed, feed.spec[0], WXU.config.downloadFilenameTemplate ); if (WXU.config.downloadPauseWhenDownload) { WXU.pause_cur_video(); } var ins WXU.loading(); var [err, response] await WXU.fetch(feed.url); if (err) { WXU.error({ msg: err.message, }); return; } var media_blob await WXU.download_with_progress(response, { onStart({ total_size }) { WXU.log({ msg: 总大小 ${WXU.bytes_to_size(total_size)}, }); }, onProgress({ loaded_size, progress }) { WXU.log({ replace: 1, msg: progress null ? ${WXU.bytes_to_size(loaded_size)} : ${progress}%, }); }, }); var media_buf new Uint8Array(await media_blob.arrayBuffer()); if (feed.key) { WXU.log({ msg: 下载完成开始解密, }); var [err, data] await WXU.decrypt_video(media_buf, feed.key); if (err) { WXU.error({ msg: 解密失败 err.message, alert: 0 }); WXU.error({ msg: 请刷新视频号页面后重试, alert: 0 }); } else { WXU.log({ msg: 解密成功 }); media_buf data; } } var decrypted_media_blob new Blob([media_buf], { type: video/mp4 }); var zip await WXU.Zip(); zip.file(filename .mp4, decrypted_media_blob); var cover_url feed.cover_url.replace(/^http/, https); var [err, cover_response] await WXU.fetch(cover_url); if (err) { WXU.error({ msg: err.message, }); return; } var cover_blob await cover_response.blob(); zip.file(filename .jpg, cover_blob); var zip_blob await zip.generateAsync({ type: blob }); WXU.save(zip_blob, filename .zip); ins.hide(); if (WXU.config.downloadPauseWhenDownload) { WXU.play_cur_video(); } }, }, ]);该示例演示了WXU脚本 API 的典型用法check_feed_existing校验当前视频是否已存在、build_filename按downloadFilenameTemplate生成文件名、fetchdownload_with_progress下载媒体并实时回显进度、decrypt_video解密加密视频、Zip打包媒体与封面后经save落盘若配置了downloadPauseWhenDownload下载期间会暂停当前视频、完成后自动恢复播放。四、本次修复的问题解析v260830 同时修复了四个用户可见问题覆盖下载列表、首页详情、连接配置与直播续录四个环节4.1 「全部开始」实际只启动三个下载任务下载列表页的「全部开始」此前存在并发启动数量限制导致用户预期全部启动、实际仅启动三个任务。本版本修复了该问题使「全部开始」能按列表中的任务批量启动。从仓库的下载任务调度实现internal/services/download_task.go可以看出任务启动涉及状态流转与并发控制该修复属于并发启动逻辑的修正。4.2 首页有时无法获取详情#528首页在某些情况下无法获取视频详情。该修复针对详情数据获取链路确保进入首页时详情信息能够稳定加载。4.3API Host填写0.0.0.0时无法连接下载服务#529当用户在配置中将API Host设为0.0.0.0表示监听所有网卡地址时前端此前无法正确连接下载服务。本版本修复了该场景下的连接问题使得以0.0.0.0作为监听地址时页面仍能正常访问下载服务接口。4.4 直播下载中断后无法继续下载#541这是与「边下载边播放」配套的关键修复。直播录制中断如网络波动、手动暂停后此前无法继续录制。修复后StreamDriver的续录能力得以生效从源码看每次新录制尝试都会通过next_stream_segment_index扫描录制目录中已有的segment-*.mkv分片并从下一个序号继续切分见 pkg/hermes/protocol/stream.go最终拼接时也只会把有效分片经 ffprobe 校验损坏分片会被隔离为.corrupt合并进最终文件——这正是「中断后可继续下载」的实现基础。五、升级与使用建议升级方式按仓库 CLI 文档 docs/cli/update.md 提供的更新命令将程序升级至 v260830 即可获得上述全部能力。依赖要求直播下载与边下边播依赖ffmpeg录制、切片、拼接均由其执行请确保系统 PATH 中可找到ffmpeg与ffprobe未安装时StreamDriver.Prepare会直接返回「ffmpeg is required for live recording」错误。功能定位直播下载在 docs/feature/wxchannels/live.md 中被明确标注为实验性功能直播流的可用性与稳定性受直播源与网络环境影响建议结合实际场景验证后再大规模使用。扩展方向自定义菜单基于global.js的WXU.unshiftMenuItems/WXU.pushMenuItems注入可自由组合WXU提供的下载、解密、日志、配置读取等能力实现「下载视频与封面」之外的更多自动化操作。综上v260830 在直播下载链路完成了一次系统性增强从分段录制、HLS 事件播放列表到播放接口安全校验internal/api/handler_stream_playback.go再到中断续录修复配合下载按钮下拉菜单的可编程扩展docs/feature/wxchannels/custom-menu.md让视频号直播的「录 看 扩展」形成了完整闭环。赞分享桌面应用视频网络MCP 服务【免费下载链接】wx_channels_download微信视频号下载器项目地址https://gitcode.com/gh_mirrors/wx/wx_channels_download点击查看免费下载相关推荐不用 Steam 客户端也能下创意工坊模组WorkshopDL 零成本上手指南三步搞定不用 Steam 客户端也能下创意工坊模组WorkshopDL 零成本上手指南三步搞定 你兴冲冲在 Epic 或 GOG 上买了《泰拉瑞亚》《Project桌面应用视频网络MCP 服务async-profiler 二进制包获取与跨平台部署指南3 条命令从编译到首次火焰图async profiler 二进制包获取与跨平台部署指南3 条命令从编译到首次火焰图 async profiler 是一款采样式 Java 性能分析工具支性能剖析开发工具可观测性Cap一款免费的开源录屏工具从录制到分享链接只需 3 步Cap一款免费的开源录屏工具从录制到分享链接只需 3 步 Cap 是一款免费的开源屏幕录制工具目标是替代 Loom一次录制同时采集屏幕、摄像头和麦克风屏幕录制音视频桌面应用后端前端视频处理AI 应用移动开发上一篇Kubernetes-GPU-Guide完全指南如何用GPU集群加速深度学习训练下一篇LunaTranslator终极指南三步配置实现视觉小说高效翻译创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

BentoML Hello World 实战:用 30 行代码将 Hugging Face 文本摘要模型封装为 HTTP 服务
BentoML Hello World 实战:用 30 行代码将 Hugging Face 文本摘要模型封装为 HTTP 服务

模型推理服务人工智能后端大模型MLOpsLLMOps 【免费下载链接】BentoML The easiest way to serve AI apps and models - Build Model Inference APIs, Job queues, LLM apps, Multi-model pipelines, and more! 项目地址: https://gitcode.com/gh_mirrors/be/BentoM… · 2026/9/25 6:54:15

ClawHub 的 specs/ 治理体系:规格、计划与回归记录的双轨文档系统
ClawHub 的 specs/ 治理体系:规格、计划与回归记录的双轨文档系统

后端前端AI 技能AI 插件搜索引擎 【免费下载链接】clawhub Skill Plugin Registry for OpenClaw 项目地址: https://gitcode.com/gh_mirrors/mo/clawhub 点击查看 免费下载 ClawHub(OpenClaw 的 Skill Plugin Registry)在仓库中维护了一套… · 2026/9/25 6:54:15

NodeGui CorrectionMode 枚举详解:QAbstractSpinBox 数值纠正策略与 setCorrectionMode 实践
NodeGui CorrectionMode 枚举详解:QAbstractSpinBox 数值纠正策略与 setCorrectionMode 实践

桌面应用跨平台 【免费下载链接】nodegui A library for building cross-platform native desktop applications with Node.js and CSS 🚀. React NodeGui : https://react.nodegui.org and Vue NodeGui: https://vue.nodegui.org 项目地址: https://git… · 2026/9/25 6:54:09

Databasus 验证调度器回归修复:为什么关闭定时验证后,手动验证不再被误取消
Databasus 验证调度器回归修复:为什么关闭定时验证后,手动验证不再被误取消

数据库灾备 【免费下载链接】databasus PostgreSQL backup tool with Point-In-Time-Recovery and restore verification 项目地址: https://gitcode.com/gh_mirrors/po/databasus 点击查看 免费下载 本文围绕 Databasus 后端的一次变更任务清单展开:当… · 2026/9/25 7:27:19

亲手写CPU:从Verilog到FPGA的计算机组成原理课设全攻略
亲手写CPU:从Verilog到FPGA的计算机组成原理课设全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 7:27:19

PaddleNLP Kernel 算子库:CUDA 与 Triton 双实现的高性能 NLP GPU 算子实战指南
PaddleNLP Kernel 算子库:CUDA 与 Triton 双实现的高性能 NLP GPU 算子实战指南

人工智能大模型预训练微调LoRARLHF强化学习分布式训练 【免费下载链接】PaddleNLP Easy-to-use and powerful LLM and SLM library with awesome model zoo. 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleNLP 点击查看 免费下载 导读 paddlenlp-kernel 是 … · 2026/9/25 7:27:13

treg 实战:OpenRouter + MCP + CLI 轻量级 Agent 编排入门
treg 实战:OpenRouter + MCP + CLI 轻量级 Agent 编排入门

1. 从 "treg" 这个标题说起:一个被低估的 Agent 编排入口第一次看到 "treg" 这个词,很多人会以为是某个拼写错误,或者某个小众库的缩写。但如果你最近在折腾 AI Agent 相关的工具链,尤其是围绕 OpenRouter、M… · 2026/9/25 7:27:13

pylibcudf 正则引擎实战:RegexProgram 的创建、标志位与 GPU 加速字符串 API
pylibcudf 正则引擎实战:RegexProgram 的创建、标志位与 GPU 加速字符串 API

数据分析数据工程机器学习 【免费下载链接】cudf cuDF - GPU DataFrame Library 项目地址: https://gitcode.com/gh_mirrors/cu/cudf 点击查看 免费下载 导读 本文围绕 pylibcudf(cuDF 的 Cython 层库)中的正则表达式编程模型展开&#xf… · 2026/9/25 7:27:13

OpenResearch实战指南:搭建可复现研究与高效协作的工作流
OpenResearch实战指南:搭建可复现研究与高效协作的工作流

如果你最近逛开源社区或学术圈子,大概率刷到过 OpenResearch 这个关键词。有人把它当一种理念,有人直接拿它当具体项目的名字,但大多数人跟我第一次看到时一样,觉得它有点玄乎。其实把它拆开看就一句话:把整个研究过程… · 2026/9/25 7:27:13

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码