[{"data":1,"prerenderedAt":1828},["ShallowReactive",2],{"guides-zh-Hans":3},[4,358,598,841,1101,1356,1574],{"id":5,"title":6,"author":7,"body":8,"date":338,"description":339,"difficulty":340,"extension":341,"image":342,"lastModified":343,"meta":344,"navigation":345,"outcome":346,"path":347,"readingTime":348,"robots":342,"scenario":349,"seo":350,"stem":352,"tools":353,"__hash__":357},"guides_zh_Hans\u002Fzh-Hans\u002F8.guides\u002F1.archive-a-course-over-hls.md","网课 M3U8 下载指南：把 HLS 推流的课程完整存成 MP4","FlowPick Team",{"type":9,"value":10,"toc":326},"minimark",[11,15,18,22,25,32,38,65,72,75,79,89,108,111,118,123,127,130,138,151,154,158,166,172,177,180,200,203,207,218,224,229,232,235,241,247,250,254,257,265,268,271,277,288,294,304,307,314],[12,13,14],"p",{},"买过的网课，平台只肯在网页里播放，不给下载按钮——这大概是最多人搜\"M3U8 下载\"的原因。课程视频几乎都是按 HLS 分片推流的，每个分片的地址写在一份 M3U8 清单里，而这份清单在地址栏里看不到。",[12,16,17],{},"这篇指南讲完整的一条路：找到清单、读清单、选清晰度、下载合并成 MP4、剪掉片头。内容来自我们自己批量归档课程时踩过的坑，不是格式文档的复述，哪一步会卡住、为什么卡，正文里都有。",[19,20,21],"h2",{"id":21},"先判断这门课能不能下载",[12,23,24],{},"动手之前过两个前提，能省掉后面所有白费的努力。",[12,26,27,31],{},[28,29,30],"strong",{},"第一，视频要在你自己的浏览器里能正常播放。"," 播都播不了的课，下载无从谈起。",[12,33,34,37],{},[28,35,36],{},"第二，看清加密方式。"," 课程平台给 HLS 流加密有两种做法，结局完全不同：",[39,40,41,59],"ul",{},[42,43,44,47,48,52,53,58],"li",{},[28,45,46],{},"AES-128","：清单里带 ",[49,50,51],"code",{},"EXT-X-KEY"," 标签的普通加密。FlowPick 扩展可以自动解密，不影响下载，原理见",[54,55,57],"a",{"href":56},"\u002Fzh-Hans\u002Fdocs\u002Ffeatures\u002Fvideo-sniffing","视频嗅探","。",[42,60,61,64],{},[28,62,63],{},"DRM（Widevine、FairPlay）","：分片本身就是密文，解密密钥只存在于播放器的受保护内存里，不会交给网页。FlowPick 不做破解，浏览器端的工具也做不到。",[12,66,67,68,71],{},"自己判断属于哪种：打开开发者工具的 Network 面板，筛选 ",[49,69,70],{},"m3u8","，然后播放视频。出现了清单请求、分片响应是能识别的媒体数据，就是没加密或只是 AES-128，这套流程适用。只看到分片请求没有清单、或者响应全是乱码，到这里就可以停了，这篇帮不上忙。",[12,73,74],{},"还有一句要说在前面：这套流程用于你有权保存的内容——自己买的课、条款允许离线的平台，或者自己录的课。某个平台具体允不允许，答案在它自己的条款里，不在这篇指南里。",[19,76,78],{"id":77},"为什么下载网课绕不开-m3u8","为什么下载网课绕不开 M3U8",[12,80,81,82,88],{},"想下载 HLS 视频，就得先拿到 M3U8 清单。这不是工具的偏执，是协议本身的规矩。HLS 的规范是 ",[54,83,87],{"href":84,"rel":85},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc8216",[86],"nofollow","RFC 8216","，它规定的结构是这样的：",[39,90,91,102],{},[42,92,93,96,97,101],{},[28,94,95],{},"Master 清单（主清单）","：里面没有一帧视频。它列的是各个",[98,99,100],"em",{},"变体","（variant），也就是同一个视频的不同清晰度版本。",[42,103,104,107],{},[28,105,106],{},"Media 清单（媒体清单）","：每个变体各有一份，里面才是真正的分片地址列表。",[12,109,110],{},"所以\"下载这个视频\"的第一层决策，其实是\"下载哪个变体\"。你不主动选，工具也会替你选——而工具默认挑的，未必是你想要的。",[12,112,113],{},[114,115],"img",{"alt":116,"src":117},"HLS 清单结构：master 清单指向三个清晰度，每个清晰度有自己的分片列表","\u002Fimg\u002Fguides\u002Fhls-playlist-structure.svg",[12,119,120],{},[98,121,122],{},"一个 master 清单，三个清晰度，每个清晰度一份独立的分片列表。高亮那个是这篇指南要下的。",[19,124,126],{"id":125},"第一步找到课程的-m3u8-地址","第一步：找到课程的 M3U8 地址",[12,128,129],{},"两个办法，任选其一。",[12,131,132,135,136,58],{},[28,133,134],{},"装了 FlowPick 扩展，直接看嗅探结果。"," 打开课程播放页，扩展会在网络层自动捕获页面发出的媒体请求，M3U8 清单一般会直接出现在资源列表里，点开复制地址即可。检测原理见",[54,137,57],{"href":56},[12,139,140,143,144,147,148,150],{},[28,141,142],{},"手动找，用开发者工具。"," 按 ",[49,145,146],{},"F12"," 打开开发者工具，切到 Network（网络）面板，在筛选框里输入 ",[49,149,70],{},"，然后播放视频。出现的请求里，通常第一个就是 master 清单，右键复制它的 URL。",[12,152,153],{},"注意清单可能不止一份：先出现的一般是 master，随后出现的是它指向的媒体清单。两个地址后面都有用。",[19,155,157],{"id":156},"第二步分析清单选一个真实存在的清晰度","第二步：分析清单，选一个真实存在的清晰度",[12,159,160,161,165],{},"把 master 清单的地址粘到 ",[54,162,164],{"href":163},"\u002Fzh-Hans\u002Ftools\u002Fm3u8-playlist-analyzer","M3U8 清单分析器","。它会列出所有变体、各自的分辨率与码率，以及单独列出的音轨。后续下载步骤需要 FlowPick 浏览器扩展，请先在支持的浏览器里安装。",[12,167,168],{},[114,169],{"alt":170,"src":171},"Mux 公开 HLS 示例的五个清晰度，显示分辨率、带宽和编码","\u002Fimg\u002Fguides\u002Fplaylist-analyzer-variants.jpg",[12,173,174],{},[98,175,176],{},"英文界面，使用 Mux 公开测试流，并非课程录制。master 列出五个变体；分片数量需要打开所选变体的媒体清单另行查看。",[12,178,179],{},"这一步为什么不能省，三个理由都来自实际踩坑：",[39,181,182,188,194],{},[42,183,184,187],{},[28,185,186],{},"\"1080p\"可能是拉大的 720p。"," 2020 年前后录的课，源头常常就是 720p，但 master 里同时挂着一个从它放大出来的 1080p 变体。选最大的那个，得到的是更大的文件，不是更清楚的画面。",[42,189,190,193],{},[28,191,192],{},"音轨可能是独立的。"," 较新的平台经常把音频单独放一条轨道。直接拿 master 去下载，音轨怎么处理就成了下载完之后才发现的事。",[42,195,196,199],{},[28,197,198],{},"分片数量决定要等多久。"," 两小时的课，分片是几百个。心里有个数，才知道这次下载是十分钟的事还是一小时的事。",[12,201,202],{},"想看分片数量和总时长，打开选定变体的媒体清单，master 本身不含这些信息。",[19,204,206],{"id":205},"第三步下载分片合并成-mp4","第三步：下载分片，合并成 MP4",[12,208,209,210,213,214,58],{},"把",[28,211,212],{},"选定清晰度的媒体清单地址","（不是 master）交给 ",[54,215,217],{"href":216},"\u002Fzh-Hans\u002Fm3u8-downloader","M3U8 下载器",[12,219,220],{},[114,221],{"alt":222,"src":223},"HLS 下载器正在拉取分片，显示下载进度、分片计数和速度","\u002Fimg\u002Fguides\u002Fm3u8-downloader-progress.jpg",[12,225,226],{},[98,227,228],{},"在已安装 FlowPick 的 Chrome 中实际下载 Mux 公开测试流的 720p 变体，界面语言为英文。这是下载过程截图，不代表课程已完整归档。",[12,230,231],{},"多这一步是故意的：把选清晰度的决定权从工具手里拿回来。分片列表固定下来之后，一旦失败，能定位到具体是哪一段出问题，而不是笼统地怪\"选错清晰度\"。",[12,233,234],{},"下载器会把分片逐个拉下来，在浏览器里拼成一个 MP4，全程不上传。这中间最常被两件事打断：",[12,236,237,240],{},[28,238,239],{},"分片地址带签名，下到一半过期。"," 很多 CDN 给每个分片地址签短时效，四十分钟的下载可能比签名活得还久，于是文件尾部的分片集体 403。对策：重新复制一次清单拿新签名；或者挑小一号的清晰度、分几次下，把单次时长压到过期窗口以内。",[12,242,243,246],{},[28,244,245],{},"浏览器存储吃紧。"," 一门课动辄几个 G。Chrome 和 Edge 走文件系统直接写盘，上限就是磁盘空间；Firefox 会先暂存到浏览器存储、完成后再让你保存，那一刻两边都要有余量。开始下载前，把其他标签页关掉。",[12,248,249],{},"另外：下载过程中不要关闭标签页。切到后台没关系，关掉就没法继续。",[19,251,253],{"id":252},"第四步剪掉片头片尾","第四步：剪掉片头片尾",[12,255,256],{},"录播课开头通常有 20 到 40 秒的平台片头，结尾还有一页\"感谢观看\"。一门课上几十讲，这些片段加起来很可观。",[12,258,259,260,264],{},"用",[54,261,263],{"href":262},"\u002Fzh-Hans\u002Ftools\u002Fvideo-trimmer","视频裁剪","按时间点切。建议从合并好的 MP4 上剪，不要对分片动手——一次就够，而且在剪满意之前原件还在。",[12,266,267],{},"剪完先别删原件，检查两件事：切口附近的音画有没有错位，切口后的第一秒是不是定格画面。这两个毛病都和从关键帧附近下刀有关，不是随机出现的。",[19,269,270],{"id":270},"下载失败时的排查",[12,272,273,276],{},[28,274,275],{},"为什么下到一半，分片全变 403？"," 清单里的分片地址带签名，过期了。回到播放页重新打开这一讲，复制当前的清单地址，从头再下。课程单讲特别长的话，分几次下载，别指望一次签名撑到底。",[12,278,279,282,283,287],{},[28,280,281],{},"为什么合并出来的 MP4 没有声音？"," 音频是独立轨道，没合进去。回到分析器看 master 里有没有单独的音频条目，再确认下载器有没有对应的选项。如果都没有，用",[54,284,286],{"href":285},"\u002Fzh-Hans\u002Faudio-downloader","音频下载器","单独把音轨存下来，两个文件放在一起用。",[12,289,290,293],{},[28,291,292],{},"为什么第一分钟之后分片全部 404？"," 清单本身过期了。带登录态的课程平台很常见，重新播放一次拿新清单即可。",[12,295,296,299,300,303],{},[28,297,298],{},"分析器只显示一个清晰度，下载却总失败？"," 看看清单是不是要求特定的 ",[49,301,302],{},"Referer","。有些课程平台会拒绝那些看起来不是从播放页发起的请求。用扩展发起下载比单独开工具页更省事——扩展会带上正在播放的那个标签页的请求上下文。",[19,305,306],{"id":306},"存好之后",[12,308,309,310,313],{},"每讲一个 MP4，清晰度是你自己选定的，片头片尾已经剪掉。文件名建议带上序号，",[49,311,312],{},"course-03-hashing.mp4"," 比一串时间戳好找得多，两年后你会感谢现在的自己。",[12,315,316,317,321,322,58],{},"合并这一步不会改变的东西——封装格式、编码、为什么 720p 的源出来的还是 720p——见",[54,318,320],{"href":319},"\u002Fzh-Hans\u002Fdocs\u002Ffeatures\u002Fformat-conversion","格式转换","。更多课程归档的背景，见",[54,323,325],{"href":324},"\u002Fzh-Hans\u002Fdocs\u002Fusecases\u002Fonline-courses","在线课程下载",{"title":327,"searchDepth":328,"depth":328,"links":329},"",2,[330,331,332,333,334,335,336,337],{"id":21,"depth":328,"text":21},{"id":77,"depth":328,"text":78},{"id":125,"depth":328,"text":126},{"id":156,"depth":328,"text":157},{"id":205,"depth":328,"text":206},{"id":252,"depth":328,"text":253},{"id":270,"depth":328,"text":270},{"id":306,"depth":328,"text":306},"2026-10-29","网课只在网页里播放、平台不给下载文件时，怎么把 HLS 推流的课程存成 MP4：找到 M3U8 清单、选对真实清晰度、下载分片合并、剪掉片头，以及签名过期、存储不够这些实际会卡住的地方。","intermediate","md",null,"2026-11-01",{},true,"每讲一个 MP4，清晰度由你选定，片头片尾已剪掉。","\u002Fzh-hans\u002Fguides\u002Farchive-a-course-over-hls",8,"archive",{"description":351,"title":6},"网课 M3U8 下载完整教程：课程平台按 HLS 分片推流、不提供下载地址时，如何在浏览器里找到 m3u8 清单、分析各清晰度变体、选定真实分辨率、下载分片并合并为 MP4，再剪掉片头片尾。包含分片 403 签名过期、浏览器存储不足、合并后无声音等常见问题的处理方法。仅用于你有权保存的课程。","zh-Hans\u002F8.guides\u002F1.archive-a-course-over-hls",[354,355,356],"\u002Ftools\u002Fm3u8-playlist-analyzer","\u002Fm3u8-downloader","\u002Ftools\u002Fvideo-trimmer","jiETiV8yz_YBBSCvLSth0gLYPgq17hhHyueUxxUkaok",{"id":359,"title":360,"author":7,"body":361,"date":338,"description":584,"difficulty":585,"extension":341,"image":342,"lastModified":343,"meta":586,"navigation":345,"outcome":587,"path":588,"readingTime":589,"robots":342,"scenario":590,"seo":591,"stem":593,"tools":594,"__hash__":597},"guides_zh_Hans\u002Fzh-Hans\u002F8.guides\u002F2.turn-a-meeting-recording-into-notes.md","会议录音转文字：把会议视频变成可搜索的纪要文稿",{"type":9,"value":362,"toc":575},[363,366,369,373,376,379,382,386,392,398,403,406,412,417,420,424,427,435,438,444,449,453,461,464,470,476,482,487,490,494,497,517,520,526,531,534,537,543,549,555,561,564,567],[12,364,365],{},"会开完十分钟，就没人记得当时定了什么。录像是在的，但为了找一个数字去拖七十分钟的进度条，还不如没录。",[12,367,368],{},"这篇讲怎么把会议录像变成能搜索、能引用的文字：先剪、必要时转格式、再转录、最后校对。识别在你自己的浏览器里跑，全程不上传。",[19,370,372],{"id":371},"这套流程能做什么不能做什么","这套流程能做什么、不能做什么",[12,374,375],{},"产出是文稿：带时间点的文字，可以编辑，可以导出 TXT、SRT 或 VTT。这是写会议纪要的原料。",[12,377,378],{},"它不做摘要。\"一键生成会议纪要\"的按钮不存在，转录工具也不翻译、不区分说话人。纪要还是得自己写——不过从文稿里写，比对着视频写快得多，因为文字可以扫着读。",[12,380,381],{},"开始前有一个限制要清楚：识别在本地跑，所以时长直接等于等待时间。我们实测，七十分钟的会议用笔记本 CPU 转录，等待时间长到\"先剪一下\"从可选项变成了必选项。",[19,383,385],{"id":384},"第一步转录之前先剪","第一步：转录之前先剪",[12,387,388,389,391],{},"把录像放进",[54,390,263],{"href":262},"，剪掉两段：开头大家陆续进来、试麦克风的部分，和最后一个议题结束之后的闲聊。",[12,393,394],{},[114,395],{"alt":396,"src":397},"一段 70 分钟的录像分成 9 分钟入场、45 分钟议题、15 分钟收尾，只保留议题部分","\u002Fimg\u002Fguides\u002Ftrim-before-transcribe.svg",[12,399,400],{},[98,401,402],{},"识别成本随时长增长。剪掉开头九分钟，就少了 13% 的工作量。",[12,404,405],{},"这一步收益最大，原因是算术而不是整洁：晚开始九分钟的会，剪完短了 13%，而剪掉的部分里没有任何你需要的信息。",[12,407,408],{},[114,409],{"alt":410,"src":411},"视频裁剪界面，入点为一秒、出点为三秒，输出时长为两秒","\u002Fimg\u002Fguides\u002Fvideo-trimmer-timeline.jpg",[12,413,414],{},[98,415,416],{},"英文界面，使用 FlowPick 生成的四秒测试视频演示。高亮区保留 0:01–0:03；处理会议录制时使用同样的起止时间控件。",[12,418,419],{},"原件留着。裁剪产出的是新文件，等哪个结论说不清的时候，你还会想回去看没动过的版本。",[19,421,423],{"id":422},"第二步转录失败时才把-webm-转成-mp4","第二步：转录失败时，才把 WebM 转成 MP4",[12,425,426],{},"浏览器的录屏工具和不少会议软件，写出来的是带 Opus 音频的 WebM。这格式本身没问题，转录器多数时候也能处理——但\"多数时候\"这四个字有分量：容器和音频解码的支持在 Chrome、Edge、Firefox 之间并不一致，而转录关心的恰恰是音轨，不是画面。",[12,428,429,430,434],{},"如果转录器提示无法解码音频，或者一句话都没识别出来，先用 ",[54,431,433],{"href":432},"\u002Fzh-Hans\u002Ftools\u002Fwebm-to-mp4","WebM 转 MP4"," 换一次容器再重试。",[12,436,437],{},"转录本来就正常的话，跳过这步。给一个没问题的文件做转换，只是白等几分钟。",[12,439,440],{},[114,441],{"alt":442,"src":443},"WebM 转换结果，显示 88.9 KB 的 VP8 Opus 输入和 122.3 KB 的 MP4 输出","\u002Fimg\u002Fguides\u002Fwebm-to-mp4-result.jpg",[12,445,446],{},[98,447,448],{},"英文界面，使用生成的四秒测试视频：88.9 KB WebM → 122.3 KB MP4。工具会重新编码为 H.264\u002FAAC，输出体积取决于源文件和设置。",[19,450,452],{"id":451},"第三步转录模型自己选","第三步：转录，模型自己选",[12,454,455,456,460],{},"打开",[54,457,459],{"href":458},"\u002Fzh-Hans\u002Ftools\u002Fvideo-to-text","视频转文字","，选中剪好的 MP4，设置语言，开始。",[12,462,463],{},"有两个设置直接决定你要等多久：",[12,465,466,469],{},[28,467,468],{},"模型大小。"," 轻量模型下载 40–150 MB，只是要找到会上定了什么的话，够用。标准模型下载 80–250 MB，对人名和专业术语的识别更好，代价是时间和内存。会议里出现人名、产品名、数字的概率不低，我们多数时候选标准模型。",[12,471,472,475],{},[28,473,474],{},"处理方式。"," 浏览器能用 GPU 时，GPU 加速明显更快。自动模式在无法确认有可用 GPU 时会退回 CPU，核显笔记本上很常见。",[12,477,478],{},[114,479],{"alt":480,"src":481},"视频转录设置，显示语言、Whisper Tiny 与 Base 模型选项，以及 CPU 处理方式","\u002Fimg\u002Fguides\u002Fvideo-to-text-settings.jpg",[12,483,484],{},[98,485,486],{},"英文界面，使用生成的英语语音样本。模型和处理方式会影响首次下载体积与处理时间。",[12,488,489],{},"语言是最容易设错的一项。自动检测取第一段有人说话的内容判断，然后整段沿用；如果会议开头是两个人用别的语言寒暄，就会判错。知道会议用什么语言开，就直接选。",[19,491,493],{"id":492},"第四步只校对要紧的部分","第四步：只校对要紧的部分",[12,495,496],{},"点时间点可以从那里开始播放，对着改文字。不需要全改：",[39,498,499,505,511],{},[42,500,501,504],{},[28,502,503],{},"人名、产品名","——转写成中文时的同音字错位，引用出去最尴尬",[42,506,507,510],{},[28,508,509],{},"数字、日期、金额","——\"十五\"和\"五十\"是所有语音识别的经典易错点",[42,512,513,516],{},[28,514,515],{},"待办事项和负责人","——这是纪要里真正要落地的东西",[12,518,519],{},"语气词不值得花时间。",[12,521,522],{},[114,523],{"alt":524,"src":525},"视频转录结果，包含零到五秒的时间戳、可编辑文本和 TXT SRT VTT 导出按钮","\u002Fimg\u002Fguides\u002Ftranscript-editing.jpg",[12,527,528],{},[98,529,530],{},"英文界面，Whisper Tiny 在 CPU 上识别生成语音后的未校正结果。它把\"two short sentences\"误识别为\"new short sentences\"；引用前应回听校对。",[12,532,533],{},"时间点是近似值。如果这份文稿之后要当字幕用，做好在剪辑软件里重新对齐的准备，不要直接信。",[19,535,536],{"id":536},"转录中容易出问题的四个情况",[12,538,539,542],{},[28,540,541],{},"开头的音乐把检测带偏。"," 多人抢话和背景音乐都会拉低识别率。第一步把片头剪掉，能解决大部分。",[12,544,545,548],{},[28,546,547],{},"文稿是一大段没有分段的话。"," 输出按识别窗口切分，不按说话人或句子。写纪要时得自己重新组织段落。",[12,550,551,554],{},[28,552,553],{},"长录音跑到一半停了。"," 已处理完的部分会保留。先把现有的导出，或者把源文件切成两半分别转录——浏览器内存不够时，这也是正经办法。",[12,556,557,560],{},[28,558,559],{},"有人说的语言支持得不好。"," 这个版本支持工具里列出的那些语言，不同语言的效果差别不小，引用之前先核对。",[19,562,563],{"id":563},"收工时手里有什么",[12,565,566],{},"一次操作产出三个文件：剪好的 MP4 给想看视频的人，可编辑的文稿用来搜索和写纪要，需要字幕的话再导出一份 SRT。",[12,568,569,570,572,573,58],{},"字幕这条线的细节——怎么烧进画面、怎么在时间线上核对——见",[54,571,320],{"href":319},"和",[54,574,459],{"href":458},{"title":327,"searchDepth":328,"depth":328,"links":576},[577,578,579,580,581,582,583],{"id":371,"depth":328,"text":372},{"id":384,"depth":328,"text":385},{"id":422,"depth":328,"text":423},{"id":451,"depth":328,"text":452},{"id":492,"depth":328,"text":493},{"id":536,"depth":328,"text":536},{"id":563,"depth":328,"text":563},"会议录屏先剪掉废话、必要时转成 MP4，再在本地转录成可编辑的文稿和 SRT 字幕。模型怎么选、语言怎么设、人名数字怎么校对，以及长录音中断后怎么办。","basic",{},"一个剪好的 MP4 用来分享，一份可编辑的文稿和 SRT 字幕。","\u002Fzh-hans\u002Fguides\u002Fturn-a-meeting-recording-into-notes",7,"transcribe",{"description":592,"title":360},"会议录音转文字实操教程：浏览器录屏或会议软件导出的视频，先裁剪掉无效片段降低识别耗时，WebM 解码失败时转成 MP4，再在浏览器本地转录成可编辑文稿，导出 TXT、SRT、VTT。包含模型大小选择、GPU 加速、语言设置建议，人名数字校对要点，以及长录音中断、无分段等问题的处理。","zh-Hans\u002F8.guides\u002F2.turn-a-meeting-recording-into-notes",[356,595,596],"\u002Ftools\u002Fwebm-to-mp4","\u002Ftools\u002Fvideo-to-text","PORLeogE9T0igZuU7sYsA31L7blscJwr8dUgkwmF_Pk",{"id":599,"title":600,"author":7,"body":601,"date":338,"description":829,"difficulty":585,"extension":341,"image":342,"lastModified":343,"meta":830,"navigation":345,"outcome":831,"path":832,"readingTime":833,"robots":342,"scenario":834,"seo":835,"stem":837,"tools":838,"__hash__":840},"guides_zh_Hans\u002Fzh-Hans\u002F8.guides\u002F3.check-a-file-that-will-not-play.md","视频打不开怎么办？先分清封装和编码，再决定怎么转 MP4",{"type":9,"value":602,"toc":820},[603,606,609,612,615,621,627,630,636,641,644,658,662,670,676,681,684,710,713,717,728,737,742,747,750,761,764,767,770,776,782,785,791,797,806,809,812],[12,604,605],{},"别人发来一个视频，双击，打不开。多数人的第一反应是找工具转成 MP4——一半情况下确实好了，另一半情况下，你花了二十分钟转一个文件，而它的问题从来就不在封装上。",[12,607,608],{},"这篇讲的是怎么在动手之前，就知道自己属于哪一半。",[19,610,611],{"id":611},"封装和编码是两回事",[12,613,614],{},"一个媒体文件有两层，分清这两层，后面所有判断都顺理成章。",[12,616,617,620],{},[28,618,619],{},"封装（container）是盒子","：MP4、WebM、MKV、TS、MOV。它规定轨道怎么摆放，不规定里面装什么。每种封装都有公开规范——MP4 对应 ISO\u002FIEC 14496-12，Matroska 和 WebM 各有自己的文档。",[12,622,623,626],{},[28,624,625],{},"编码（codec）是盒子里的东西","：视频是 H.264、H.265、VP9、AV1，音频是 AAC、Opus、AC-3。",[12,628,629],{},"播放器报\"打不开\"，通常是封装层的问题——它连轨道都找不到，根本没机会尝试解码。而播放器能打开、画面黑屏或者没声音，那是编码的问题——换多少次封装都没用。",[12,631,632],{},[114,633],{"alt":634,"src":635},"对比封装与编码：MKV 和 MP4 里装着同样的 H.264 与 AAC，可以换封装；MP4 里装 H.265 则需要重新编码","\u002Fimg\u002Fguides\u002Fcontainer-vs-codec.svg",[12,637,638],{},[98,639,640],{},"换盒子便宜且无损，换里面的东西两者都不占。",[12,642,643],{},"对应两种处理方式：",[39,645,646,652],{},[42,647,648,651],{},[28,649,650],{},"换封装（remux）","：把编码好的数据原样拷进新盒子。快，零画质损失。盒子有问题时这是正确做法。",[42,653,654,657],{},[28,655,656],{},"重新编码（transcode）","：把每一帧解出来再压一遍。慢，有画质损失。编码有问题时这是唯一的办法。",[19,659,661],{"id":660},"第一步读文件别猜","第一步：读文件，别猜",[12,663,664,665,669],{},"把文件丢进",[54,666,668],{"href":667},"\u002Fzh-Hans\u002Ftools\u002Fvideo-info","视频信息","，它会给出封装、视频和音频编码、分辨率、时长、轨道结构。",[12,671,672],{},[114,673],{"alt":674,"src":675},"媒体信息报告，显示 MP4 封装、四秒时长、AVC 视频和 AAC 音频轨道","\u002Fimg\u002Fguides\u002Fvideo-info-output.jpg",[12,677,678],{},[98,679,680],{},"英文界面，使用生成的四秒 MP4，包含 AVC\u002FH.264 视频和 AAC 音频。工具未能读取的码率显示为不可用，没有用估算值代替。",[12,682,683],{},"对照下面的清单对号入座：",[39,685,686,692,698,704],{},[42,687,688,691],{},[28,689,690],{},"封装是 MKV 或 TS，编码是 H.264 + AAC","——播放器只是不认这个盒子。换成 MP4，一两分钟的事。",[42,693,694,697],{},[28,695,696],{},"封装是 MP4，视频编码是 H.265","——盒子没问题，是播放器缺 H.265 解码器。换封装救不了，需要重新编码成目标播放器支持的格式。本站 WebM 转换器只针对 WebM 输入，H.265 的 MP4 需要其他支持该源格式的编码工具。",[42,699,700,703],{},[28,701,702],{},"音频编码是 AC-3 或 DTS","——从光盘导出的文件常见。有些浏览器和手机即使装在 MP4 里也放不出来。要处理的是音频轨，不是视频轨。",[42,705,706,709],{},[28,707,708],{},"根本没有音频轨道","——这不是格式问题，是录的时候就没录上声音。",[12,711,712],{},"最后这种情况最常被忽略：一个\"坏掉的视频\"，其实只是录制工具没接到麦克风。",[19,714,716],{"id":715},"第二步该换封装的换封装该重编码的重编码","第二步：该换封装的换封装，该重编码的重编码",[12,718,719,722,723,727],{},[28,720,721],{},"TS 转 MP4。"," TS 文件里如果是兼容的 H.264 视频 + AAC 音频，用 ",[54,724,726],{"href":725},"\u002Fzh-Hans\u002Ftools\u002Fts-to-mp4","TS 转 MP4","。它把编码流直接拷进 MP4，不重新编码，快且无损。",[12,729,730,733,734,736],{},[28,731,732],{},"WebM 转 MP4。"," 浏览器录屏得到的 WebM，需要 H.264\u002FAAC 兼容性时，用 ",[54,735,433],{"href":432},"。注意这个工具会解码后重新编码，不是换封装：需要处理时间，也可能损失一点画质。",[12,738,739],{},[114,740],{"alt":741,"src":443},"WebM 输入与 MP4 输出在重新编码后的文件体积对比",[12,743,744],{},[98,745,746],{},"WebM 转换会重新编码，与上文的 TS 换封装不同。英文界面中的生成样本从 88.9 KB 增至 122.3 KB。",[19,748,749],{"id":749},"改扩展名为什么没用",[12,751,752,753,756,757,760],{},"把 ",[49,754,755],{},"video.webm"," 改名成 ",[49,758,759],{},"video.mp4","，什么都没有转换。封装信息写在文件内部，不在文件名上。较真的播放器会以很奇怪的方式失败，有些干脆拒绝打开。",[12,762,763],{},"这一条之所以单独写，是因为这是大多数人会尝试的第一件事。",[19,765,766],{"id":766},"哪些文件救不回来",[12,768,769],{},"有一类文件这套流程救不了，早点认出来能省一下午。",[12,771,772,775],{},[28,773,774],{},"DRM 加密的流。"," 源是 DRM 保护的，分片就是密文，任何封装操作都还原不出能播的画面。",[12,777,778,781],{},[28,779,780],{},"目标设备不支持该编码。"," 一个 H.265 文件，改扩展名也好、换封装也好，在只支持 H.264 的设备上都不会变得能播。出路只有两条：换一个带对应解码器的播放器，或者真的重新编码一次。",[19,783,784],{"id":784},"常见问题",[12,786,787,790],{},[28,788,789],{},"MKV 或 TS 转 MP4，画质会变差吗？"," 换封装不会。编码数据原样搬进新容器，画质、音质、时长都不变，体积也只差封装开销。TS 有包开销和填充，转完甚至常常更小。",[12,792,793,796],{},[28,794,795],{},"WebM 转 MP4 后文件变大了，是坏了吗？"," 不是。重新编码的输出大小取决于目标码率，浏览器录屏的 WebM 转成 H.264\u002FAAC 的 MP4，体积变大是常见现象。",[12,798,799,802,803,805],{},[28,800,801],{},"视频能播但没声音，是文件坏了吗？"," 多半是音频编码不兼容（比如 AC-3、DTS），或者文件里压根没有音轨。用",[54,804,668],{"href":667},"读一遍就有答案。",[19,807,808],{"id":808},"搞清楚之后的下一步",[12,810,811],{},"要么得到一个到处都能打开的文件——因为问题出在封装；要么得到一个明确结论——问题在编码，需要重新编码。",[12,813,814,815,819],{},"这背后分层的细节——轨道、分片，以及为什么换封装能保住它们——",[54,816,818],{"href":817},"\u002Fzh-Hans\u002Fdocs\u002Fadvanced\u002Fdownload-engine","下载引擎","那篇讲得更细。",{"title":327,"searchDepth":328,"depth":328,"links":821},[822,823,824,825,826,827,828],{"id":611,"depth":328,"text":611},{"id":660,"depth":328,"text":661},{"id":715,"depth":328,"text":716},{"id":749,"depth":328,"text":749},{"id":766,"depth":328,"text":766},{"id":784,"depth":328,"text":784},{"id":808,"depth":328,"text":808},"打不开的视频其实是两个不同的问题：播放器不认封装，和解不了编码，处理方法完全不同。先用工具读一遍文件再动手，能省下白转二十分钟的经历。",{},"一个准确的判断：要么换封装就能播，要么明确知道需要重新编码。","\u002Fzh-hans\u002Fguides\u002Fcheck-a-file-that-will-not-play",6,"convert",{"description":836,"title":600},"视频打不开、无法播放怎么办？先分清是封装（容器）问题还是编码问题：MKV、TS 转 MP4 属于换封装，快且无损；H.265、AC-3 等编码不兼容则必须重新编码。用视频信息工具读出编码和轨道再决定，附改扩展名没用的原因、没有音轨等情况的判断方法。","zh-Hans\u002F8.guides\u002F3.check-a-file-that-will-not-play",[839,595],"\u002Ftools\u002Fvideo-info","3esZPVb2cE6HrZnSXi3w0flI9Uvsitz8YFzpeQTMUeI",{"id":842,"title":843,"author":7,"body":844,"date":338,"description":1090,"difficulty":340,"extension":341,"image":342,"lastModified":343,"meta":1091,"navigation":345,"outcome":1092,"path":1093,"readingTime":589,"robots":342,"scenario":349,"seo":1094,"stem":1096,"tools":1097,"__hash__":1100},"guides_zh_Hans\u002Fzh-Hans\u002F8.guides\u002F4.save-a-live-replay.md","直播回放怎么保存？趁平台删掉前下载或录制成 MP4",{"type":9,"value":845,"toc":1081},[846,849,852,855,861,867,873,879,884,888,897,922,928,933,937,943,946,952,958,961,965,968,974,996,1002,1007,1014,1018,1021,1026,1034,1037,1043,1049,1055,1064,1067,1070],[12,847,848],{},"直播回放是互联网上最短命的视频形态。平台留一周、留一个月，或者某个设置一改就没了。等你要用的时候——写报告、剪集锦、留个记录——通常已经过了那个期限。",[12,850,851],{},"这篇讲的是趁它还在的时候怎么拿到手，以及一个容易被忽略的前提：回放比普通点播更难处理，难度不在操作，在它的三个特性。",[19,853,854],{"id":854},"回放和普通视频有什么不一样",[12,856,857,860],{},[28,858,859],{},"有截止时间。"," 回放按平台规则过期，这个月拿不到，下个月就更拿不到。所以这一次操作就拿到手的低质量文件，胜过没拿到手的高质量文件。",[12,862,863,866],{},[28,864,865],{},"分片更碎。"," 直播推流的切片比点播短得多，常见两到六秒一片，而不是十秒。三小时的回放可能是几千个分片，分片数量是录制中途失败的主要原因。",[12,868,869,872],{},[28,870,871],{},"码率是浮动的。"," 直播编码会跟着推流情况调整，整段回放的画质并不均匀。推流在第二十分钟卡过，那段回放就是糊的，后期救不回来。",[12,874,875],{},[114,876],{"alt":877,"src":878},"直播的时间线：直播中、平台设定的回放窗口、然后被删除","\u002Fimg\u002Fguides\u002Freplay-capture-window.svg",[12,880,881],{},[98,882,883],{},"回放窗口是这套流程唯一可行的时间段，而它有多长不由你决定。",[19,885,887],{"id":886},"第一步看这个页面到底给了你什么","第一步：看这个页面到底给了你什么",[12,889,890,891,893,894,58],{},"动手之前，花三十秒看一眼 Network 面板，筛 ",[49,892,70],{}," 和 ",[49,895,896],{},"mpd",[39,898,899,905,916],{},[42,900,901,904],{},[28,902,903],{},"出现了清单。"," 流没有加密，而且有目录可循。这时你有两种选择：直接取媒体数据，或者录屏。取媒体数据更好，它拷的是编码流，不是对画面再压一遍。",[42,906,907,910,911,915],{},[28,908,909],{},"没有清单，但视频能播。"," 页面可能用 Media Source Extensions 自己喂分片。这种情况下",[54,912,914],{"href":913},"\u002Fzh-Hans\u002Frecording","录制工具","仍能取到媒体数据，同样避免重新编码。",[42,917,918,921],{},[28,919,920],{},"只有分片请求没有清单，响应是乱码。"," 这是 DRM。到此为止——录密文只会得到一个打不开的文件，这篇也不是讲这个的。",[12,923,924],{},[114,925],{"alt":926,"src":927},"浏览器 Network 面板筛选 m3u8，显示主清单和变体清单请求","\u002Fscreenshots\u002Fnetwork-filter-m3u8.png",[12,929,930],{},[98,931,932],{},"复用项目已有的 Mux 公开测试流截图，并非直播回放实测。筛选 m3u8 只显示清单；查看分片请求时另筛 ts 或 m4s。",[19,934,936],{"id":935},"第二步录制以及决定录多长","第二步：录制，以及决定录多长",[12,938,939,940,942],{},"在播放器里打开回放，点击 FlowPick 扩展图标，再选择录制控件。可以使用时，优先选择 MSE 缓冲区模式；扩展会带着当前会话打开",[54,941,914],{"href":913},"。直接访问这个地址只会显示操作说明，不会启动录制。",[12,944,945],{},"两个实际操作上的提醒：",[12,947,948,951],{},[28,949,950],{},"源还在直播的话，录制快不过真实时间。"," 还没写完的直播没有\"后面的分片\"可取。回放已经完整时，取媒体数据可以快于播放速度；还在直播时，你受时钟限制。",[12,953,954,957],{},[28,955,956],{},"别碰那个标签页。"," 录制在页面里跑。多数浏览器切到后台没关系，但关闭、休眠、或者标签页被浏览器回收，录制就断了。",[12,959,960],{},"如果回放四小时，而你只要其中一场比赛，换个做法：只在你需要的那段开着录。比全录完再剪省事，也把\"录到三小时突然断掉\"的概率砍了一半。",[19,962,964],{"id":963},"第三步修封装不动画面","第三步：修封装，不动画面",[12,966,967],{},"录出来的东西取决于源是什么，直播流常见的是分片 MP4 或 MPEG-TS。",[12,969,970,971,973],{},"文件到处都能打开的话，跳过这步。打不开，先用",[54,972,668],{"href":667},"读一遍再决定：",[39,975,976,985],{},[42,977,978,981,982,984],{},[28,979,980],{},"封装是 TS，编码是 H.264 + AAC。"," 用 ",[54,983,726],{"href":725},"。把编码流拷进一个支持更好的壳，不重新编码，快且无损。",[42,986,987,990,991,995],{},[28,988,989],{},"本来就是 MP4，还是打不开。"," 先检查编码和文件完整性。播放器不支持的编码需要重新编码，TS 换封装改变不了编码。先看",[54,992,994],{"href":993},"\u002Fzh-Hans\u002Fguides\u002Fcheck-a-file-that-will-not-play","容器与编码那篇","，别在这里耗时间。",[12,997,998],{},[114,999],{"alt":1000,"src":1001},"TS 转 MP4 结果，显示 35.8 KB 输入与 31.4 KB 输出","\u002Fimg\u002Fguides\u002Fts-to-mp4-sizes.jpg",[12,1003,1004],{},[98,1005,1006],{},"英文界面，实际处理生成的 TS 样本：35.8 KB 输入 → 31.4 KB MP4。封装开销会改变体积；时长和轨道需要用视频信息工具另行核对。",[12,1008,1009,1010,1013],{},"一个容易误会的现象：TS 转 MP4 之后文件往往",[98,1011,1012],{},"更小","，但什么都没重新编码。TS 有包开销和填充，MP4 不需要。体积降 15% 是正常的，不代表丢了画质。",[19,1015,1017],{"id":1016},"第四步归档之前先剪","第四步：归档之前先剪",[12,1019,1020],{},"一场比赛、一场活动、一次直播，三小时的回放通常只会看一遍。全留着占地方，也让\"当时那段\"更难找。",[12,1022,259,1023,1025],{},[54,1024,263],{"href":262},"按时间点切。两个习惯值得养成：",[39,1027,1028,1031],{},[42,1029,1030],{},"剪完验证之前别删原件。裁剪产出的是新文件，而这次录的可能是网上已经不存在的东西的唯一副本。",[42,1032,1033],{},"平台给了章节就在章节边界下刀，别切在一句话中间。之后的命名和检索都省事。",[19,1035,1036],{"id":1036},"翻车了怎么办",[12,1038,1039,1042],{},[28,1040,1041],{},"录制在分片上限附近停了。"," 几千个分片对内存是不小的负担。拆开做：先录前半段，再录后半段。两个能拼起来的文件，好过一个在 80% 处失败的文件。",[12,1044,1045,1048],{},[28,1046,1047],{},"长时间录制音画不同步。"," 这更多是直播编码本身的问题，不是工具的问题，时长越长越明显。缩短单次录制能减轻，浏览器端没有可靠的事后修复办法。",[12,1050,1051,1054],{},[28,1052,1053],{},"录到一半回放过期了。"," 缺失的尾巴找不回来。这是唯一一个\"要录就早点录\"的理由。",[12,1056,1057,1060,1061,1063],{},[28,1058,1059],{},"录出来能播但没声音。"," 音频是独立轨道，没被取到。重新录制时把音频轨选上；如果源本身有独立的音频清单，也可以用",[54,1062,286],{"href":285},"单独取。",[19,1065,1066],{"id":1066},"收尾",[12,1068,1069],{},"一个不再依赖平台保留策略的本地文件，封装能在播放器和剪辑软件里打开。剪短、按日期和活动命名，然后从冷启动播一遍——有些录制文件读缓存时正常，重新加载就废了，这种事现在发现比半年后发现好。",[12,1071,1072,1073,572,1077,58],{},"直播场景的更多背景，见",[54,1074,1076],{"href":1075},"\u002Fzh-Hans\u002Fdocs\u002Fusecases\u002Flive-replays","直播回放下载",[54,1078,1080],{"href":1079},"\u002Fzh-Hans\u002Fdocs\u002Ffeatures\u002Faudio-capture","音频捕获",{"title":327,"searchDepth":328,"depth":328,"links":1082},[1083,1084,1085,1086,1087,1088,1089],{"id":854,"depth":328,"text":854},{"id":886,"depth":328,"text":887},{"id":935,"depth":328,"text":936},{"id":963,"depth":328,"text":964},{"id":1016,"depth":328,"text":1017},{"id":1036,"depth":328,"text":1036},{"id":1066,"depth":328,"text":1066},"直播回放是互联网上最短命的视频：平台留一周或一个月，说删就删。这篇讲过期前怎么拿到能用的文件——先判断页面给了什么，再决定取流还是录制，最后修封装、剪片段。",{},"一份不再依赖平台保留策略的本地文件，封装是播放器和剪辑软件都认的。","\u002Fzh-hans\u002Fguides\u002Fsave-a-live-replay",{"description":1095,"title":843},"直播回放下载和保存方法：回放会过期、分片比点播更碎、码率浮动，趁平台删除前在浏览器里取流或录制成 MP4，再用 TS 转 MP4 修封装、视频裁剪剪出要的片段，得到不依赖平台保留策略的本地文件。附录制中断、音画不同步、回放过期、录出来没声音等问题的应对。","zh-Hans\u002F8.guides\u002F4.save-a-live-replay",[1098,1099,356],"\u002Frecording","\u002Ftools\u002Fts-to-mp4","Ex-8R204lxQ8_UYEqt56SMTT_USk2jA35pJeY0kUoRE",{"id":1102,"title":1103,"author":7,"body":1104,"date":338,"description":1344,"difficulty":340,"extension":341,"image":342,"lastModified":343,"meta":1345,"navigation":345,"outcome":1346,"path":1347,"readingTime":833,"robots":342,"scenario":1348,"seo":1349,"stem":1351,"tools":1352,"__hash__":1355},"guides_zh_Hans\u002Fzh-Hans\u002F8.guides\u002F5.separate-vocals-from-a-track.md","人声分离怎么做？在浏览器里把歌曲拆成人声和伴奏",{"type":9,"value":1105,"toc":1334},[1106,1109,1112,1115,1129,1132,1135,1139,1145,1151,1154,1158,1165,1171,1176,1179,1187,1193,1198,1202,1205,1208,1214,1220,1226,1232,1237,1241,1244,1247,1253,1258,1261,1297,1300,1304,1310,1316,1322,1328,1331],[12,1107,1108],{},"把混好的曲子拆成人声和伴奏，听起来像个魔术，直到你真的试一次。结果有用，但也明显不完美。开始之前分清这两点，能省掉一下午的失望。",[19,1110,1111],{"id":1111},"这个工具实际在做什么",[12,1113,1114],{},"它跑的是 Kim Vocal 2，一个被训练来判断\"混音里哪部分属于人声、哪部分属于其他\"的模型。输出两条轨：",[39,1116,1117,1123],{},[42,1118,1119,1122],{},[28,1120,1121],{},"人声","——模型判断为嗓音的部分",[42,1124,1125,1128],{},[28,1126,1127],{},"伴奏","——模型判断不是嗓音的其余部分",[12,1130,1131],{},"两条都是 WAV。全程不上传，模型和运行时首次下载约 64 MB，之后在本地跑。",[12,1133,1134],{},"它不是什么：不是无损还原。工具自己的说明就写了，分离可能在人声里留下乐器、也可能改变人声本身。鼓和镲尤其容易漏进人声轨，处理痕迹重的唱段拆出来会偏薄。这不是参数没调好，是这个层级的技术就这样。",[19,1136,1138],{"id":1137},"开始之前两个限制决定流程","开始之前：两个限制决定流程",[12,1140,1141,1144],{},[28,1142,1143],{},"单文件最长十分钟。"," 超过就直接拒绝。这就是流程里必须有裁剪这一步的原因——不是讲究，是硬限制。",[12,1146,1147,1150],{},[28,1148,1149],{},"一次一个文件，只支持桌面端。"," 这是桌面预览版，不是批量工具。扔一个文件夹进去是做不到的。",[12,1152,1153],{},"还有一个授权问题值得说清楚：处理你自己拥有或已获授权的音频。把一首商业曲子拆开，并不等于你获得了这两条分轨的使用权。",[19,1155,1157],{"id":1156},"第一步裁到你要的那一段","第一步：裁到你要的那一段",[12,1159,259,1160,1164],{},[54,1161,1163],{"href":1162},"\u002Fzh-Hans\u002Ftools\u002Faudio-trimmer","音频裁剪","把源文件切到十分钟以内。",[12,1166,1167],{},[114,1168],{"alt":1169,"src":1170},"把一段长音频裁到分离工具十分钟上限以内的样子","\u002Fimg\u002Fguides\u002Faudio-trim-to-limit.svg",[12,1172,1173],{},[98,1174,1175],{},"要的那段超过十分钟就切成两段分别处理。对这类用途来说，接缝通常不影响效果。",[12,1177,1178],{},"两个习惯：",[39,1180,1181,1184],{},[42,1182,1183],{},"切在语句边界上，不要切在字中间。模型对连续的说话声或完整的乐句处理得更好，对从半个音节开始的碎片处理得更差。",[42,1185,1186],{},"裁好的文件留着。同一段输入重跑分离，结果会有细微差别，对比时需要一份稳定的参照。",[12,1188,1189],{},[114,1190],{"alt":1191,"src":1192},"语音波形，起点为一秒、终点为四秒，选区时长三秒","\u002Fimg\u002Fguides\u002Faudio-trimmer-range.jpg",[12,1194,1195],{},[98,1196,1197],{},"英文界面，生成语音样本中选中了 0:01–0:04。这张短样例演示控件操作，不代表已测试十分钟音乐。",[19,1199,1201],{"id":1200},"第二步先跑-30-秒预览再决定要不要全跑","第二步：先跑 30 秒预览，再决定要不要全跑",[12,1203,1204],{},"工具有前 30 秒的预览。用它。CPU 上跑全段可能是音频时长的好几倍，等二十分钟才发现输入不行，代价太大。",[12,1206,1207],{},"预览里重点听三件事：",[12,1209,1210,1213],{},[28,1211,1212],{},"串音。"," 放人声轨，听有没有鼓、贝斯或者混响尾巴。编曲密的曲子容易漏，编曲稀疏的通常没事。",[12,1215,1216,1219],{},[28,1217,1218],{},"变薄。"," 放伴奏轨，听人声是真的没了还是只是变小了。伴奏里残留人声是最常见的抱怨，这属于正常现象，不是故障。",[12,1221,1222,1225],{},[28,1223,1224],{},"音量关系。"," 两条轨用同一个输出增益导出，彼此是平衡的。预览里觉得某条明显更响，那是原混音的比例，不是导出的问题。",[12,1227,1228],{},[114,1229],{"alt":1230,"src":1231},"人声分离结果，可切换原音、人声和伴奏试听","\u002Fimg\u002Fguides\u002Fvocal-separator-preview.jpg",[12,1233,1234],{},[98,1235,1236],{},"英文界面，使用生成语音演示，并非混音歌曲。分离结果不能用于证明音乐分离质量。",[19,1238,1240],{"id":1239},"第三步跑完整段并导出","第三步：跑完整段并导出",[12,1242,1243],{},"开始分离，等它结束。浏览器能用 GPU 时会明显快一些；核显机器上会退回 CPU，并且提示可能需要音频时长的好几倍时间。",[12,1245,1246],{},"结果存在浏览器的临时空间里。刷新页面能在十分钟内找回，但那是便利，不是保存。跑完立刻把两条 WAV 下载到本地。",[12,1248,1249],{},[114,1250],{"alt":1251,"src":1252},"完整分离结果，显示人声与伴奏的两个 WAV 下载按钮及体积","\u002Fimg\u002Fguides\u002Fvocal-separator-download.jpg",[12,1254,1255],{},[98,1256,1257],{},"英文界面，实际完整处理了短生成语音样本。离开流程前应分别下载两个 WAV 文件。",[19,1259,1260],{"id":1260},"拆出来的两条轨能干什么",[39,1262,1263,1269,1275,1286],{},[42,1264,1265,1268],{},[28,1266,1267],{},"练习","——跟着伴奏弹或唱",[42,1270,1271,1274],{},[28,1272,1273],{},"翻唱或改编","——拿伴奏当底",[42,1276,1277,1280,1281,1285],{},[28,1278,1279],{},"转录前处理","——把人声轨送去",[54,1282,1284],{"href":1283},"\u002Fzh-Hans\u002Ftools\u002Faudio-to-text","音频转文字","，少了音乐干扰，识别通常更干净",[42,1287,1288,1291,1292,1296],{},[28,1289,1290],{},"转格式","——WAV 很大，要分享就用",[54,1293,1295],{"href":1294},"\u002Fzh-Hans\u002Ftools\u002Faudio-converter","音频转换","转成 MP3 或 M4A",[12,1298,1299],{},"转录这条值得单独提：它是少数\"分离之后另一个工具的效果真的变好\"的情况，而不只是产出一个你想要的文件。",[19,1301,1303],{"id":1302},"分离效果不理想先对号入座","分离效果不理想？先对号入座",[12,1305,1306,1309],{},[28,1307,1308],{},"文件被拒，说太长。"," 要么跳过了裁剪，要么选区本身还超过十分钟。限制算的是裁剪后的输出，不是源文件。",[12,1311,1312,1315],{},[28,1313,1314],{},"人声听起来像泡在水里。"," 分离痕迹过重。换同一首曲子的别的段落试试，密的段落比稀疏的难处理。",[12,1317,1318,1321],{},[28,1319,1320],{},"伴奏里还留着人声。"," 大部分素材都这样。这里没有\"把人声再压一压\"的选项——要从一个完整的混音母带里得到干净的伴奏，这个工具做不到。",[12,1323,1324,1327],{},[28,1325,1326],{},"CPU 上一直跑不完。"," 取消比干等好；不会丢东西，已完成的部分会被丢弃、临时文件会释放。缩短片段，或者换一台有可用 GPU 的机器。",[19,1329,1330],{"id":1330},"期望值放在哪",[12,1332,1333],{},"两条 WAV，够用于练习、当伴奏、给转录做预处理，但达不到录音室分轨的水准。这个界限就是\"浏览器本地的人声分离能做什么\"的诚实答案。",{"title":327,"searchDepth":328,"depth":328,"links":1335},[1336,1337,1338,1339,1340,1341,1342,1343],{"id":1111,"depth":328,"text":1111},{"id":1137,"depth":328,"text":1138},{"id":1156,"depth":328,"text":1157},{"id":1200,"depth":328,"text":1201},{"id":1239,"depth":328,"text":1240},{"id":1260,"depth":328,"text":1260},{"id":1302,"depth":328,"text":1303},{"id":1330,"depth":328,"text":1330},"用本地跑的 AI 模型把混音拆成人声、伴奏两条 WAV：单次十分钟上限怎么绕、30 秒预览该听什么、为什么输出是两条 WAV，以及这种分离能做到和做不到的分界线。",{},"两条 WAV——人声和伴奏——来自一段你有权处理的音频。","\u002Fzh-hans\u002Fguides\u002Fseparate-vocals-from-a-track","edit",{"description":1350,"title":1103},"人声分离和伴奏提取教程：在浏览器里本地运行 AI 模型，把混好的歌曲拆成人声轨和伴奏轨，输出两条 WAV，全程不上传。包含超过十分钟上限前的裁剪方法、用 30 秒预览判断分离质量、导出后转 MP3 分享，以及练习伴奏、翻唱底噪、转录预处理等用途和效果边界。","zh-Hans\u002F8.guides\u002F5.separate-vocals-from-a-track",[1353,1354],"\u002Ftools\u002Faudio-trimmer","\u002Ftools\u002Fvocal-separator","wrMM1POXB45bo38KqyAXIwmIX8Mul03bmg4KqGMJIEg",{"id":1357,"title":1358,"author":7,"body":1359,"date":338,"description":1563,"difficulty":585,"extension":341,"image":342,"lastModified":343,"meta":1564,"navigation":345,"outcome":1565,"path":1566,"readingTime":833,"robots":342,"scenario":590,"seo":1567,"stem":1569,"tools":1570,"__hash__":1573},"guides_zh_Hans\u002Fzh-Hans\u002F8.guides\u002F6.pull-one-answer-from-a-podcast.md","播客转文字：两小时的节目只转录你需要的那一段",{"type":9,"value":1360,"toc":1554},[1361,1364,1367,1371,1374,1377,1380,1384,1395,1401,1411,1417,1422,1425,1429,1432,1437,1440,1446,1451,1454,1459,1464,1468,1474,1477,1480,1486,1491,1495,1498,1512,1515,1518,1524,1530,1536,1542,1544,1547],[12,1362,1363],{},"某人在播客里说了句有用的话。你大概记得位置——前三分之一，第二个广告之后。你需要准确的原话，用来引用、做笔记或者回复别人。",[12,1365,1366],{},"最直觉的做法是把整期转录成文字再搜。这确实可行，但也是最慢的一条路。这篇讲快的那条。",[19,1368,1370],{"id":1369},"为什么整期全转录是错的默认选项","为什么\"整期全转录\"是错的默认选项",[12,1372,1373],{},"识别成本跟时长成正比。两小时的音频大约是半小时节目的四倍时间，产出的文稿里有九成跟你需要的那句无关。",[12,1375,1376],{},"播客本身的结构还有利于先剪：广告段、自我推广、重复的回顾，这些本来就是你听的时候要跳过的部分，却会原样进入转录。",[12,1378,1379],{},"正确的顺序是：一边快放一边定位、把那段剪出来、只转录那几分钟。",[19,1381,1383],{"id":1382},"第一步拿到播客的音频文件","第一步：拿到播客的音频文件",[12,1385,1386,1387,1390,1391,1394],{},"找到音频源。多数播客页面上的音频就是一条 MP3 或 M4A 直链，确认的办法是在 Network 面板筛 ",[49,1388,1389],{},"media","，或者看页面源码里的 ",[49,1392,1393],{},"\u003Caudio>"," 元素、RSS 里的 enclosure 地址。",[12,1396,1397,1398,1400],{},"把链接粘进",[54,1399,286],{"href":285},"。它接受 MP3、M4A\u002FAAC、WAV、OGG、FLAC 的直链。",[12,1402,1403,1404,1406,1407,58],{},"如果这档播客给的是 HLS 音频清单而不是直链——平台托管的节目越来越常这样——改用 ",[54,1405,217],{"href":216},"，读清单的做法见",[54,1408,1410],{"href":1409},"\u002Fzh-Hans\u002Fguides\u002Farchive-a-course-over-hls","课程归档那篇",[12,1412,1413],{},[114,1414],{"alt":1415,"src":1416},"音频直链与待保存 WAV 结果，文件体积为 180.5 KB","\u002Fimg\u002Fguides\u002Faudio-downloader-url.jpg",[12,1418,1419],{},[98,1420,1421],{},"英文界面，直接获取本地公开地址上的生成语音，无需扩展。结果面板显示格式和体积；检查时长需点击 Inspect audio（检查音频）。",[12,1423,1424],{},"动手之前确认一件事：文件时长对不对。两小时的节目下来一个 12 分钟的文件，那是预告片，不是正片。",[19,1426,1428],{"id":1427},"第二步定位然后剪出来","第二步：定位，然后剪出来",[12,1430,1431],{},"这是最多人跳过的一步，也是最能省时间的一步。",[12,1433,259,1434,1436],{},[54,1435,1163],{"href":1162},"打开下载好的文件。能快放就用 1.5 倍或 2 倍听，或者直接看波形拖，记下入点和出点。目标是一个两到十分钟的窗口，里面装着完整的论述——不是只要那一句。",[12,1438,1439],{},"故意剪宽一点是有原因的。三句话的文稿根本看不出这句话在回答什么，你最后还是得回去听。",[12,1441,1442],{},[114,1443],{"alt":1444,"src":1445},"两小时的播客剪成一个八分钟的窗口，只转录这一段而不是整期","\u002Fimg\u002Fguides\u002Fpodcast-excerpt.svg",[12,1447,1448],{},[98,1449,1450],{},"先定位，再剪，最后转录。顺序对了，这件事是几分钟，不是一小时。",[12,1452,1453],{},"顺手把前后文里的口播广告剪掉。那些内容没有信息量，而且是识别效果最差的部分——人声底下压着音乐和音效。",[12,1455,1456],{},[114,1457],{"alt":1458,"src":1192},"音频波形中的三秒选区，以及可编辑的起止时间",[12,1460,1461],{},[98,1462,1463],{},"英文界面，使用生成语音演示，并非播客录音。在自己的节目中用同样的起止时间控件选取需要的八分钟片段。",[19,1465,1467],{"id":1466},"第三步转录这一段","第三步：转录这一段",[12,1469,1470,1471,1473],{},"把剪出来的片段交给",[54,1472,1284],{"href":1283},"。播客音频通常是最容易处理的一类素材：一到两个人、像样的麦克风、语言稳定。",[12,1475,1476],{},"语言要自己指定，别依赖自动检测。检测是取开头几秒来判断的，而一段从句子中间开始的片段，可用的判断依据比整期少。",[12,1478,1479],{},"段落里有人名、数字或专业术语，选标准模型——需要引用的一段里通常都有。轻量模型够用来确认\"对，就是这个部分\"。",[12,1481,1482],{},[114,1483],{"alt":1484,"src":1485},"音频转录结果，显示时间戳、可编辑文本和字幕导出控件","\u002Fimg\u002Fguides\u002Faudio-to-text-clip.jpg",[12,1487,1488],{},[98,1489,1490],{},"英文界面，Whisper Tiny 在 CPU 上实际识别生成的英语语音。这里只演示界面，不代表播客识别质量。",[19,1492,1494],{"id":1493},"第四步引用之前先核对","第四步：引用之前先核对",[12,1496,1497],{},"识别能抓到大概意思，但漏掉的正好是引用时最要紧的细节。把一句话归到某个人名下之前：",[39,1499,1500,1503,1506,1509],{},[42,1501,1502],{},"专有名词回到那个时间点重听一遍",[42,1504,1505],{},"数字重点核对——\"十五\"和\"五十\"是已知的易错点",[42,1507,1508],{},"确认是谁说的。这个版本不区分说话人，两人对谈时你得自己对上是哪一位",[42,1510,1511],{},"笔记里留下时间点。万一这个说法有争议，节目里的时间戳就是你的依据",[12,1513,1514],{},"文稿里的时间点是相对于你剪出来的片段，不是相对于整期节目。要在整期里标时间，记得加上第二步的偏移量。",[19,1516,1517],{"id":1517},"中途出问题怎么办",[12,1519,1520,1523],{},[28,1521,1522],{},"下载链接 403。"," 播客 CDN 会给地址签名，复制来的链接会过期。重新打开节目页复制一条新的。",[12,1525,1526,1529],{},[28,1527,1528],{},"片段从半个字开始。"," 转录开头是个碎片，模型容易读错。入点比你以为的再多剪两秒。",[12,1531,1532,1535],{},[28,1533,1534],{},"文字都对，但顺序乱了。"," 长停顿和抢话会干扰分段。短片段一般手工调几下就好。",[12,1537,1538,1541],{},[28,1539,1540],{},"这期节目要登录才能听。"," 这套流程的前提是音频公开可访问。它不是付费墙的绕法，工具也没有往那个方向做。",[19,1543,1066],{"id":1066},[12,1545,1546],{},"一段八分钟的音频、它的文稿，两者都有时间点，再记一段\"这个片段在整期里的偏移量\"。音频以后还能再听一遍核对，光有文稿做不到。",[12,1548,1549,1550,58],{},"播客和音频场景的更多做法，见",[54,1551,1553],{"href":1552},"\u002Fzh-Hans\u002Fdocs\u002Fusecases\u002Fpodcasts-audio","播客与音频下载",{"title":327,"searchDepth":328,"depth":328,"links":1555},[1556,1557,1558,1559,1560,1561,1562],{"id":1369,"depth":328,"text":1370},{"id":1382,"depth":328,"text":1383},{"id":1427,"depth":328,"text":1428},{"id":1466,"depth":328,"text":1467},{"id":1493,"depth":328,"text":1494},{"id":1517,"depth":328,"text":1517},{"id":1066,"depth":328,"text":1066},"为了引用一句话去转录两小时的播客，是最慢的一条路。先下载音频、快放定位、剪出那几分钟，再只转录剪出来的片段。从播客链接到可引用文稿的最短路径。",{},"一段八分钟的音频和它的文稿，而不是两小时的。","\u002Fzh-hans\u002Fguides\u002Fpull-one-answer-from-a-podcast",{"description":1568,"title":1358},"播客音频转文字的方法：想引用某句话时，先用音频下载器拿到 MP3\u002FM4A 直链文件（HLS 清单则用 M3U8 下载器），快放定位后剪出两到十分钟的片段，只转录这一段，省下整期转录的等待。附下载链接 403 过期、片段开头识别出错等问题的处理，以及引用前的核对清单。","zh-Hans\u002F8.guides\u002F6.pull-one-answer-from-a-podcast",[1571,1353,1572],"\u002Faudio-downloader","\u002Ftools\u002Faudio-to-text","s-wM1YuBNjeJkYmr08nnleSgTDMYVloXf4GcoAdBxHM",{"id":1575,"title":1576,"author":7,"body":1577,"date":338,"description":1816,"difficulty":585,"extension":341,"image":342,"lastModified":343,"meta":1817,"navigation":345,"outcome":1818,"path":1819,"readingTime":833,"robots":342,"scenario":1348,"seo":1820,"stem":1822,"tools":1823,"__hash__":1827},"guides_zh_Hans\u002Fzh-Hans\u002F8.guides\u002F7.clean-up-a-field-recording.md","录音降噪教程：先降噪还是先提音量，顺序错了全白做",{"type":9,"value":1578,"toc":1807},[1579,1582,1585,1588,1591,1597,1603,1609,1615,1618,1622,1625,1632,1638,1643,1646,1650,1653,1659,1664,1667,1678,1681,1687,1693,1699,1704,1707,1711,1719,1722,1730,1736,1741,1744,1748,1751,1759,1765,1771,1775,1781,1787,1793,1802,1804],[12,1580,1581],{},"真房间里录出来的声音，和你想象的不一样。有风扇、有冰箱、有车流，说话的人离麦克风三米远。通常两个问题一起来：太小声，也太吵。",[12,1583,1584],{},"直觉是先调大音量，因为那是最明显的问题。这个顺序是错的，后面会解释为什么。",[19,1586,1587],{"id":1587},"降噪能做和不能做的",[12,1589,1590],{},"降噪跑的是 RNNoise，按短帧处理，判断哪部分是人声、哪部分是噪声。这个设计直接决定了它的边界：",[12,1592,1593,1596],{},[28,1594,1595],{},"稳态噪声处理得好。"," 风扇声、空调声、房间底噪、远处的车流——频谱稳定的都行。",[12,1598,1599,1602],{},[28,1600,1601],{},"背景里的说话声处理得差。"," 那是语音不是噪声，模型会保留下来，而且可能把人声弄坏。",[12,1604,1605,1608],{},[28,1606,1607],{},"被盖住的字救不回来。"," 噪声把某个音节完全盖住，那个音节就是没了，任何处理都还原不出。",[12,1610,1611,1614],{},[28,1612,1613],{},"会损伤音乐。"," 录音里有音乐的话，处理后通常会变怪。这是个人声工具。",[12,1616,1617],{},"先判断你手上是哪种情况，再决定要不要走这套流程。",[19,1619,1621],{"id":1620},"第一步把音频从视频里取出来","第一步：把音频从视频里取出来",[12,1623,1624],{},"现场录音常常装在视频容器里：手机拍的视频、录屏、相机文件。",[12,1626,259,1627,1631],{},[54,1628,1630],{"href":1629},"\u002Fzh-Hans\u002Ftools\u002Faudio-extractor","音频提取","把音轨取出来。后面每一步都是跟一个 40 MB 的音频打交道，而不是 2 GB 的视频，速度和整理难度都不一样。",[12,1633,1634],{},[114,1635],{"alt":1636,"src":1637},"提取后的 M4A 音频结果，显示 AAC 编码、原始质量、无需重新编码和 33.1 KB 体积","\u002Fimg\u002Fguides\u002Faudio-extractor-output.jpg",[12,1639,1640],{},[98,1641,1642],{},"英文界面，生成的四秒 MP4 → 33.1 KB AAC\u002FM4A 音频。Original audio（原始音频）模式直接拷贝音频数据，不重新编码。",[12,1644,1645],{},"源本来就是音频文件的话，跳过这步。",[19,1647,1649],{"id":1648},"第二步先降噪再提音量","第二步：先降噪，再提音量",[12,1651,1652],{},"这是决定结果的一步。",[12,1654,1655],{},[114,1656],{"alt":1657,"src":1658},"两条路径对比：先放大音量会把底噪一起放大；先降噪再放大，结果更干净","\u002Fimg\u002Fguides\u002Fdenoise-before-gain.svg",[12,1660,1661],{},[98,1662,1663],{},"先加增益，噪声也一起加。降噪器面对的是一个更响但同样脏的信号，判断并不会更准。",[12,1665,1666],{},"先调大音量，所有东西都跟着变大，噪声也一样。降噪器随后看到的是一个更响但噪声比例没变的信号，它的估计不会更好——而你的耳朵这时候更容易听出处理痕迹。",[12,1668,1669,1670,455,1674,1677],{},"所以顺序是：用",[54,1671,1673],{"href":1672},"\u002Fzh-Hans\u002Ftools\u002Faudio-noise-remover","降噪",[28,1675,1676],{},"原始电平","的文件处理，干净了之后再谈音量。",[12,1679,1680],{},"两个设置要留意：",[12,1682,1683,1686],{},[28,1684,1685],{},"先预览。"," 工具默认处理前 30 秒作为预览。长文件一定要先听预览，因为全量处理要等很久，而结果未必更好。",[12,1688,1689,1692],{},[28,1690,1691],{},"降噪比例。"," 输出是按百分比混合的，值越低，混回原音的部分越多。拉满降得最干净，但人声的质感也去得最多，听起来像被处理过。准备发出去的素材，一般不要拉满；只准备用来转录的，可以拉高一些。",[12,1694,1695],{},[114,1696],{"alt":1697,"src":1698},"RNNoise 界面，显示 80% 降噪混合比例、原音与降噪试听，以及 WAV 导出","\u002Fimg\u002Fguides\u002Fnoise-remover-compare.jpg",[12,1700,1701],{},[98,1702,1703],{},"英文界面，使用生成语音、80% 混合比例演示。这不是嘈杂的现场录音，也不是语音质量改善的实测证据。",[12,1705,1706],{},"工具单文件上限 30 分钟。更长的要切分——顺便也是把用不上的部分去掉的理由。",[19,1708,1710],{"id":1709},"第三步小幅度提音量","第三步：小幅度提音量",[12,1712,1713,1714,1718],{},"现在录音干净了，但还是小声。用",[54,1715,1717],{"href":1716},"\u002Fzh-Hans\u002Ftools\u002Faudio-volume-booster","音量提升","处理。",[12,1720,1721],{},"提到听着舒服就行，不要提到响。两个原因：",[39,1723,1724,1727],{},[42,1725,1726],{},"提音量也会把残留的噪声一起提上来，而降噪之后残留的往往是人声换气那种嘶声，模型没能分离干净。",[42,1728,1729],{},"一旦削顶——峰值撞到上限——损伤是永久的。留出余量。",[12,1731,1732],{},[114,1733],{"alt":1734,"src":1735},"音量调整界面，显示增加三分贝、峰值保护，以及原音与处理后音频试听","\u002Fimg\u002Fguides\u002Fvolume-booster-gain.jpg",[12,1737,1738],{},[98,1739,1740],{},"英文界面，生成语音使用 +3 dB 增益并开启峰值保护。显示的 61% 是源音频峰值分析；当前界面没有显示实测输出峰值。",[12,1742,1743],{},"注意齿音：\"s\"和\"sh\"这类音是最先失真的，增益给多了就刺耳。",[19,1745,1747],{"id":1746},"第四步先想清楚这个文件要干什么用","第四步：先想清楚这个文件要干什么用",[12,1749,1750],{},"同一段录音，用途不同，处理方式就不同。导出之前先明确：",[12,1752,1753,1756,1757,58],{},[28,1754,1755],{},"只用来转录。"," 降噪可以重一些，音量适中就好。识别对底噪的敏感度高于绝对响度。处理完交给",[54,1758,1284],{"href":1283},[12,1760,1761,1764],{},[28,1762,1763],{},"要发出去给人听。"," 降噪轻一些，音量做统一。过度处理的人声，听感比轻微的背景噪声更糟。",[12,1766,1767,1770],{},[28,1768,1769],{},"还要继续在剪辑软件里用。"," 导出处理后的 WAV，最后那几 dB 留给剪辑软件做。别在这里一步到位。",[19,1772,1774],{"id":1773},"处理结果不对劲先对号入座","处理结果不对劲？先对号入座",[12,1776,1777,1780],{},[28,1778,1779],{},"听起来像机器人。"," 降噪过头了。回到原文件、降低比例重跑；这个处理不是增量的，必须从源头重来。",[12,1782,1783,1786],{},[28,1784,1785],{},"噪声还在。"," 多半是它本来就不是稳态噪声，或者相对人声太响了。判断一下是风扇声（该有效果）还是旁边有人说话（不会有）。",[12,1788,1789,1792],{},[28,1790,1791],{},"人声又远又薄。"," 麦克风离得远。降噪加不了距离感，它只能去掉不是人声的部分，而远处的说话本来就没多少\"贴脸\"的成分。",[12,1794,1795,1798,1799,1801],{},[28,1796,1797],{},"文件变大了。"," 降噪输出固定是 WAV，不管输入是什么格式。在意体积就用",[54,1800,1295],{"href":1294},"转成 MP3 或 M4A。",[19,1803,1330],{"id":1330},[12,1805,1806],{},"一段对它的用途来说够用的录音，以及一个诚实的判断：隔着房间用手机录的，不会变成演播室访谈，但它可以变成一份完全可搜索的文稿——而那往往才是真正的目的。",{"title":327,"searchDepth":328,"depth":328,"links":1808},[1809,1810,1811,1812,1813,1814,1815],{"id":1587,"depth":328,"text":1587},{"id":1620,"depth":328,"text":1621},{"id":1648,"depth":328,"text":1649},{"id":1709,"depth":328,"text":1710},{"id":1746,"depth":328,"text":1747},{"id":1773,"depth":328,"text":1774},{"id":1330,"depth":328,"text":1330},"手机在现场录的音又小又吵。稳态噪声降得掉、人声干扰降不掉；降噪必须在提音量之前，这个顺序比任何参数都重要。从提取音轨、降噪、增益到按用途导出的完整流程。",{},"一段音量和干净程度都够用、能转录也能发出去的语音录音。","\u002Fzh-hans\u002Fguides\u002Fclean-up-a-field-recording",{"description":1821,"title":1576},"手机现场录音降噪和音量提升教程：先用音频提取把音轨从视频里取出来，再用本地 RNNoise 降噪（对风扇、空调、底噪等稳态噪声有效，对背景人声无效），最后小幅度提音量避免削顶失真。包含降噪比例怎么调、为什么必须先降噪再增益、按转录或发布选择处理强度，以及处理后像机器人等问题的处理。","zh-Hans\u002F8.guides\u002F7.clean-up-a-field-recording",[1824,1825,1826],"\u002Ftools\u002Faudio-extractor","\u002Ftools\u002Faudio-noise-remover","\u002Ftools\u002Faudio-volume-booster","vKp0voC28WD_c1W4K1dUsGdZ-XQbHA6UJHHvlAS-4Lc",1793546715432]