下载网页中嵌入的视频 - OnlyTime_唯有时光

Dreaming-in-Gottingen 2021-11-15 原文

浏览网页,有时会碰到一些我们喜欢的视频,例如一些公司的创意广告,又或者是一些精彩的爱情动作片^_^,因此产生了保存到本地来反复观摩的庸俗想法!亲爱的网友,不知道你是否有同样的想法???

  • 网页播放的视频,有些可以下载,有些则无法直接下载,做前端网页设计的应该了解这些能不能下载的背后原理。有懂的可以给普及一下,如何控制允许/禁止客户端下载。。。
  • 作为一个多媒体从业者,我从后端技术角度上来分析一下。服务器应该是不断给我们的浏览器客户端推送编码数据,而不是解码后的yuv数据,因为带宽太大!送来的编码数据会先放到一个缓冲区,去等待解码,解码后得到的yuv数据则可以送render模块进行一帧帧显示,这是总体过程。

因此有了这篇博文,记录下闪现而来的灵感。

先针对一些情况有一些技术性思考,后面再介绍下载网页视频文件的小技巧。

一些思考:

1. 在线视频完整播放一遍后,再seek到开头就能不卡顿流畅播放。内在原理?

  当然,备份解码后的yuv图太占空间,这个首先排除掉。那么,就备份从服务端传来的编码数据,这是一个好的选择,播放就不用再从网络拉流了。

但这里还是面临着一些艰难选择的问题,是备份到内存还是硬盘呢?如果备份到内存则内存很快耗尽,如果备份到硬盘,则对于某些有版权片源面临着泄露的风险(观看付费的电影)。

个人认为,相对来说,备份到硬盘更合理,可以拆分成小片段(用户即使拿到了但是不容易整合成一个单独的视频文件),或者给编码数据再加密,那么即便你拷贝走了也没用。这点不知道推测的准确不?

2. 如何窃走片源?

  专业视频网站都使用各种奇巧淫技来禁止用户下载视频,例如大名鼎鼎的youtube和国内的一些视频网站。但是即使这样,仍有一些工具可以下载这些视频,最简单粗暴的方法就是录屏!

录屏这种方法可以是可以,但质量差,例如你请求播放的是1080p的片源,而你用手机软件去录屏时,录出来的分辨率都是跟你的手机屏幕分辨率一样,并且还会录到其他的不想要的东西,例如进入播放界面的操作过程以及广告!

  有没有其他好的方法呢?如果你在手机厂商或芯片厂商工作,例如小米、oppo、qcom或mtk,肯定知道一些方法:第三方app的最终图像和声音数据总归要送到显示模块和声音播放模块,那么就可以进行拦截了!例如声音的AudioTrack和图像的surfaceflinger,那么对送过来的数据进行编码再保存就可以了。如果第三方app进行视频播放时,使用的是soc的硬件解码器而非自带的软件解码器,那么有更好的方法了,就是直接保存待解码的编码数据。这些方法也仅限于你有sdk,可以直接编译源码去替换掉手机中的库文件,或者有什么命令可以dump出码流数据。

3. PC网页中送来的视频到底如何保存?

  浏览器的工作反正总归这个逻辑:接收编码数据流+解码。如果你对浏览器实现有研究的话,你可以利用源码再重新编译出一个浏览器。那么浏览器肯定知道远端服务器送来的哪些数据是视频流,那么把它保存下来就OK了。但是这种方法太曲折,估计没几个人研究和编译过浏览器源码!

 

下载技巧:

针对一些网站提供的在线视频,而其又禁止我们下载,那么我们该如何获取这些片源呢?而不是通过录屏这种粗糙的方式。下面我给大家介绍一种我摸索出来的方法。

1. 进入网页视频界面

2. F12进入开发者模式,点击最上面菜单窗口的Network

3. 如果不出现xx.mp4,那么ctrl+r,再重新开始播放,直到出现xx.mp4

4. 右键点击xx.mp4进行,选择其链接地址。

5. 拷贝到另外一个tab中打开

6. 点击视频窗口右下角的更多图标中的下载,即可。如果嫌chrome的下载速度慢,可以把链接拷到迅雷中下载。

 

发表于
2020-05-20 23:53 
OnlyTime_唯有时光 
阅读(514
评论(0
编辑 
收藏 
举报

 

版权声明:本文为Dreaming-in-Gottingen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Dreaming-in-Gottingen/p/12927348.html

下载网页中嵌入的视频 - OnlyTime_唯有时光的更多相关文章

  1. ajax返回JSON时的处理方式 – mmzz3322

    ajax返回JSON时的处理方式 JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“AreaI […]...

  2. IntelliJ IDEA 常用设置 – Tomcat 的安装与使用

    下载 官网地址:http://tomcat.apache.org/ 安装 下载完成后直接解压到电脑上即可。解压 […]...

  3. ios tweak 开发 – 各各他

    ios tweak 开发 安装部分,步骤挺多的,蛮麻烦的 1、先安装 Xcode,在 Mac Store 即可 […]...

  4. MySQL中出现Access denied for user \’**\’@\’localhost\’ (using password: YES) – ziyi_ang

    MySQL中出现Access denied for user \’**\’@\R […]...

  5. 解决“只能通过Chrome网上应用商店安装该程序”的方法 – Chrome插件(谷歌浏览器插件)

    解决“只能通过Chrome网上应用商店安装该程序”的方法 摘要 : 最近有些用户反映某个Chrome插件在安装 […]...

  6. SpringCloud Alibaba微服务实战 – 基础环境准备

    Springcloud Aibaba现在这么火,我一直想写个基于Springcloud Alibaba一步一步 […]...

  7. 时区之痒 – 从手机GPS模块获取的时间,真的是北京时间么?

     去年互联网地图行业开始引入众包模式,国内比较大的地图商,比如四维图新、高德地图、百度地图纷纷开始推出UGC应 […]...

  8. 关于UML类图中的Class元素颜色 – 温少

    关于UML类图中的Class元素颜色 Visio和Together都是白色,Rose是浅黄色。大约在前年(20 […]...

随机推荐

  1. 版本控制简介和工具

    一、知识点 > 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统 > […]...

  2. 干货-学术论文写作选题的三原则,希望对大家有帮助。

    导读:选题策划首先要有价值,即有学术价值与应用价值,亦即在社会上有需要,在科学上有创新。其次,要可行,即符合客 […]...

  3. 【DWT笔记】基于小波变换的降噪技术

      【DWT笔记】基于小波变换的降噪技术 一、前言      在现实生活和工作中,噪声无处不在,在许多领域中, […]...

  4. 渗透测试——信息收集

      信息收集的重要性 信息收集对于渗透测试来说是很重要的,是渗透测试的前期准备工作,俗话说知己知彼,才能百战不 […]...

  5. FreeSql 使用 ToTreeList/AsTreeCte 查询无限级分类表

    关于无限级分类 第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四 […]...

  6. tensorflow 之常见模块conv,bn…实现

           使用tensorflow时,会发现tf.nn,tf.layers, tf.contrib模块有很 […]...

  7. IPv6地址测试宏 – soldierback

    IPv6地址测试宏 发表于 2019-04-22 07:41  soldierback  阅读(443)  评 […]...

  8. java stringBuilder的用法 – Jesseylove

    java stringBuilder的用法 String对象是不可改变的。每次使用 System.String […]...