You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过视频元素的Blob URL匹配到对应的源.m3u8播放地址?

问题

我用Chrome浏览器扩展解析一个通过.m3u8 URL流式播放视频的网页,想知道能不能通过视频元素里的Blob URL匹配到对应的源.m3u8 URL。

视频元素代码示例:

<video class="jw-video jw-reset" tabindex="-1" disableremoteplayback="" 
    src="blob:https://www.example.com/c15f59e0-872f-43c0-9811-ef907362ef2b" 
    webkit-playsinline="" playsinline=""
   id="yui_3_17_2_1_1731598374038_37">
</video>

同时有几个候选的.m3u8 URL:

  • https://souvod.bynetcdn.com/vod/smil:vod/example/PRV2/se8SHJBRO2/App/se8SHJBRO2_10.smil/playlist.m3u8?md5=1eIJ0a3gmKuZsbXj2GIA7g&expires=1731653039
  • https://souvod.bynetcdn.com/vod/smil:vod/example/PRV2/T9fPkHmcGS/App/T9fPkHmcGS_10.smil/chunklist_b400000.m3u8?md5=yoWmdzXdGRVlOvJQjsqVwg&expires=1731653048
  • https://souvod.bynetcdn.com/vod/smil:vod/openu/PRV2/se8SHJBRO2/App/se8SHJBRO2_10.smil/chunklist_b400000.m3u8?md5=vq7cq3DmDwbN2YlwGx0zpA&expires=1731653742
解答
  • 直接匹配行不通:Blob URL是浏览器生成的本地临时链接,仅在当前会话有效,本身不带任何指向源m3u8的关联信息,没法从blob:xxx字符串里直接解析出对应的m3u8地址。
  • 可行的关联思路:
    1. 拦截网络请求:用Chrome扩展的webRequest或devtools.network API,拦截页面所有m3u8请求,记录每个请求的响应和后续媒体加载的关联关系。
    2. 跟踪MediaSource对象:m3u8流式播放一般依赖MediaSource API,Blob URL会绑定到MediaSource实例上。可以监听页面中MediaSource的创建、源缓冲区添加等事件,把MediaSource和对应的m3u8请求关联,再匹配到视频元素的Blob URL。
    3. 分析播放器实例:示例里用的是JW Player,直接通过页面中的JW Player实例就能获取它加载的媒体源信息,拿到对应的m3u8 URL,不用绕Blob URL这一步。
  • 候选URL验证方法:要从给出的3个候选里找对应源,可以:
    • 检查expires参数是否在视频播放的有效时间范围内;
    • 对比URL里的唯一标识(比如se8SHJBRO2),看是否和页面其他资源的标识一致;
    • 请求候选URL,查看返回的m3u8内容是否包含当前视频的分片信息,再和播放时的分片请求匹配。

内容的提问来源于stack exchange,提问作者Ceznex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:37:04