[{"data":1,"prerenderedAt":1519},["ShallowReactive",2],{"docs-navigation":3,"\u002Fdocs\u002Ffeatures\u002Fvideo-sniffing":298,"\u002Fdocs\u002Ffeatures\u002Fvideo-sniffing-surround":1514},[4,165],{"title":5,"path":6,"stem":7,"children":8,"page":32},"Docs","\u002Fdocs","1.docs",[9,33,79,100,129,149],{"title":10,"path":11,"stem":12,"children":13,"icon":32},"Getting Started","\u002Fdocs\u002Fgetting-started","1.docs\u002F1.getting-started\u002F1.index",[14,17,22,27],{"title":15,"path":11,"stem":12,"icon":16},"Introduction","i-lucide-house",{"title":18,"path":19,"stem":20,"icon":21},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","1.docs\u002F1.getting-started\u002F2.installation","i-lucide-download",{"title":23,"path":24,"stem":25,"icon":26},"Usage Guide","\u002Fdocs\u002Fgetting-started\u002Fusage","1.docs\u002F1.getting-started\u002F3.usage","i-lucide-sliders",{"title":28,"path":29,"stem":30,"icon":31},"Configuration Reference","\u002Fdocs\u002Fgetting-started\u002Fconfiguration","1.docs\u002F1.getting-started\u002F4.configuration","i-lucide-settings",false,{"title":34,"icon":35,"path":36,"stem":37,"children":38,"page":32},"Features","i-lucide-star","\u002Fdocs\u002Ffeatures","1.docs\u002F2.features",[39,44,49,54,59,64,69,74],{"title":40,"path":41,"stem":42,"icon":43},"Video Sniffing","\u002Fdocs\u002Ffeatures\u002Fvideo-sniffing","1.docs\u002F2.features\u002F1.video-sniffing","i-lucide-video",{"title":45,"path":46,"stem":47,"icon":48},"Audio Capture","\u002Fdocs\u002Ffeatures\u002Faudio-capture","1.docs\u002F2.features\u002F2.audio-capture","i-lucide-music",{"title":50,"path":51,"stem":52,"icon":53},"Image Download","\u002Fdocs\u002Ffeatures\u002Fimage-download","1.docs\u002F2.features\u002F3.image-download","i-lucide-image",{"title":55,"path":56,"stem":57,"icon":58},"Privacy & Security","\u002Fdocs\u002Ffeatures\u002Fprivacy-security","1.docs\u002F2.features\u002F4.privacy-security","i-lucide-shield-check",{"title":60,"path":61,"stem":62,"icon":63},"Format Conversion","\u002Fdocs\u002Ffeatures\u002Fformat-conversion","1.docs\u002F2.features\u002F5.format-conversion","i-lucide-arrow-left-right",{"title":65,"path":66,"stem":67,"icon":68},"Batch Download","\u002Fdocs\u002Ffeatures\u002Fbatch-download","1.docs\u002F2.features\u002F6.batch-download","i-lucide-layers",{"title":70,"path":71,"stem":72,"icon":73},"Keyboard Shortcuts","\u002Fdocs\u002Ffeatures\u002Fkeyboard-shortcuts","1.docs\u002F2.features\u002F7.keyboard-shortcuts","i-lucide-keyboard",{"title":75,"path":76,"stem":77,"icon":78},"Search & Filter","\u002Fdocs\u002Ffeatures\u002Fsearch-filter","1.docs\u002F2.features\u002F8.search-filter","i-lucide-search",{"title":80,"icon":81,"path":82,"stem":83,"children":84,"page":32},"Advanced","i-lucide-book-open","\u002Fdocs\u002Fadvanced","1.docs\u002F3.advanced",[85,90,95],{"title":86,"path":87,"stem":88,"icon":89},"Online Tools","\u002Fdocs\u002Fadvanced\u002Fonline-tools","1.docs\u002F3.advanced\u002F1.online-tools","i-lucide-globe",{"title":91,"path":92,"stem":93,"icon":94},"Browser Compatibility","\u002Fdocs\u002Fadvanced\u002Fbrowser-compatibility","1.docs\u002F3.advanced\u002F2.browser-compatibility","i-lucide-monitor-check",{"title":96,"path":97,"stem":98,"icon":99},"Download Engine Architecture","\u002Fdocs\u002Fadvanced\u002Fdownload-engine","1.docs\u002F3.advanced\u002F3.download-engine","i-lucide-cpu",{"title":101,"icon":102,"path":103,"stem":104,"children":105,"page":32},"Use Cases","i-lucide-lightbulb","\u002Fdocs\u002Fusecases","1.docs\u002F4.usecases",[106,111,115,120,125],{"title":107,"path":108,"stem":109,"icon":110},"Online Course Video Downloader for Offline Learning","\u002Fdocs\u002Fusecases\u002Fonline-courses","1.docs\u002F4.usecases\u002F1.online-courses","i-lucide-graduation-cap",{"title":112,"path":113,"stem":114,"icon":43},"Video Platform Stream Downloader for Public Media","\u002Fdocs\u002Fusecases\u002Fvideo-platforms","1.docs\u002F4.usecases\u002F2.video-platforms",{"title":116,"path":117,"stem":118,"icon":119},"Live Replay Downloader for Large Streaming Videos","\u002Fdocs\u002Fusecases\u002Flive-replays","1.docs\u002F4.usecases\u002F3.live-replays","i-lucide-radio",{"title":121,"path":122,"stem":123,"icon":124},"Podcast and Audio Downloader for Offline Listening","\u002Fdocs\u002Fusecases\u002Fpodcasts-audio","1.docs\u002F4.usecases\u002F4.podcasts-audio","i-lucide-headphones",{"title":126,"path":127,"stem":128,"icon":53},"Bulk Image Downloader for Web Galleries and Wallpapers","\u002Fdocs\u002Fusecases\u002Fimage-galleries","1.docs\u002F4.usecases\u002F5.image-galleries",{"title":130,"icon":131,"path":132,"stem":133,"children":134,"page":32},"Troubleshooting","i-lucide-wrench","\u002Fdocs\u002Ftroubleshooting","1.docs\u002F5.troubleshooting",[135,139,144],{"title":136,"path":137,"stem":138,"icon":131},"Common Issues Troubleshooting","\u002Fdocs\u002Ftroubleshooting\u002Fcommon-issues","1.docs\u002F5.troubleshooting\u002F1.common-issues",{"title":140,"path":141,"stem":142,"icon":143},"Known Limitations & Caveats","\u002Fdocs\u002Ftroubleshooting\u002Fknown-issues","1.docs\u002F5.troubleshooting\u002F2.known-issues","i-lucide-alert-triangle",{"title":145,"path":146,"stem":147,"icon":148},"FAQ","\u002Fdocs\u002Ftroubleshooting\u002Ffaq","1.docs\u002F5.troubleshooting\u002F3.faq","i-lucide-message-circle-question",{"title":150,"icon":151,"path":152,"stem":153,"children":154,"page":32},"Developer Docs","i-lucide-code","\u002Fdocs\u002Fdeveloper","1.docs\u002F6.developer",[155,160],{"title":156,"path":157,"stem":158,"icon":159},"Contributing Guide","\u002Fdocs\u002Fdeveloper\u002Fcontributing","1.docs\u002F6.developer\u002F1.contributing","i-lucide-git-pull-request",{"title":161,"path":162,"stem":163,"icon":164},"Project Architecture","\u002Fdocs\u002Fdeveloper\u002Farchitecture","1.docs\u002F6.developer\u002F2.architecture","i-lucide-box",{"title":166,"path":167,"stem":168,"children":169,"page":32},"Zh Hans","\u002Fzh-hans","zh-Hans",[170,189,226,243,268,285],{"title":171,"path":172,"stem":173,"children":174,"icon":32},"快速开始","\u002Fzh-hans\u002Fgetting-started","zh-Hans\u002F1.getting-started\u002F1.index",[175,177,181,185],{"title":176,"path":172,"stem":173,"icon":16},"简介",{"title":178,"path":179,"stem":180,"icon":21},"安装","\u002Fzh-hans\u002Fgetting-started\u002Finstallation","zh-Hans\u002F1.getting-started\u002F2.installation",{"title":182,"path":183,"stem":184,"icon":26},"使用方法","\u002Fzh-hans\u002Fgetting-started\u002Fusage","zh-Hans\u002F1.getting-started\u002F3.usage",{"title":186,"path":187,"stem":188,"icon":31},"配置参考","\u002Fzh-hans\u002Fgetting-started\u002Fconfiguration","zh-Hans\u002F1.getting-started\u002F4.configuration",{"title":190,"icon":35,"path":191,"stem":192,"children":193,"page":32},"功能特性","\u002Fzh-hans\u002Ffeatures","zh-Hans\u002F2.features",[194,198,202,206,210,214,218,222],{"title":195,"path":196,"stem":197,"icon":43},"视频嗅探","\u002Fzh-hans\u002Ffeatures\u002Fvideo-sniffing","zh-Hans\u002F2.features\u002F1.video-sniffing",{"title":199,"path":200,"stem":201,"icon":48},"音频捕获","\u002Fzh-hans\u002Ffeatures\u002Faudio-capture","zh-Hans\u002F2.features\u002F2.audio-capture",{"title":203,"path":204,"stem":205,"icon":53},"图片下载","\u002Fzh-hans\u002Ffeatures\u002Fimage-download","zh-Hans\u002F2.features\u002F3.image-download",{"title":207,"path":208,"stem":209,"icon":58},"隐私与安全","\u002Fzh-hans\u002Ffeatures\u002Fprivacy-security","zh-Hans\u002F2.features\u002F4.privacy-security",{"title":211,"path":212,"stem":213,"icon":63},"格式转换","\u002Fzh-hans\u002Ffeatures\u002Fformat-conversion","zh-Hans\u002F2.features\u002F5.format-conversion",{"title":215,"path":216,"stem":217,"icon":68},"批量下载","\u002Fzh-hans\u002Ffeatures\u002Fbatch-download","zh-Hans\u002F2.features\u002F6.batch-download",{"title":219,"path":220,"stem":221,"icon":73},"键盘快捷键","\u002Fzh-hans\u002Ffeatures\u002Fkeyboard-shortcuts","zh-Hans\u002F2.features\u002F7.keyboard-shortcuts",{"title":223,"path":224,"stem":225,"icon":78},"搜索与筛选","\u002Fzh-hans\u002Ffeatures\u002Fsearch-filter","zh-Hans\u002F2.features\u002F8.search-filter",{"title":227,"icon":81,"path":228,"stem":229,"children":230,"page":32},"高级指南","\u002Fzh-hans\u002Fadvanced","zh-Hans\u002F3.advanced",[231,235,239],{"title":232,"path":233,"stem":234,"icon":89},"在线工具","\u002Fzh-hans\u002Fadvanced\u002Fonline-tools","zh-Hans\u002F3.advanced\u002F1.online-tools",{"title":236,"path":237,"stem":238,"icon":94},"浏览器兼容性","\u002Fzh-hans\u002Fadvanced\u002Fbrowser-compatibility","zh-Hans\u002F3.advanced\u002F2.browser-compatibility",{"title":240,"path":241,"stem":242,"icon":99},"下载引擎架构","\u002Fzh-hans\u002Fadvanced\u002Fdownload-engine","zh-Hans\u002F3.advanced\u002F3.download-engine",{"title":244,"icon":102,"path":245,"stem":246,"children":247,"page":32},"使用场景","\u002Fzh-hans\u002Fusecases","zh-Hans\u002F4.usecases",[248,252,256,260,264],{"title":249,"path":250,"stem":251,"icon":110},"在线课程视频下载与离线学习","\u002Fzh-hans\u002Fusecases\u002Fonline-courses","zh-Hans\u002F4.usecases\u002F1.online-courses",{"title":253,"path":254,"stem":255,"icon":43},"视频平台流媒体下载与素材收集","\u002Fzh-hans\u002Fusecases\u002Fvideo-platforms","zh-Hans\u002F4.usecases\u002F2.video-platforms",{"title":257,"path":258,"stem":259,"icon":119},"直播回放下载与大文件流媒体保存","\u002Fzh-hans\u002Fusecases\u002Flive-replays","zh-Hans\u002F4.usecases\u002F3.live-replays",{"title":261,"path":262,"stem":263,"icon":124},"播客与网页音频下载","\u002Fzh-hans\u002Fusecases\u002Fpodcasts-audio","zh-Hans\u002F4.usecases\u002F4.podcasts-audio",{"title":265,"path":266,"stem":267,"icon":53},"图库与壁纸批量图片下载","\u002Fzh-hans\u002Fusecases\u002Fimage-galleries","zh-Hans\u002F4.usecases\u002F5.image-galleries",{"title":269,"icon":131,"path":270,"stem":271,"children":272,"page":32},"故障排除","\u002Fzh-hans\u002Ftroubleshooting","zh-Hans\u002F5.troubleshooting",[273,277,281],{"title":274,"path":275,"stem":276,"icon":131},"常见问题排查","\u002Fzh-hans\u002Ftroubleshooting\u002Fcommon-issues","zh-Hans\u002F5.troubleshooting\u002F1.common-issues",{"title":278,"path":279,"stem":280,"icon":143},"已知限制与注意事项","\u002Fzh-hans\u002Ftroubleshooting\u002Fknown-issues","zh-Hans\u002F5.troubleshooting\u002F2.known-issues",{"title":282,"path":283,"stem":284,"icon":148},"常见问题解答","\u002Fzh-hans\u002Ftroubleshooting\u002Ffaq","zh-Hans\u002F5.troubleshooting\u002F3.faq",{"title":286,"icon":151,"path":287,"stem":288,"children":289,"page":32},"开发者文档","\u002Fzh-hans\u002Fdeveloper","zh-Hans\u002F6.developer",[290,294],{"title":291,"path":292,"stem":293,"icon":159},"贡献指南","\u002Fzh-hans\u002Fdeveloper\u002Fcontributing","zh-Hans\u002F6.developer\u002F1.contributing",{"title":295,"path":296,"stem":297,"icon":164},"项目架构","\u002Fzh-hans\u002Fdeveloper\u002Farchitecture","zh-Hans\u002F6.developer\u002F2.architecture",{"id":299,"title":40,"body":300,"date":1504,"description":1505,"extension":1506,"lastModified":1507,"meta":1508,"navigation":1509,"path":41,"seo":1510,"stem":42,"__hash__":1513},"docs\u002F1.docs\u002F2.features\u002F1.video-sniffing.md",{"type":301,"value":302,"toc":1475},"minimark",[303,307,314,317,322,330,392,397,413,432,434,438,443,518,522,701,703,707,710,716,720,723,766,769,779,783,786,862,871,875,878,892,902,906,909,927,944,946,950,953,959,963,966,1035,1039,1042,1056,1062,1074,1078,1081,1083,1086,1089,1113,1116,1130,1139,1141,1145,1216,1225,1228,1232,1286,1290,1326,1330,1366,1370,1406,1417,1419,1423],[304,305,306],"p",{},"FlowPick automatically detects video content on webpages by monitoring browser network requests, supporting streaming protocols (HLS\u002FDASH) and direct video files, with automatic decryption of AES-128 encrypted streams.",[304,308,309],{},[310,311],"img",{"alt":312,"src":313},"Video Sniffing Overview","\u002Fscreenshots\u002Fvideo-sniffing-overview.png",[315,316],"hr",{},[318,319,321],"h2",{"id":320},"detection-principles","Detection Principles",[304,323,324,325,329],{},"FlowPick's video detection is based on the Chrome extension's ",[326,327,328],"code",{},"webRequest"," API, intercepting requests at the browser network layer:",[331,332,333],"steps",{},[334,335,336,352,366,372,386],"ol",{},[337,338,339,343,344,347,348,351],"li",{},[340,341,342],"strong",{},"Network Interception",": Extension listens to all network requests via ",[326,345,346],{},"webRequest.onBeforeRequest",", identifying video and streaming resources based on response ",[326,349,350],{},"Content-Type"," headers",[337,353,354,357,358,361,362,365],{},[340,355,356],{},"Manifest Parsing",": For HLS (",[326,359,360],{},".m3u8",") and DASH (",[326,363,364],{},".mpd","), automatically downloads and parses manifest files to extract available stream information",[337,367,368,371],{},[340,369,370],{},"Quality Analysis",": Parses all available resolution and bitrate options from Master Playlist",[337,373,374,377,378,381,382,385],{},[340,375,376],{},"Encryption Detection",": Checks for presence of ",[326,379,380],{},"EXT-X-KEY"," (HLS) or ",[326,383,384],{},"ContentProtection"," (DASH) tags to determine if decryption is needed",[337,387,388,391],{},[340,389,390],{},"Resource Display",": Detected videos are displayed categorized by type in popup window",[304,393,394],{},[340,395,396],{},"Detection Timing:",[398,399,400,407,410],"ul",{},[337,401,402,403,406],{},"After extension installation, need to ",[340,404,405],{},"refresh target page"," before detection can begin",[337,408,409],{},"Streaming manifests typically load when video starts playing; recommend playing for 3-5 seconds before opening extension",[337,411,412],{},"For dynamically loaded videos (e.g., loading when scrolling to specific position), need to trigger loading before detection",[414,415,416],"note",{},[304,417,418,419,421,422,427,428,431],{},"For extension ",[326,420,328],{}," API permissions and Manifest V3 limitations, see ",[423,424,426],"a",{"href":425},"\u002Fdocs\u002Ftroubleshooting\u002Fknown-issues#manifest-v3-%E9%99%90%E5%88%B6","Known Limitations — Manifest V3 Limitations",". For complete troubleshooting flow when media is not detected, see ",[423,429,430],{"href":137},"Common Issues Troubleshooting — Media Detection Issues",".",[315,433],{},[318,435,437],{"id":436},"supported-video-formats","Supported Video Formats",[439,440,442],"h3",{"id":441},"streaming-protocols","Streaming Protocols",[444,445,446,464],"table",{},[447,448,449],"thead",{},[450,451,452,456,459,461],"tr",{},[453,454,455],"th",{},"Protocol",[453,457,458],{},"Manifest File",[453,460,350],{},[453,462,463],{},"Description",[465,466,467,485,501],"tbody",{},[450,468,469,473,477,482],{},[470,471,472],"td",{},"HLS",[470,474,475],{},[326,476,360],{},[470,478,479],{},[326,480,481],{},"application\u002Fx-mpegurl",[470,483,484],{},"Apple HTTP Live Streaming, most common streaming protocol",[450,486,487,489,493,498],{},[470,488,472],{},[470,490,491],{},[326,492,360],{},[470,494,495],{},[326,496,497],{},"application\u002Fvnd.apple.mpegurl",[470,499,500],{},"Apple-specific MIME type for HLS",[450,502,503,506,510,515],{},[470,504,505],{},"DASH",[470,507,508],{},[326,509,364],{},[470,511,512],{},[326,513,514],{},"application\u002Fdash+xml",[470,516,517],{},"MPEG-DASH, commonly used for high-quality content",[439,519,521],{"id":520},"direct-video-files","Direct Video Files",[444,523,524,535],{},[447,525,526],{},[450,527,528,530,533],{},[453,529,350],{},[453,531,532],{},"Extension",[453,534,463],{},[465,536,537,552,566,581,596,611,626,641,656,671,686],{},[450,538,539,544,549],{},[470,540,541],{},[326,542,543],{},"video\u002Fmp4",[470,545,546],{},[326,547,548],{},".mp4",[470,550,551],{},"Most universal video format",[450,553,554,559,563],{},[470,555,556],{},[326,557,558],{},"video\u002Fx-m4v",[470,560,561],{},[326,562,548],{},[470,564,565],{},"iTunes video format",[450,567,568,573,578],{},[470,569,570],{},[326,571,572],{},"video\u002Fwebm",[470,574,575],{},[326,576,577],{},".webm",[470,579,580],{},"Open-source Web video format",[450,582,583,588,593],{},[470,584,585],{},[326,586,587],{},"video\u002Fogg",[470,589,590],{},[326,591,592],{},".ogv",[470,594,595],{},"Ogg container video",[450,597,598,603,608],{},[470,599,600],{},[326,601,602],{},"video\u002Fx-flv",[470,604,605],{},[326,606,607],{},".flv",[470,609,610],{},"Flash Video (legacy format)",[450,612,613,618,623],{},[470,614,615],{},[326,616,617],{},"video\u002Fx-matroska",[470,619,620],{},[326,621,622],{},".mkv",[470,624,625],{},"Matroska container",[450,627,628,633,638],{},[470,629,630],{},[326,631,632],{},"video\u002Fquicktime",[470,634,635],{},[326,636,637],{},".mov",[470,639,640],{},"Apple QuickTime",[450,642,643,648,653],{},[470,644,645],{},[326,646,647],{},"video\u002Fx-msvideo",[470,649,650],{},[326,651,652],{},".avi",[470,654,655],{},"Windows AVI",[450,657,658,663,668],{},[470,659,660],{},[326,661,662],{},"video\u002F3gpp",[470,664,665],{},[326,666,667],{},".3gp",[470,669,670],{},"Mobile device video",[450,672,673,678,683],{},[470,674,675],{},[326,676,677],{},"video\u002F3gpp2",[470,679,680],{},[326,681,682],{},".3g2",[470,684,685],{},"CDMA mobile device video",[450,687,688,693,698],{},[470,689,690],{},[326,691,692],{},"video\u002Fmpeg",[470,694,695],{},[326,696,697],{},".mpeg",[470,699,700],{},"MPEG video",[315,702],{},[318,704,706],{"id":705},"hls-m3u8-streams","HLS (M3U8) Streams",[304,708,709],{},"HLS (HTTP Live Streaming) is a streaming protocol developed by Apple and currently the most widely used video transmission method on the web. Major platforms like Bilibili, Tencent Video, and Youku all use HLS.",[304,711,712],{},[310,713],{"alt":714,"src":715},"HLS Stream Detection Results","\u002Fscreenshots\u002Fhls-detection.png",[439,717,719],{"id":718},"master-playlist-vs-media-playlist","Master Playlist vs Media Playlist",[304,721,722],{},"HLS manifests are divided into two levels:",[444,724,725,738],{},[447,726,727],{},[450,728,729,732,735],{},[453,730,731],{},"Type",[453,733,734],{},"Content",[453,736,737],{},"Example",[465,739,740,751],{},[450,741,742,745,748],{},[470,743,744],{},"Master Playlist",[470,746,747],{},"Lists all available quality variants, each pointing to a Media Playlist",[470,749,750],{},"Index containing multiple streams at 360p, 720p, 1080p, etc.",[450,752,753,756,759],{},[470,754,755],{},"Media Playlist",[470,757,758],{},"Lists specific TS fragment URL sequence",[470,760,761,762,765],{},"Contains addresses of hundreds of ",[326,763,764],{},".ts"," files",[304,767,768],{},"FlowPick auto-identifies Master Playlists, parses out all quality options for you to select. After selecting quality, downloads corresponding Media Playlist to get fragment list.",[770,771,776],"pre",{"className":772,"code":774,"language":775},[773],"language-text","Master Playlist (index.m3u8)\n    │\n    ├── 360p  → 360p.m3u8  →  segment-001.ts, segment-002.ts, ...\n    ├── 720p  → 720p.m3u8  →  segment-001.ts, segment-002.ts, ...\n    └── 1080p → 1080p.m3u8 →  segment-001.ts, segment-002.ts, ...\n","text",[326,777,774],{"__ignoreMap":778},"",[439,780,782],{"id":781},"quality-selection","Quality Selection",[304,784,785],{},"Quality options parsed from Master Playlist are sorted by bitrate from high to low:",[444,787,788,804],{},[447,789,790],{},[450,791,792,795,798,801],{},[453,793,794],{},"Quality",[453,796,797],{},"Typical Resolution",[453,799,800],{},"Typical Bitrate",[453,802,803],{},"Use Case",[465,805,806,820,834,848],{},[450,807,808,811,814,817],{},[470,809,810],{},"Original\u002FUltra HD",[470,812,813],{},"1080p+",[470,815,816],{},"5-12 Mbps",[470,818,819],{},"Large screen viewing, best quality needed",[450,821,822,825,828,831],{},[470,823,824],{},"HD",[470,826,827],{},"720p",[470,829,830],{},"1.5-3 Mbps",[470,832,833],{},"Laptop viewing",[450,835,836,839,842,845],{},[470,837,838],{},"SD",[470,840,841],{},"480p",[470,843,844],{},"0.8-1.5 Mbps",[470,846,847],{},"Small screen devices",[450,849,850,853,856,859],{},[470,851,852],{},"Smooth",[470,854,855],{},"360p",[470,857,858],{},"0.4-0.8 Mbps",[470,860,861],{},"Audio only, mobile networks",[414,863,864],{},[304,865,866,867,431],{},"For quality selection configuration (auto\u002Fmanual), see ",[423,868,870],{"href":869},"\u002Fdocs\u002Fgetting-started\u002Fconfiguration#%E7%94%BB%E8%B4%A8%E9%80%89%E6%8B%A9%E7%AD%96%E7%95%A5","Configuration Reference — Quality Selection Strategy",[439,872,874],{"id":873},"fragment-download-merging","Fragment Download & Merging",[304,876,877],{},"HLS videos consist of large numbers of TS fragments (typically 2-10 seconds each). FlowPick's processing flow:",[334,879,880,883,886,889],{},[337,881,882],{},"Parse Media Playlist to get all fragment URLs",[337,884,885],{},"Multi-threaded concurrent download of fragments (concurrency adjustable in settings)",[337,887,888],{},"After download completes, merge fragments into single file",[337,890,891],{},"If MP4 output selected, use FFmpeg WASM for remuxing",[414,893,894],{},[304,895,896,897,899,900,431],{},"For Worker Pool implementation of concurrent fragment download and retry mechanism, see ",[423,898,96],{"href":97},". For TS to MP4 remuxing principles, see ",[423,901,60],{"href":61},[439,903,905],{"id":904},"encrypted-streams-aes-128","Encrypted Streams (AES-128)",[304,907,908],{},"Some HLS streams use AES-128 encryption to protect content. FlowPick supports automatic decryption:",[398,910,911,918,921,924],{},[337,912,913,914,917],{},"Detects ",[326,915,916],{},"#EXT-X-KEY:METHOD=AES-128,URI=\"...\""," tag",[337,919,920],{},"Auto-downloads decryption key",[337,922,923],{},"Uses Web Crypto API to decrypt each fragment in browser",[337,925,926],{},"Decrypted fragments merge normally, output unencrypted file",[414,928,929],{},[304,930,931,932,935,936,939,940,431],{},"FlowPick only supports ",[340,933,934],{},"AES-128"," encryption. Streams using DRM technologies like Widevine, PlayReady, or FairPlay ",[340,937,938],{},"cannot be decrypted",". If DRM protection detected, corresponding error message displayed. For detailed technical explanation of DRM protection, see ",[423,941,943],{"href":942},"\u002Fdocs\u002Ftroubleshooting\u002Fknown-issues#drm-%E4%BF%9D%E6%8A%A4%E5%86%85%E5%AE%B9","Known Limitations — DRM Protected Content",[315,945],{},[318,947,949],{"id":948},"dash-mpd-streams","DASH (MPD) Streams",[304,951,952],{},"DASH (Dynamic Adaptive Streaming over HTTP) is an international standard streaming protocol established by MPEG, widely used by platforms like YouTube and Netflix.",[304,954,955],{},[310,956],{"alt":957,"src":958},"DASH Stream Detection Results","\u002Fscreenshots\u002Fdash-detection.png",[439,960,962],{"id":961},"dash-characteristics","DASH Characteristics",[304,964,965],{},"Compared to HLS, DASH has these characteristics:",[444,967,968,979],{},[447,969,970],{},[450,971,972,975,977],{},[453,973,974],{},"Feature",[453,976,472],{},[453,978,505],{},[465,980,981,992,1003,1014,1024],{},[450,982,983,986,989],{},[470,984,985],{},"Fragment Format",[470,987,988],{},"Usually TS",[470,990,991],{},"Usually FMP4 (segmented MP4)",[450,993,994,997,1000],{},[470,995,996],{},"Audio\u002FVideo",[470,998,999],{},"Usually combined together",[470,1001,1002],{},"Usually separated as independent tracks",[450,1004,1005,1008,1011],{},[470,1006,1007],{},"Manifest Format",[470,1009,1010],{},"M3U8 (text)",[470,1012,1013],{},"MPD (XML)",[450,1015,1016,1019,1021],{},[470,1017,1018],{},"Encryption",[470,1020,934],{},[470,1022,1023],{},"AES-128 or DRM",[450,1025,1026,1029,1032],{},[470,1027,1028],{},"Codecs",[470,1030,1031],{},"H.264 dominant",[470,1033,1034],{},"H.264, H.265, VP9, AV1",[439,1036,1038],{"id":1037},"separate-audiovideo-processing","Separate Audio\u002FVideo Processing",[304,1040,1041],{},"A key characteristic of DASH is that video and audio are usually separated into independent tracks. FlowPick's processing flow:",[334,1043,1044,1047,1050,1053],{},[337,1045,1046],{},"Parse MPD manifest, identify video track and audio track",[337,1048,1049],{},"Download video fragments and audio fragments separately",[337,1051,1052],{},"Download initialization segments (init segment), containing codec configuration info",[337,1054,1055],{},"Use FFmpeg WASM to merge video and audio into single MP4 file",[770,1057,1060],{"className":1058,"code":1059,"language":775},[773],"MPD Manifest\n    │\n    ├── AdaptationSet: Video (H.264, 1080p)\n    │   ├── init segment (codec config)\n    │   ├── segment-001.m4s\n    │   ├── segment-002.m4s\n    │   └── ...\n    │\n    └── AdaptationSet: Audio (AAC, 128kbps)\n        ├── init segment (codec config)\n        ├── segment-001.m4s\n        ├── segment-002.m4s\n        └── ...\n                    ↓\n            FFmpeg WASM Merge\n                    ↓\n              output.mp4\n",[326,1061,1059],{"__ignoreMap":778},[414,1063,1064],{},[304,1065,1066,1067,1070,1071,431],{},"For technical implementation of DASH FMP4 reassembly and audio-video merging, see ",[423,1068,1069],{"href":97},"Download Engine Architecture — DASH Processing",". For FFmpeg WASM loading and performance, see ",[423,1072,1073],{"href":61},"Format Conversion — FFmpeg WASM Engine",[439,1075,1077],{"id":1076},"encryption-support","Encryption Support",[304,1079,1080],{},"Same as HLS, FlowPick supports AES-128 fragment-level encryption for DASH streams. DRM-protected streams (Widevine, PlayReady) cannot be handled.",[315,1082],{},[318,1084,521],{"id":1085},"direct-video-files-1",[304,1087,1088],{},"For direct video files (MP4, WebM, MKV, etc.), detection and download process is simplest:",[398,1090,1091,1097,1103],{},[337,1092,1093,1096],{},[340,1094,1095],{},"Instant Detection",": Video URL immediately detected when appears in network requests",[337,1098,1099,1102],{},[340,1100,1101],{},"Direct Download",": No fragment merging or format conversion needed, browser directly downloads original file",[337,1104,1105,1108,1109,1112],{},[340,1106,1107],{},"Size Preview",": If server returns ",[326,1110,1111],{},"Content-Length"," header, file size displayed",[304,1114,1115],{},"Direct video files typically appear in following scenarios:",[398,1117,1118,1121,1124,1127],{},[337,1119,1120],{},"MP4 videos embedded directly in websites",[337,1122,1123],{},"Short videos on social media",[337,1125,1126],{},"Video assets on gallery websites",[337,1128,1129],{},"Directly linked video files",[414,1131,1132],{},[304,1133,1134,1135,431],{},"For direct video file download operations, see ",[423,1136,1138],{"href":1137},"\u002Fdocs\u002Fgetting-started\u002Fusage#%E4%B8%8B%E8%BD%BD%E5%8D%95%E4%B8%AA%E8%B5%84%E6%BA%90","Usage Guide — Download Single Resource",[315,1140],{},[318,1142,1144],{"id":1143},"detection-differences-extension-vs-online-tool","Detection Differences: Extension vs Online Tool",[444,1146,1147,1160],{},[447,1148,1149],{},[450,1150,1151,1154,1157],{},[453,1152,1153],{},"Capability",[453,1155,1156],{},"Browser Extension",[453,1158,1159],{},"Online Tool",[465,1161,1162,1173,1184,1194,1205],{},[450,1163,1164,1167,1170],{},[470,1165,1166],{},"Auto Detection",[470,1168,1169],{},"Auto-monitors all network requests",[470,1171,1172],{},"Requires manual paste of stream URL",[450,1174,1175,1178,1181],{},[470,1176,1177],{},"CORS Restrictions",[470,1179,1180],{},"Unrestricted (extension permissions)",[470,1182,1183],{},"Subject to same-origin policy",[450,1185,1186,1189,1192],{},[470,1187,1188],{},"Encrypted Streams",[470,1190,1191],{},"Supports AES-128 decryption",[470,1193,1191],{},[450,1195,1196,1199,1202],{},[470,1197,1198],{},"Detection Scope",[470,1200,1201],{},"All requests on current tab",[470,1203,1204],{},"Only user-provided URLs",[450,1206,1207,1210,1213],{},[470,1208,1209],{},"Usage Barrier",[470,1211,1212],{},"Requires extension installation",[470,1214,1215],{},"No installation needed",[1217,1218,1219],"tip",{},[304,1220,1221,1222,431],{},"If you encounter CORS errors using online tool, it means streaming server hasn't configured cross-origin headers. In this case, recommend installing browser extension to bypass restrictions. For detailed feature comparison between extension and online tool and selection recommendations, see ",[423,1223,1224],{"href":87},"Online Tools — Comparison with Extension",[318,1226,130],{"id":1227},"troubleshooting",[439,1229,1231],{"id":1230},"video-not-detected","Video Not Detected",[444,1233,1234,1244],{},[447,1235,1236],{},[450,1237,1238,1241],{},[453,1239,1240],{},"Cause",[453,1242,1243],{},"Solution",[465,1245,1246,1254,1262,1270,1278],{},[450,1247,1248,1251],{},[470,1249,1250],{},"Page loaded before extension installed",[470,1252,1253],{},"Refresh page and replay video",[450,1255,1256,1259],{},[470,1257,1258],{},"Video not started playing",[470,1260,1261],{},"Play video for 3-5 seconds, ensure manifest file loaded",[450,1263,1264,1267],{},[470,1265,1266],{},"Video uses dynamic loading",[470,1268,1269],{},"Drag progress bar to different positions to trigger more fragment requests",[450,1271,1272,1275],{},[470,1273,1274],{},"Website uses non-standard protocols",[470,1276,1277],{},"Check if HLS\u002FDASH\u002Fdirect video files supported",[450,1279,1280,1283],{},[470,1281,1282],{},"Other extension conflicts",[470,1284,1285],{},"Temporarily disable ad blockers or other network extensions and retry",[439,1287,1289],{"id":1288},"encrypted-stream-download-failed","Encrypted Stream Download Failed",[444,1291,1292,1300],{},[447,1293,1294],{},[450,1295,1296,1298],{},[453,1297,1240],{},[453,1299,1243],{},[465,1301,1302,1310,1318],{},[450,1303,1304,1307],{},[470,1305,1306],{},"DRM protection (Widevine etc.)",[470,1308,1309],{},"Not supported, FlowPick cannot decrypt DRM content",[450,1311,1312,1315],{},[470,1313,1314],{},"Key server requires authentication",[470,1316,1317],{},"Some paid content keys require Cookie\u002FToken, ensure logged in",[450,1319,1320,1323],{},[470,1321,1322],{},"Key URL inaccessible",[470,1324,1325],{},"Check network connection, key server may be blocked by firewall",[439,1327,1329],{"id":1328},"slow-download-speed","Slow Download Speed",[444,1331,1332,1340],{},[447,1333,1334],{},[450,1335,1336,1338],{},[453,1337,1240],{},[453,1339,1243],{},[465,1341,1342,1350,1358],{},[450,1343,1344,1347],{},[470,1345,1346],{},"Concurrent threads too low",[470,1348,1349],{},"Increase concurrent threads in settings (recommend 4-6)",[450,1351,1352,1355],{},[470,1353,1354],{},"CDN rate limiting",[470,1356,1357],{},"Some CDNs limit per-IP speed, cannot bypass",[450,1359,1360,1363],{},[470,1361,1362],{},"Insufficient network bandwidth",[470,1364,1365],{},"Select lower quality to reduce file size",[439,1367,1369],{"id":1368},"merged-video-cannot-play","Merged Video Cannot Play",[444,1371,1372,1380],{},[447,1373,1374],{},[450,1375,1376,1378],{},[453,1377,1240],{},[453,1379,1243],{},[465,1381,1382,1390,1398],{},[450,1383,1384,1387],{},[470,1385,1386],{},"Some fragments failed to download",[470,1388,1389],{},"Re-download, ensure all fragments complete",[450,1391,1392,1395],{},[470,1393,1394],{},"Output format incompatible",[470,1396,1397],{},"Try switching output format (MP4 ↔ TS)",[450,1399,1400,1403],{},[470,1401,1402],{},"Encryption key error",[470,1404,1405],{},"Refresh page to re-obtain key",[1217,1407,1408],{},[304,1409,1410,1411,1413,1414,431],{},"If above methods don't resolve issue, please check ",[423,1412,136],{"href":137}," for more detailed diagnostic steps. For technical limitations and edge cases of current version, see ",[423,1415,1416],{"href":141},"Known Limitations",[315,1418],{},[318,1420,1422],{"id":1421},"related-documentation","Related Documentation",[398,1424,1425,1430,1435,1440,1445,1450,1455,1460,1465,1470],{},[337,1426,1427,1429],{},[423,1428,23],{"href":24}," — Operation guide for video detection and download",[337,1431,1432,1434],{},[423,1433,45],{"href":46}," — Detection and download of audio files",[337,1436,1437,1439],{},[423,1438,50],{"href":51}," — Detection and batch download of image resources",[337,1441,1442,1444],{},[423,1443,60],{"href":61}," — Detailed technical explanation of TS\u002FMP4 remuxing",[337,1446,1447,1449],{},[423,1448,96],{"href":97}," — Fragment download, concurrency control, retry mechanism",[337,1451,1452,1454],{},[423,1453,86],{"href":87}," — Feature comparison between extension and online tools",[337,1456,1457,1459],{},[423,1458,28],{"href":29}," — Concurrent threads, output format and other settings",[337,1461,1462,1464],{},[423,1463,136],{"href":137}," — Diagnostic methods for download issues",[337,1466,1467,1469],{},[423,1468,1416],{"href":141}," — DRM protection, Manifest V3 and other technical limitations",[337,1471,1472,1474],{},[423,1473,55],{"href":56}," — Network monitoring and privacy protection notes",{"title":778,"searchDepth":1476,"depth":1476,"links":1477},2,[1478,1479,1484,1490,1495,1496,1497,1503],{"id":320,"depth":1476,"text":321},{"id":436,"depth":1476,"text":437,"children":1480},[1481,1483],{"id":441,"depth":1482,"text":442},3,{"id":520,"depth":1482,"text":521},{"id":705,"depth":1476,"text":706,"children":1485},[1486,1487,1488,1489],{"id":718,"depth":1482,"text":719},{"id":781,"depth":1482,"text":782},{"id":873,"depth":1482,"text":874},{"id":904,"depth":1482,"text":905},{"id":948,"depth":1476,"text":949,"children":1491},[1492,1493,1494],{"id":961,"depth":1482,"text":962},{"id":1037,"depth":1482,"text":1038},{"id":1076,"depth":1482,"text":1077},{"id":1085,"depth":1476,"text":521},{"id":1143,"depth":1476,"text":1144},{"id":1227,"depth":1476,"text":130,"children":1498},[1499,1500,1501,1502],{"id":1230,"depth":1482,"text":1231},{"id":1288,"depth":1482,"text":1289},{"id":1328,"depth":1482,"text":1329},{"id":1368,"depth":1482,"text":1369},{"id":1421,"depth":1476,"text":1422},"2026-07-08","Complete technical documentation for FlowPick video detection and download, covering HLS, DASH, direct video files, encrypted stream decryption, and troubleshooting.","md","2026-08-17",{},{"icon":43},{"title":1511,"description":1512},"Video Sniffer Guide: Detect M3U8, HLS, MPD and Web Video","Learn how FlowPick detects web video, parses M3U8\u002FHLS and MPD\u002FDASH manifests, and identifies available media tracks and quality levels.","VpsWdpCYh-rkaQAHRJyxU6p4cJDhEkvjQbSTfVYfwQI",[1515,1517],{"title":28,"path":29,"stem":30,"description":1516,"icon":31,"children":-1},"Complete configuration options for FlowPick, including download settings, filtering rules, save strategies, advanced parameters, and scenario-based configurations.",{"title":45,"path":46,"stem":47,"description":1518,"icon":48,"children":-1},"Complete technical documentation for FlowPick audio detection and download, covering audio formats, podcast detection, metadata extraction, batch download, and troubleshooting.",1788792261769]