視頻加密攝像頭設(shè)備密碼是多少(視頻加密怎么破解)
查看原文:玩轉(zhuǎn)視頻加密技術(shù)
點(diǎn)擊關(guān)注“八戒技術(shù)團(tuán)隊(duì)”,閱讀更多技術(shù)干貨
短視頻目前在互聯(lián)網(wǎng)上非?;鸨?,因?yàn)橐曨l比文字更能清晰的表達(dá)創(chuàng)作的內(nèi)容,大家每天都可能在刷抖音、B站的視頻。作為開(kāi)發(fā)人員,不管是否從事音視頻開(kāi)發(fā),都應(yīng)該了解一下相關(guān)的技術(shù)。
一、基礎(chǔ)概念
首先給大家介紹視頻的三個(gè)基礎(chǔ)概念:
1.幀數(shù)
在一秒內(nèi)播放的幀數(shù)就是每秒幀數(shù)率。
視頻標(biāo)準(zhǔn)幀率:24幀
2.分辨率
視頻圖像在一個(gè)單位尺寸內(nèi)的精密度。
常見(jiàn)分辨率:1280*720
3.碼率
數(shù)據(jù)傳輸時(shí)單位時(shí)間傳送的數(shù)據(jù)位數(shù),單位:kbps。
碼率和質(zhì)量成正比,但是文件體積也和碼率成正比。
二、視頻格式
視頻格式實(shí)質(zhì)是視頻編碼方式,可以大致分為兩種大類(lèi):
一、適合本地播放的本地影像視頻(從網(wǎng)上下載的視頻如:MP4)

如上圖,這是一個(gè)常見(jiàn)的MP4格式視頻,有很多視頻的基礎(chǔ)信息。MP4、AVI、MKV等都是本地視頻文件的后綴,是一種包含視頻各種信息的封裝格式,可以理解為一種打包,把所有的視頻數(shù)據(jù)和音軌封裝在一起。
二、適合在網(wǎng)絡(luò)中播放的網(wǎng)絡(luò)流媒體影像視頻(如B站上的視頻)
【視頻協(xié)議】是針對(duì)網(wǎng)絡(luò)流媒體而言的,也就是只有在有網(wǎng)絡(luò)時(shí)通過(guò)瀏覽器或者移動(dòng)端APP才能看到的視頻,目前常見(jiàn)的協(xié)議有RTSP、RTMP、HLS、HTTP等。
一般來(lái)講,視頻流從加載到準(zhǔn)備播放是需要經(jīng)過(guò)解協(xié)議、解封裝、解編碼這樣的過(guò)程,其中協(xié)議指的就是流媒體協(xié)議;封裝指的是視頻的封裝格式;而編碼又分為視頻編碼和音頻編碼。
如果平臺(tái)上的視頻出于對(duì)版權(quán)的考慮,要進(jìn)行加密,一般是怎么處理的呢?
三、視頻BLOB加密
這種加密是在前端比較常見(jiàn)的一種加密方式,我們以B站上的一個(gè)視頻為例:

打開(kāi)瀏覽器按下F12,可以看到視頻的資源地址是一串以 blob 開(kāi)頭的地址,這跟我們常見(jiàn)的地址有些不一樣,而且如果你直接打開(kāi)這個(gè)地址是無(wú)效的。
BLOB,它的全稱(chēng)為big binary large object,譯為二進(jìn)制大對(duì)象。一般來(lái)說(shuō),首先由后端,比如 JAVA 將視頻轉(zhuǎn)換為blog對(duì)象傳給前端,前端在拿到blog對(duì)象后,再通過(guò)URL.createObjectURL生成臨時(shí)地址,賦值給video標(biāo)簽的src屬性,就可以實(shí)現(xiàn)這個(gè)效果了。前端的大致代碼如下:

四、視頻切片加密
我們知道看視頻的話是需要很大的流量的,對(duì)于絕大多數(shù)用戶來(lái)說(shuō),他們不一定會(huì)把視頻看完,如果是加載一個(gè)小視頻,那還沒(méi)有什么大問(wèn)題,但如果是加載一個(gè)大視頻的話,這就會(huì)浪費(fèi)大量的流量,并且加載過(guò)程會(huì)持續(xù)占用帶寬。這個(gè)時(shí)候我們會(huì)用到視頻分片處理。
試想一下,如果我們把視頻切成一段一段的,每次只加載一段,看完了再加載一段,這樣能有效的節(jié)省資源。還是以B站的一個(gè)視頻為例,在F12中的Network里可以看到,網(wǎng)站一直在一段一段的請(qǐng)求視頻流的數(shù)據(jù)。(PS:這個(gè)m4s是HTML的一種格式)

切片加密原理:將視頻從MP4文件切片成多個(gè)ts文件,并使用AES-128對(duì)每一片視頻進(jìn)行加密,最后生成m3u8文件。這里我們需要用到ffmpeg。
1.生成公有key
openssl rand 16 > encrypt.key
2.生成私有key(16進(jìn)制)
openssl rand -hex 16
3.按照下面格式新建一個(gè)encrypt.keyinfo的文件
Key URI # enc.key的路徑,使用http形式
Path to key file # enc.key文件
Private key # 上面生成的16進(jìn)制的私有key
例如:
http://192.168.1.111:8090/encrypt.key
/home/Admin/encrypt.key
8b4c39c498949536f8d2af1f6fec7d39
4.用 ffmpeg 開(kāi)始分片并加密

五、防盜鏈Referer
通過(guò)對(duì)視頻資源設(shè)置防盜鏈Referer,可以屏蔽非白名單內(nèi)的視頻資源下載。例如思博網(wǎng)的視頻我們都設(shè)置了防盜鏈:

HTTP referer 是 header 上的一個(gè)屬性。當(dāng)瀏覽器向服務(wù)器發(fā)起請(qǐng)求時(shí),一般會(huì)帶上Referer,告訴服務(wù)器我是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的。打個(gè)比方,我們?cè)诤笈_(tái)上傳一個(gè)視頻到七牛云,七牛云高級(jí)配置里有一個(gè)域名防盜鏈選項(xiàng),我們可以在這里設(shè)置白名單和黑名單。

另外,七牛云還提供了私有空間,私有空間內(nèi)的文件對(duì)象都要獲得擁有者的授權(quán)才能進(jìn)行訪問(wèn),并且可以設(shè)置鏈接的有效時(shí)間,超過(guò)時(shí)長(zhǎng)后自動(dòng)失效(視頻會(huì)有緩存,清空緩存之前視頻仍然有效)。私有空間的特點(diǎn)是安全性更高,需要加token訪問(wèn),資源鏈接有時(shí)效性。
除了以上幾種策略外,還有視頻播放器加密、跑馬燈防盜錄等等。但是即使做了加密處理,也阻止不了錄屏。完全杜絕視頻泄露是很難的,或者我們可以采取其他方式加大盜用的成本。
目前市面上大致的視頻加密就是這幾種,當(dāng)然我們可以多個(gè)方案一起使用,使視頻加密的安全性更高。
希望以上內(nèi)容能對(duì)有需要的人有所幫助
歡迎大家一起探討交流

如若轉(zhuǎn)載,請(qǐng)注明出處:http://www.qjsdgw.cn/3442.html