[{"data":1,"prerenderedAt":1021},["ShallowReactive",2],{"blog-zh-Hans-browser-video-processing-performance-benchmarks":3,"blog-zh-Hans-browser-video-processing-performance-benchmarks-surround":1011},{"id":4,"title":5,"author":6,"body":7,"category":992,"date":993,"description":994,"extension":995,"image":996,"lastModified":993,"meta":997,"navigation":998,"path":999,"readingTime":1000,"seo":1001,"stem":1002,"tags":1003,"__hash__":1010},"blog_zh_Hans\u002Fzh-Hans\u002Fblog\u002Fbrowser-video-processing-performance-benchmarks.md","浏览器视频处理性能基准：FFmpeg WASM vs WebCodecs vs 原生","FlowPick 团队",{"type":8,"value":9,"toc":973},"minimark",[10,14,18,24,37,42,53,58,97,102,141,144,148,228,234,238,294,299,306,310,360,365,368,372,375,429,439,442,446,520,525,528,532,585,590,598,601,604,660,663,666,669,672,675,754,759,762,765,771,777,783,789,799,811,814,820,826,832,838,844,848,851,854,862,865,892,895,898,901,914,917,920],[11,12,13],"p",{},"浏览器视频处理的性能宣称一般两种味儿：\"够快，信我\"或者\"WASM 比原生慢 2 倍\"。都没用。这篇是真硬件上的真实数据，附方法论和原始数据，让你自己判断浏览器能不能扛你的工作负载。",[15,16,17],"h2",{"id":17},"测试配置",[11,19,20],{},[21,22,23],"strong",{},"硬件：",[25,26,27,31,34],"ul",{},[28,29,30],"li",{},"Mac：MacBook Pro M2 Pro（12 核）、32GB RAM、macOS 14.5",[28,32,33],{},"Windows：ThinkPad X1 Carbon Gen 11（Intel i7-1370P、14 核）、32GB RAM、Windows 11 23H2",[28,35,36],{},"中端：Acer Aspire 5（Ryzen 5 5500U、8GB RAM）、Windows 11",[11,38,39],{},[21,40,41],{},"浏览器（均为 2026 年 7 月最新稳定版）：",[25,43,44,47,50],{},[28,45,46],{},"Chrome 127",[28,48,49],{},"Firefox 127",[28,51,52],{},"Safari 17.5",[11,54,55],{},[21,56,57],{},"工作负载：",[59,60,61,67,73,79,91],"ol",{},[28,62,63,66],{},[21,64,65],{},"1080p HLS → MP4 重封装"," — 30 分钟视频、300 个 TS 分片、约 500MB",[28,68,69,72],{},[21,70,71],{},"4K HLS → MP4 重封装"," — 30 分钟视频、300 个 TS 分片、约 2.5GB",[28,74,75,78],{},[21,76,77],{},"8K HLS → MP4 重封装"," — 10 分钟视频、100 个 TS 分片、约 4GB",[28,80,81,84,85,90],{},[21,82,83],{},"解码 + 抽帧","（1080p、每秒 1 帧、1800 帧）— ",[86,87,89],"a",{"href":88},"\u002Fzh-Hans\u002Fblog\u002Fwebcodecs-web-workers-opfs-video-processing","WebCodecs 那篇"," 里讲过",[28,92,93,96],{},[21,94,95],{},"DASH → MP4 重封装"," — 跟 #1 同样的视频，但 DASH 源（不需要 TS 解封装）",[11,98,99],{},[21,100,101],{},"测试方案：",[25,103,104,114,124,135],{},[28,105,106,109,110],{},[21,107,108],{},"原生 FFmpeg","（命令行，基线）— ",[111,112,113],"code",{},"ffmpeg -f concat -safe 0 -i list.txt -c copy -f mp4 out.mp4",[28,115,116,119,120,123],{},[21,117,118],{},"FFmpeg WASM（单线程）"," — ",[111,121,122],{},"@ffmpeg\u002Fffmpeg"," 0.12.x，无 pthreads",[28,125,126,119,129,131,132],{},[21,127,128],{},"FFmpeg WASM（多线程）",[111,130,122],{}," 0.12.x，配 ",[111,133,134],{},"CORE_THREADS=8",[28,136,137,140],{},[21,138,139],{},"WebCodecs + Worker"," — 仅解码工作负载；不做重封装",[11,142,143],{},"每个测试跑 5 次；数字取中位数。所有场景方差小于 5%。",[15,145,147],{"id":146},"结果1080p-hls-mp4-重封装30-分钟视频","结果：1080p HLS → MP4 重封装（30 分钟视频）",[149,150,151,170],"table",{},[152,153,154],"thead",{},[155,156,157,161,164,167],"tr",{},[158,159,160],"th",{},"方案",[158,162,163],{},"Mac (M2)",[158,165,166],{},"Win (i7)",[158,168,169],{},"中端 (Ryzen)",[171,172,173,187,201,214],"tbody",{},[155,174,175,178,181,184],{},[176,177,108],"td",{},[176,179,180],{},"8s",[176,182,183],{},"12s",[176,185,186],{},"22s",[155,188,189,192,195,198],{},[176,190,191],{},"FFmpeg WASM 单线程",[176,193,194],{},"75s",[176,196,197],{},"95s",[176,199,200],{},"180s",[155,202,203,206,208,211],{},[176,204,205],{},"FFmpeg WASM 多线程（8 线程）",[176,207,186],{},[176,209,210],{},"28s",[176,212,213],{},"65s",[155,215,216,219,222,225],{},[176,217,218],{},"WebCodecs + Worker（仅解码）",[176,220,221],{},"18s",[176,223,224],{},"24s",[176,226,227],{},"50s",[11,229,230,233],{},[21,231,232],{},"结论："," 多线程 FFmpeg WASM 大约是原生的 2-3 倍、单线程的 3-4 倍。中端硬件上单线程 FFmpeg WASM 对 1080p 勉强能用（30 分钟花 180 秒 = 0.16 倍实时）；多线程没问题（65 秒 = 0.036 倍实时）。",[15,235,237],{"id":236},"结果4k-hls-mp4-重封装30-分钟视频25gb","结果：4K HLS → MP4 重封装（30 分钟视频，2.5GB）",[149,239,240,252],{},[152,241,242],{},[155,243,244,246,248,250],{},[158,245,160],{},[158,247,163],{},[158,249,166],{},[158,251,169],{},[171,253,254,267,280],{},[155,255,256,258,261,264],{},[176,257,108],{},[176,259,260],{},"38s",[176,262,263],{},"52s",[176,265,266],{},"110s",[155,268,269,271,274,277],{},[176,270,191],{},[176,272,273],{},"380s",[176,275,276],{},"480s",[176,278,279],{},"OOM（1.4GB 时崩）",[155,281,282,285,288,291],{},[176,283,284],{},"FFmpeg WASM 多线程",[176,286,287],{},"115s",[176,289,290],{},"145s",[176,292,293],{},"OOM（1.8GB 时崩）",[11,295,296,298],{},[21,297,232],{}," 4K 重封装是单线程 FFmpeg WASM 失效的临界点。中端硬件（8GB）内存压力导致崩溃——WASM 单实例内存上限 2-4GB，分片缓冲 + 解码状态加起来就过了。多线程在高端硬件上能扛 4K，但比原生慢 2-3 倍。",[11,300,301,302,305],{},"中端崩溃才是值得看的部分。就算分块处理（一次处理 N 个分片、写 OPFS、释放内存），4K TS 解封装需要大量工作内存。修复在 ",[86,303,304],{"href":88},"OPFS 流式模式","——别把整个输出装进内存。",[15,307,309],{"id":308},"结果8k-hls-mp4-重封装10-分钟视频4gb","结果：8K HLS → MP4 重封装（10 分钟视频，4GB）",[149,311,312,324],{},[152,313,314],{},[155,315,316,318,320,322],{},[158,317,160],{},[158,319,163],{},[158,321,166],{},[158,323,169],{},[171,325,326,338,348],{},[155,327,328,330,333,335],{},[176,329,108],{},[176,331,332],{},"42s",[176,334,213],{},[176,336,337],{},"OOM",[155,339,340,342,344,346],{},[176,341,191],{},[176,343,337],{},[176,345,337],{},[176,347,337],{},[155,349,350,352,355,358],{},[176,351,284],{},[176,353,354],{},"OOM（3.1GB 时崩）",[176,356,357],{},"OOM（3.4GB 时崩）",[176,359,337],{},[11,361,362,364],{},[21,363,232],{}," 2026 年的 FFmpeg WASM 扛不了 8K。4GB 单实例内存上限是硬墙。就算分块流式，8K HEVC TS 解封装需要同时持多个 100MB+ 分片做 PTS 重排。",[11,366,367],{},"这是已知限制。提案中的 WASM memory64 规范会把它升到 64 位寻址，但 2026 年还在 Chrome 的 flag 后面，Firefox\u002FSafari 没有。",[15,369,371],{"id":370},"结果dash-重封装无-ts-解封装","结果：DASH 重封装（无 TS 解封装）",[11,373,374],{},"同样的 1080p\u002F4K 内容但 DASH 源（fMP4 分片，不需要解封装）：",[149,376,377,389],{},[152,378,379],{},[155,380,381,383,386],{},[158,382,160],{},[158,384,385],{},"Mac (M2) 1080p",[158,387,388],{},"Mac (M2) 4K",[171,390,391,400,409,419],{},[155,392,393,395,398],{},[176,394,108],{},[176,396,397],{},"4s",[176,399,221],{},[155,401,402,404,406],{},[176,403,191],{},[176,405,183],{},[176,407,408],{},"70s",[155,410,411,413,416],{},[176,412,284],{},[176,414,415],{},"6s",[176,417,418],{},"25s",[155,420,421,424,427],{},[176,422,423],{},"纯 JS 拼接（不用 FFmpeg）",[176,425,426],{},"2s",[176,428,183],{},[11,430,431,433,434,438],{},[21,432,232],{}," DASH 快得多，因为没有解封装步骤——",[86,435,437],{"href":436},"\u002Fzh-Hans\u002Fblog\u002Fbrowser-streaming-remux-mp4-isobmff","重封装那篇"," 讲为什么。纯 JS 拼接（完全不用 FFmpeg）对 DASH 可行，跑到接近内存带宽极限。",[11,440,441],{},"这就是为什么 FlowPick 的 DASH 路径比 HLS 路径快——HLS 要解 MPEG-TS，DASH 不用。",[15,443,445],{"id":444},"结果解码-抽帧30-分钟-1080p-抽-1800-帧","结果：解码 + 抽帧（30 分钟 1080p 抽 1800 帧）",[149,447,448,460],{},[152,449,450],{},[155,451,452,454,456,458],{},[158,453,160],{},[158,455,163],{},[158,457,166],{},[158,459,169],{},[171,461,462,472,483,495,507],{},[155,463,464,466,468,470],{},[176,465,108],{},[176,467,221],{},[176,469,224],{},[176,471,263],{},[155,473,474,476,478,480],{},[176,475,191],{},[176,477,290],{},[176,479,200],{},[176,481,482],{},"320s",[155,484,485,487,489,492],{},[176,486,284],{},[176,488,263],{},[176,490,491],{},"68s",[176,493,494],{},"130s",[155,496,497,499,502,504],{},[176,498,139],{},[176,500,501],{},"31s",[176,503,260],{},[176,505,506],{},"85s",[155,508,509,512,514,517],{},[176,510,511],{},"WebCodecs + Worker 池（4 worker）",[176,513,183],{},[176,515,516],{},"16s",[176,518,519],{},"35s",[11,521,522,524],{},[21,523,232],{}," WebCodecs 加 worker 池是浏览器最快的方案——高端硬件上在原生的 2 倍以内。硬件加速真有差。中端硬件上 FFmpeg WASM 多线程跟 WebCodecs 单 worker 相当，因为 Ryzen 5 5500U 的 GPU 弱。",[11,526,527],{},"worker 池的扩展性重要：4 worker 比 1 worker 快约 2.5 倍（亚线性，因 GPU 争用）。8 worker 没多大用——GPU 在 4-6 路并发解码就饱和了。",[15,529,531],{"id":530},"结果浏览器对比mac-m21080p-重封装","结果：浏览器对比（Mac M2，1080p 重封装）",[149,533,534,548],{},[152,535,536],{},[155,537,538,541,543,545],{},[158,539,540],{},"浏览器",[158,542,191],{},[158,544,284],{},[158,546,547],{},"WebCodecs",[171,549,550,560,573],{},[155,551,552,554,556,558],{},[176,553,46],{},[176,555,194],{},[176,557,186],{},[176,559,501],{},[155,561,562,564,567,570],{},[176,563,49],{},[176,565,566],{},"92s",[176,568,569],{},"n\u002Fa（无 pthreads）",[176,571,572],{},"n\u002Fa（无 WebCodecs）",[155,574,575,577,580,582],{},[176,576,52],{},[176,578,579],{},"88s",[176,581,569],{},[176,583,584],{},"35s（codec 支持有限）",[11,586,587,589],{},[21,588,232],{}," Chrome 是唯一所有方案都能跑的浏览器。Firefox 同时缺 WASM pthreads 和 WebCodecs（2026 年中 WebCodecs 还在 flag 后面）。Safari 有 WebCodecs 但 codec 支持有限（无 AV1，VP9 有限）。",[11,591,592,593,597],{},"这就是为什么 FlowPick 推荐 Chrome——见 ",[86,594,596],{"href":595},"\u002Fzh-Hans\u002Fblog\u002Fflowpick-v1-0-0-first-public-release","v1.0.0 发布说明","。",[15,599,600],{"id":600},"内存使用",[11,602,603],{},"峰值内存（Chrome 127、Mac M2、1080p 重封装）：",[149,605,606,618],{},[152,607,608],{},[155,609,610,612,615],{},[158,611,160],{},[158,613,614],{},"峰值内存",[158,616,617],{},"说明",[171,619,620,630,640,650],{},[155,621,622,624,627],{},[176,623,108],{},[176,625,626],{},"80MB",[176,628,629],{},"基线",[155,631,632,634,637],{},[176,633,191],{},[176,635,636],{},"220MB",[176,638,639],{},"WASM 开销 + 分片缓冲",[155,641,642,644,647],{},[176,643,205],{},[176,645,646],{},"280MB",[176,648,649],{},"+ 8 个 worker 上下文",[155,651,652,654,657],{},[176,653,139],{},[176,655,656],{},"95MB",[176,658,659],{},"硬件加速用 GPU 内存，不占主存",[11,661,662],{},"4K 重封装峰值内存翻倍到约 500MB（FFmpeg WASM 多线程）——还在浏览器标签页 2GB 软上限内，但够近，可能要关其他标签页。",[11,664,665],{},"内存曲线影响体验。4K 重封装让 8GB 机器的标签页崩是糟糕体验。FlowPick 的分块处理（一次处理 50 个分片、写 OPFS、释放内存）让 4K 的峰值内存也压在 300MB 以内。",[15,667,668],{"id":668},"流式下载基准",[11,670,671],{},"分片本身能下多快？这是网络瓶颈部分。",[11,673,674],{},"测试：300 个分片、每个约 1.7MB、共 500MB、来自 CloudFront CDN。",[149,676,677,690],{},[152,678,679],{},[155,680,681,684,687],{},[158,682,683],{},"并发",[158,685,686],{},"实际耗时",[158,688,689],{},"有效带宽",[171,691,692,702,712,723,733,744],{},[155,693,694,697,699],{},[176,695,696],{},"1",[176,698,290],{},[176,700,701],{},"3.4 MB\u002Fs",[155,703,704,707,709],{},[176,705,706],{},"4",[176,708,260],{},[176,710,711],{},"13.2 MB\u002Fs",[155,713,714,717,720],{},[176,715,716],{},"6",[176,718,719],{},"26s",[176,721,722],{},"19.2 MB\u002Fs",[155,724,725,728,730],{},[176,726,727],{},"8",[176,729,186],{},[176,731,732],{},"22.7 MB\u002Fs",[155,734,735,738,741],{},[176,736,737],{},"12",[176,739,740],{},"21s",[176,742,743],{},"23.8 MB\u002Fs",[155,745,746,749,751],{},[176,747,748],{},"16",[176,750,224],{},[176,752,753],{},"20.8 MB\u002Fs（更慢——被限速）",[11,755,756,758],{},[21,757,232],{}," 6-8 个并发连接是甜点。超过这个数 CDN 开始按 IP 限速。FlowPick 默认 6。",[11,760,761],{},"\"有效带宽\"被 CDN 卡，不是被浏览器卡。无限并发也跑不过 CDN 允许的上限。",[15,763,764],{"id":764},"方法论细节",[11,766,767,770],{},[21,768,769],{},"预热："," 每个测试跑两次；第一次丢掉（WASM 编译、JIT 预热等）。",[11,772,773,776],{},[21,774,775],{},"电源："," 笔记本插电、性能模式。电池模式 Mac 降频约 30%、Windows 约 50%。",[11,778,779,782],{},[21,780,781],{},"其他标签页："," 无。后台标签页抢 CPU\u002F内存。",[11,784,785,788],{},[21,786,787],{},"散热："," 所有笔记本放在散热垫上。热降频是真的——没主动散热，持续 4K 重封装 5 分钟后掉 15-20%。",[11,790,791,794,795,798],{},[21,792,793],{},"FFmpeg 参数："," ",[111,796,797],{},"-c copy -f mp4 -movflags +faststart"," 做重封装。无滤镜、无转码。",[11,800,801,794,804,807,808,810],{},[21,802,803],{},"WASM 版本：",[111,805,806],{},"@ffmpeg\u002Fcore"," 0.12.10，多线程版配 ",[111,809,134],{},"。COEP\u002FCOOP 头正确设置以支持 SharedArrayBuffer。",[15,812,813],{"id":813},"这些数字意味着什么",[11,815,816,819],{},[21,817,818],{},"1080p 内容（最常见）："," 浏览器扛得住。FFmpeg WASM 多线程 30 分钟 1080p 在 22-65 秒，看硬件。能用 WebCodecs 更快。原生快 2-3 倍但要安装。",[11,821,822,825],{},[21,823,824],{},"4K 内容："," 高端硬件（16GB+ RAM、近期 CPU）上浏览器扛得住。中端硬件挣扎。分块处理是必须的。",[11,827,828,831],{},[21,829,830],{},"8K 内容："," 2026 年浏览器扛不住。等 memory64 WASM 或者用原生。",[11,833,834,837],{},[21,835,836],{},"解码密集型（抽帧、分析）："," WebCodecs 加 worker 池是明显赢家。好硬件上在原生 2 倍以内。",[11,839,840,843],{},[21,841,842],{},"广泛 codec 支持："," FFmpeg WASM。WebCodecs 限于浏览器支持的 codec（H.264、H.265、VP9、AV1——每个浏览器有 caveat）。",[15,845,847],{"id":846},"我的看法浏览器对-90-场景够用","我的看法：浏览器对 90% 场景够用",[11,849,850],{},"\"浏览器做不了真视频处理\"这话过时了。1080p 重封装和解码——覆盖绝大多数真实使用——现代硬件跑 Chrome 浏览器视频处理在原生的 2-3 倍以内。够快了，几秒的延迟差（30 分钟视频多等几秒）远不如工作流的差（不装、不配 PATH、不装 FFmpeg）重要。",[11,852,853],{},"剩下 10%——中端硬件上的 4K、任何地方的 8K、稀有 codec——还得原生。这没关系。什么活用什么工具。",[11,855,856,857,861],{},"FlowPick 的赌注：浏览器里优化 90% 场景，剩下 10% 给\"用 yt-dlp\"的建议。",[86,858,860],{"href":859},"\u002Fzh-Hans\u002Fblog\u002Fflowpick-vs-yt-dlp","FlowPick vs. yt-dlp 对比"," 讲什么时候用哪个。",[15,863,864],{"id":864},"参考资料",[25,866,867,876,884],{},[28,868,869,875],{},[86,870,874],{"href":871,"rel":872},"https:\u002F\u002Fffmpegwasm.netlify.app\u002F",[873],"nofollow","FFmpeg WASM 文档"," — 设置和线程配置",[28,877,878,883],{},[86,879,882],{"href":880,"rel":881},"https:\u002F\u002Fcaniuse.com\u002Fwebcodecs",[873],"WebCodecs 浏览器支持"," — 兼容性表",[28,885,886,891],{},[86,887,890],{"href":888,"rel":889},"https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fmemory64",[873],"Memory64 提案"," — 提升 WASM 4GB 内存上限的提案",[15,893,894],{"id":894},"小结",[11,896,897],{},"浏览器视频处理对 1080p 工作负载在任何现代硬件上都可行，4K 在高端硬件上可行。8K 在 WASM 出 memory64 之前不可行。FFmpeg WASM 多线程是最好的通用工具；WebCodecs 加 worker 在解码密集型任务上更快但受 codec 限制。",[11,899,900],{},"这里的方法论可复现——测试文件在参考资料里链接，FFmpeg 参数列了，硬件指定了。你的工作负载不同，用同样模式自己跑测试。",[11,902,903,904,906,907,909,910,597],{},"支撑这些数字的实现模式，看 ",[86,905,89],{"href":88}," 和 ",[86,908,437],{"href":436},"。你能处理什么的法律考量，看 ",[86,911,913],{"href":912},"\u002Fzh-Hans\u002Fblog\u002Fis-it-legal-to-download-streaming-video","流媒体下载合法性指南",[915,916],"hr",{},[15,918,919],{"id":919},"推荐阅读",[25,921,922,930,938,947,955,964],{},[28,923,924,929],{},[21,925,926],{},[86,927,928],{"href":88},"WebCodecs + Web Workers + OPFS：浏览器视频处理实战"," — 这里测的实现模式",[28,931,932,937],{},[21,933,934],{},[86,935,936],{"href":436},"浏览器端视频重封装：fMP4、ISOBMFF 和不转码的理由"," — 重封装为什么快、转码为什么不快",[28,939,940,946],{},[21,941,942],{},[86,943,945],{"href":944},"\u002Fzh-Hans\u002Fblog\u002Fhow-flowpick-merges-video-segments-in-browser","FlowPick 是怎么在浏览器里把几百个视频切片合成 MP4 的"," — FlowPick 具体实现",[28,948,949,954],{},[21,950,951],{},[86,952,953],{"href":859},"FlowPick vs. yt-dlp"," — 浏览器还是原生的选择时机",[28,956,957,963],{},[21,958,959],{},[86,960,962],{"href":961},"\u002Fzh-Hans\u002Fblog\u002Fhls-m3u8-deep-dive-encryption-multitrack","HLS 深度：加密、多音轨、值得记住的 EXT-X 标签"," — 这里做基准的 HLS 格式",[28,965,966,972],{},[21,967,968],{},[86,969,971],{"href":970},"\u002Fzh-Hans\u002Fblog\u002Fflowpick-v1-1-0-smarter-media-detection","FlowPick v1.1.0：更聪明的媒体检测"," — 加上分块处理大文件的那个版本",{"title":974,"searchDepth":975,"depth":975,"links":976},"",2,[977,978,979,980,981,982,983,984,985,986,987,988,989,990,991],{"id":17,"depth":975,"text":17},{"id":146,"depth":975,"text":147},{"id":236,"depth":975,"text":237},{"id":308,"depth":975,"text":309},{"id":370,"depth":975,"text":371},{"id":444,"depth":975,"text":445},{"id":530,"depth":975,"text":531},{"id":600,"depth":975,"text":600},{"id":668,"depth":975,"text":668},{"id":764,"depth":975,"text":764},{"id":813,"depth":975,"text":813},{"id":846,"depth":975,"text":847},{"id":864,"depth":975,"text":864},{"id":894,"depth":975,"text":894},{"id":919,"depth":975,"text":919},"tips","2026-08-04","真实硬件上的真实数据——1080p\u002F4K\u002F8K 重封装和解码基准，横跨 FFmpeg WASM、WebCodecs、原生 FFmpeg。附方法论、原始数据、数字到底意味着什么。","md","\u002Fscreenshots\u002Fformat-conversion.png",{},true,"\u002Fzh-hans\u002Fblog\u002Fbrowser-video-processing-performance-benchmarks",13,{"title":5,"description":994},"zh-Hans\u002Fblog\u002Fbrowser-video-processing-performance-benchmarks",[1004,1005,1006,1007,1008,1009],"性能","基准","wasm","webcodecs","ffmpeg","深度","5hOhqLpSMdsp0nb6cNcrwW1J-urV24sGmPyBwSzfVEk",[1012,1016],{"title":936,"path":1013,"stem":1014,"description":1015,"date":993,"category":992,"children":-1},"\u002Fzh-hans\u002Fblog\u002Fbrowser-streaming-remux-mp4-isobmff","zh-Hans\u002Fblog\u002Fbrowser-streaming-remux-mp4-isobmff","FlowPick 在浏览器里把几百个 HLS 分片合成一个 MP4 时，到底发生了什么——ISOBMFF 的 box 结构、为什么 fragmented MP4 能直接拼而普通 MP4 不行、为什么重封装比转码快 50 倍。",{"title":1017,"path":1018,"stem":1019,"description":1020,"date":993,"category":992,"children":-1},"DASH 深度：SegmentTemplate、ContentProtection 与多视角 MPD 结构","\u002Fzh-hans\u002Fblog\u002Fdash-mpd-deep-dive-segmenttemplate-contentprotection","zh-Hans\u002Fblog\u002Fdash-mpd-deep-dive-segmenttemplate-contentprotection","MPD 入门之后的进阶——SegmentTemplate 对比 SegmentTimeline、$Number$ 对比 $Time$、ContentProtection 信令，以及 DASH 比 HLS 难解析却好下载的结构性原因。",1787670586863]