fPlayer是一款用于视频加密、播放加密视频的软件。
Windows | Mac |
---|---|
fplayer_v0.8.zip | fplayer_v0.8.dmg |
Windows | Mac |
---|---|
fplayer_encryptor_v0.2.zip | fplayer_encryptor_v0.2.dmg |
https://fplayer.fivecakes.com/
示例加密文件:oceans.mp4.fplayer
示例加密文件播放账号:demo@gmail.com
示例加密文件播放密码:666666
Windwos端播放器:
Mac端播放器:
Windows 端加密器:
Mac端加密器:
后台播放日志:
最初是想学习Qt,但是又不知道写点什么练手,正巧学习群里在讨论视频被盗版相关的内容。视频作者将视频发布到视频平台,用户付费观看,盗版者只需付费一次,就可以用浏览器插件将视频下载,然后倒卖,web端的水印是js加的,非常容易去掉。另外,盗版者还可以通过录屏的方式翻录视频,然后倒卖,这已经成为产业了。
要想让视频不被盗版,首先不能用浏览器播放,因为网站的js是可以直接看到源码的,只要是浏览器上的视频理论上都可以通过浏览器插件下载。第二点,是能防止录屏,估计调用操作系统API可以实现这个功能。
咦,这不正是给我练习Qt的好机会么,于是就开始折腾了。最初设想就是Qt加点加密功能,两三天搞定,后来发现Qt的视频组件太弱,于是开始自己解码视频,解码音频,逐渐掉坑里了,最终用了半个多月才搞定视频加密播放的功能。动态水印、防止录屏就先算了吧,时间实在耗不起。对了,因为我没加锁,没保证线程安全,所以有时会闪退。
收获也是很大的,熟悉了Qt,了解了视频和音频的相关知识,各种音频视频文件格式有什么特点也都有一定的了解,日后应该会有用吧。再有就是认识到C/C++语言的缺点,内存安全和线程安全必须由程序员来保证,即需要程序员free()不用的内存,多线程必须由程序员加锁。任何人都会疏忽,如果忘了的话,这种bug很难调试。再者到处加锁和free也是很麻烦的。
一个月后追加......C、C++、Qt、SDL用起来实在麻烦,我想到另一套解决方案,显示部分用浏览器,视频解码用python的ffmpeg库,他们之间用websecket通信,视频处理之所以用python而不用c语言是因为python有websecket库。前端可以直接用canvas显示接受到的图片数据,也可以用流媒体的方案。pcm音频我找到js播放器pcm-player,测过demo可用。如果觉得还需要打开浏览器太low,可以用electron打包成一个app。