背景:做一个视频网站,让用户无法下载视频,像 YouTube 一样,以下是问题描述,
目前我是可以做到很多m3u8插件无法检测到视频了,但是有一个油猴的插件:https://greasyfork.org/zh-CN/...
竟然能做到捕获video标签的视频流,我用这个插件去试了试 YouTube,发现下载下来两个文件,一个是音频文件,一个是视频文件,小于等于720P的视频音视频是一起的。
我一直以为 YouTube 是一个 video 标签和一个 audio 标签,暂停就都暂停,播放就都播放
但是,YouTube的播放页只有一个video标签,它是怎么做到一个video标签音视频分离的呢?而且它的文件流还都是post请求,我更百思不得其解
虽然没做过这方面的开发,不过你发的脚本源码很简单,可以很轻易的分析出关键点
addSourceBuffer
方法的mime
中。再到 youtube 的页面随便找一个视频,打开控制台找到插件打印的日志:
这说明肯定是有 audio 数据被添加了。
再分析 youtube 的页面代码,查找 audio,就可以看到 audio 的数据链接,youtube 还很贴心的做了不同的码率,点击就能播放。
这说明它是单独的 audio,只不过没有用 audio 标签实现。
那么来到 google 搜索:javascript play audio without tag,就得到了答案。
至于为什么 youtube 要这样用,可能可以使码率的选择更加灵活,当然这也带来了更多需要的编码工作。
这是没办法的,只要你用网络传输,就一定能被下载,只不过是难度大小问题。
但也不是没有方法,我知道的最根本的解决办法就是回到 IE 时代,自己写播放插件,这样你就能自定义加密解密视频流,即使是抓包也不好破解。