
那就要用上防盗链技术了。
首先介绍一下加密视频被盗链的几种常见方式:
1、播放器破解。这种方式利用一组正版的注册码,把其对应的机器码固定住,达到任何机器都可以注册成功。
2、翻录。分为软翻录(用软件录屏)和硬翻录(视频采集设备来录制,当然,拿手机拍也算是一种啦)
3、提取。这种方式技术难度最高,效果最好,最终效果是提取出原始未加密的视频。
接下来分析一下视频加密技术是怎么防止视频被破解或者说怎么提升破解成本的。
严格来说没有什么破解播放器既能达到破解视频的目的,点量在这方便的经验是在播放器和视频本身的加密方面都做了充分加密。点量加密文件指定播放器区别于普通播放器的的地方是在播放视频时不全部载入,而是先只载入前面5分钟,等播放到4分钟左右时再去载入后面的5分钟视频。这样还可以节省很多服务器流量,避免用户只看2-3分钟暂停在那,也把整个视频给分发下去。另外就是播放器获取视频时传入一些token给服务器,服务器可以通过session等判断用户的权限,权限确认通过才发放flv文件,并且发放的flv文件是经过处理的,播放器收到flv数据后合并播放,用户即使下载到这些零散的flv文件,也很难形成完整的视频。以上技术结合使用点量视频加密系统,也完全可以不安装任何软件就能实现视频的防破解。
对于视频破解中的翻录来说,针对软翻录,视频加密软件预设翻录程序黑名单,禁止翻录程序启动。而且用户还可以根据市场动向,不断增加黑名单。甚至禁止视频播放期间启动其他播放器、浏览器等任何程序。针对硬翻录,除了在视频上添加LOGO、水印、跑马灯信息等,还可以设置观看用户ID飘屏。即便视频外泄,也能及时查到直接相关人追究责任。还有一种技术方式是视频播放过程中加入问题,视频播放到指定的时间点后播放器会自动d出问题(如果是幼儿课程,也可以是互动动画),要求观看者回答,观看者只有在正确回答问题后才能继续播放,如问题回答错误,视频可以被跳至其它指定时间点或者禁止观看等。
至于视频提取,这种破解的方式一般是专业技术人员所为。既然说到专业技术,那么一些课程成本较高或者特殊单位的视频需要加密保护防破解,则更应该选择加密技术水平高的合作公司,而不是千篇一律的市面化产品。私有定制化加密技术显然更适合这类客户群体,除了可以提供加密安全系数,还可以随着技术水平的不断上升进行私有加密产品的不断升级维护。像点量的老客户百度传课、勤学网等,甚至在专供破解的各大论坛都是一直传闻的大难题。
我想你应该是想问C/S架构中的客户端和服务端两者最常见的方式是通过Socket方式进行通信。
Socket可以理解成一个电线插座的工作过程:
服务器是电源插件, 客户端是电器
C和S通过电线和指定的插孔进行连接,连上后,S将电力源源不断发送到C, C就可以工作了。 当然C也可以反向发送信息到S。 两者可以相互通信。
在建立的过程中代码有一些不同。
在服务端采用API类是ServerSocket
在客户端采用的API是Socket类
连接建立后,双方都通过连接获取输入和输出流从而实现通信。即: InputStream is=socketgetInputStream();
isread();
连接代码:
S端:
ServerSocket server=null;
try {
server=new ServerSocket(指定的端口);
}catch(Exception e){
Systemoutprintln("不能监听:"+etoString());
}
Socket socket=null;
try {
socket=serveraccept();
InputStream is=socketgetInputStream();
//己通过建立起流,可以读取客户端发来的请求了
//同样也可以发送能过 sokcetgetOutputStream()
}
catch(IOException e){
Systemoutprintln("出错:"+etoString());
}finally{
try {
if(socket!=null){
socketclose();
serverclose();
}
}
catch(IOException e){
eprintStackTrace();
}
}
客户端:
Socket socket=null;
try {
socket=new Socket(url,端口);
//获取输出流,从而向服务端发数据
socketgetOutputStream();
//获取输入流,从而可以读服务端的数据
socketgetInputStream();
}catch(Exception e){
eprintStackTrace();
}
finally{
try {
socketclose();
}
catch(IOException e){
eprintStackTrace();
}
}网络编程,比较复杂点
服务器ServerSocket ss=new ServerSocker();
Socket s=ssaccept();
客户端Socket s=new Socket;
输入输出流
客户端发信息到服务器,服务器将信息转发到需要接受的客户端
需要考虑线程问题,并发问题。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)