日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg-简单AES加解密记录

發(fā)布時(shí)間:2024/2/28 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg-简单AES加解密记录 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

分享一下視頻分段緩存技術(shù)之中的一種格式m3u8.據(jù)說(shuō)是蘋果開(kāi)發(fā)的,前途無(wú)量。

使用起來(lái)確實(shí)蠻方便,可以自己集成做成播放器。本文暫時(shí)只記錄簡(jiǎn)單的加解密和播放。

觀摩這項(xiàng)技術(shù)時(shí)參考的幾篇文章分享如下:

使用ffmpeg轉(zhuǎn)碼m3u8并播放:?https://blog.csdn.net/psh18513234633/article/details/79312607

hls協(xié)議(最清晰的講解):https://blog.csdn.net/weiyuefei/article/details/70257616

流媒體開(kāi)發(fā)之--HLS--M3U8解析(2): HLS草案:https://blog.csdn.net/newarow/article/details/82805672

ffmpeg Cheatsheet: ??https://gist.github.com/larvata/95df619df7109d8b74d2b965a3266354#file-ffmpeg-cheatsheet-md

使用ffmpeg視頻切片并加密:https://www.cnblogs.com/codeAB/p/9184266.html

ffmpeg分解視頻文件并加密:https://blog.csdn.net/cnhome/article/details/73250495

FFmpeg之ffplay命令使用:https://blog.csdn.net/xuyankuanrong/article/details/77529468

還有一些cmd操作:

CMD批處理循環(huán),太強(qiáng)大了:https://blog.csdn.net/xhhjin/article/details/7373524

copy /b 命令無(wú)縫合并多個(gè)文件:http://www.360doc.com/content/14/0212/22/9849466_352039289.shtml

當(dāng)然還有其他很多參考過(guò)的網(wǎng)頁(yè),但是都很散,有用信息不多,暫不分享那些網(wǎng)頁(yè)。

?

這項(xiàng)技術(shù)運(yùn)用在很多瀏覽器上,所以想找東西練手,還是蠻多的(某些想下載但是沒(méi)提示下載的視頻,實(shí)際上是放在緩存文件夾里面,然后本地load的)。

這里我就簡(jiǎn)單分享一下如何自己用ffmepg對(duì)一個(gè)視頻加密,以及解密該視頻。

目前我接觸到3種情況:

①未加密的視頻,用PotPlayer可以直接打開(kāi)觀看;

②有AES的key,沒(méi)IV(其實(shí)就是使用了默認(rèn)值),部分有兩個(gè)m3u8;

③有AES的key和IV,就是下面將要分享的操作。

?

目前要使用的工具,首先必須要有ffmepg,下載成已經(jīng)Build好的包,不然自己來(lái)生成比較麻煩,當(dāng)然,有興趣可以下載代碼來(lái)看,是開(kāi)源的。

生成key部分我使用了Openssl,功能超級(jí)多,但是本文只用到簡(jiǎn)單的生成隨機(jī)密碼。好像是我下載不對(duì),操作發(fā)現(xiàn)不支持hex,所以后面生成hex部分得寫一下代碼處理,當(dāng)然也有網(wǎng)頁(yè)生成,數(shù)據(jù)庫(kù)生成,這里就不寫明了。

然后就是準(zhǔn)備一個(gè)視頻。我這次下載了這些東西:

接下來(lái)就開(kāi)始動(dòng)手:(實(shí)際不用Openssl也行,直接手動(dòng)寫幾個(gè)編碼當(dāng)密碼就行)

????????通過(guò)上面推薦的鏈接,大家應(yīng)該知道是主要m3u8文件,然后附帶的ts文件(可以不寫后綴,就是些視頻片段,可以在播放器中打開(kāi)觀看),key(會(huì)改變視頻片段的編碼,導(dǎo)致無(wú)法播放)。

????????這里的m3u8可以用播放器打開(kāi),正常是會(huì)報(bào)錯(cuò)的,因?yàn)橐曨l片段被AES加密了編碼模式,所以普通讀取出來(lái)不是正常的頭,就報(bào)錯(cuò)了。

???????如果你遇到的m3u8沒(méi)有加密,那這里是打開(kāi)可以播放的。上面那些ts也是可以直接播放器打開(kāi)的。

??????一般情況下,m3u8文件可能需要進(jìn)行修改。就是當(dāng)你操作的是手機(jī)端,把緩存搞在電腦上轉(zhuǎn)碼時(shí)(或者從C盤緩存目錄拷貝出來(lái)時(shí)),里面的路徑是不對(duì)的,里面記錄的是絕對(duì)路徑,需要修改。像下面圖片,手機(jī)拷過(guò)來(lái)后是手機(jī)上的絕對(duì)路徑,用記事本ctrl + H,該成電腦上的當(dāng)前路徑后就能用了(或者刪掉變成相對(duì)路徑)。

??????現(xiàn)在從頭開(kāi)始做吧。

??????目前我們手上只有一個(gè)test.mp4,先介紹不加密的方式分段生成m3u8:

一.無(wú)加密方式生成m3u8
??????新建一個(gè)文件夾來(lái)放置后面要生成的ts文件。

??????先用管理員身份運(yùn)行cmd:

??????cd到ffmpeg.exe所在的地方(不過(guò)我推薦是cd到要生成文件的地方,然后ffmpeg.exe弄成全路徑來(lái)執(zhí)行,效率會(huì)高一些)。

?????例如我test.mp4在D:\aa\bb目錄下:

???這樣我在cmd中輸入:

ffmpeg.exe -y -i D:\aa\bb\test.mp4 -hls_time 6 -hls_playlist_type vod -hls_segment_filename "D:\aa\bb\file%d" D:\aa\bb\playlist.m3u8
???????-hls_time ?是每一段視頻多長(zhǎng)時(shí)間

???????-hls_segment_filename ??分段生成在哪里,命名規(guī)則%d

??????以及結(jié)尾的m3u8輸出路徑

??????目錄下已經(jīng)生成分段文件+m3u8文件了,由于這里沒(méi)有加密,所以分段文件可以用播放器直接打開(kāi)。當(dāng)然也可以直接打開(kāi)m3u8文件。

這里插播一下ffplay的使用:

??????指令中要注意的就是路徑,從前面我們知道是m3u8中記錄是用相對(duì)路徑,所以需要把cmd移到該目錄下,然后用ffplay的全路徑 +?-allowed_extensions ALL (就是允許全部后綴模式,否則沒(méi)后綴的不讓播放) +m3u8 + 回車

D:\aa\ffmpeg-4.0.2-win64-static\bin\ffplay.exe -allowed_extensions ALL playlist.m3u8
????????

???????既然提到分段,那就有合并了。

??????由于這里沒(méi)有使用加密,所以可以直接把全部ts文件合并成一個(gè)文件就行。

??????可以cmd直接合并,但是需要提前處理命名規(guī)則,因?yàn)閏md按字符比較的,01和1是兩種不同的概念,這里可以寫個(gè)循環(huán)處理改命名,然后再 ?cmd的copy /b * new.mp4。

??????cmd代碼不好寫。所以推薦還是用ffmpeg。

?????代碼如下:合并并轉(zhuǎn)碼成mp4格式

D:\aa\ffmpeg-4.0.2-win64-static\bin\ffmpeg.exe -allowed_extensions ALL -i playlist.m3u8 -acodec copy -vcodec copy -f mp4 output.mp4


二.加密方式生成m3u8
??????有了前面那些截圖,這里的操作其實(shí)就是多了寫密碼步驟而已,其他大部分一樣,所以這里就不再截圖了。

?????

?????加密,目前我看的是AES。概念那些大家有空去了解一下,這里只分享一下怎么用。

?????具體步驟是:使用ffmpeg視頻切片并加密

????然后里面一些參數(shù),其實(shí)在源文件里面已經(jīng)有了,可以找這些文檔來(lái)弄明白設(shè)置什么參數(shù):

????這里我多分享一下直接用一個(gè)key來(lái)加密怎么操作吧。就是手上有一個(gè)密碼+一個(gè)視頻,弄到最后是一個(gè)放密碼的文本文件,然后就是ts+m3u8,沒(méi)有IV。

????其實(shí)就是前面步驟中,enc.keyinfo中第三行的IV刪掉就行。

???同時(shí)步驟一中用openssl生成key的,改成:新建文本文件,寫入密碼后保存,然后刪掉后綴當(dāng)key。

????其他照舊:

D:\aa\ffmpeg-4.0.2-win64-static\bin\ffmpeg.exe -y -i test.mp4 -hls_time 6 -hls_key_info_file k0.keyinfo -hls_playlist_type vod -hls_segment_filename "file%d" playlist.m3u8
?

???????密碼文件k0,用openssl生成的話,打開(kāi)是亂碼的,自己寫入的就不會(huì)亂碼,使用起來(lái)暫時(shí)未發(fā)現(xiàn)區(qū)別:

???????

???????加密方式生成的ts文件,你會(huì)發(fā)現(xiàn)無(wú)法用播放器打開(kāi),只能用ffplay打開(kāi)(打開(kāi)方式同無(wú)加密一樣的代碼,都是直接傳入m3u8文件即可)。

???????這樣解密方式,實(shí)際也和前面一樣,都是圍繞m3u8,是否有key,實(shí)際都是內(nèi)部處理的。

?

??????這里可能會(huì)遇到問(wèn)題的是,網(wǎng)上的都是說(shuō)EXT-X-KEY這里的是http,實(shí)際都可以,找得到文件就行。然后就是開(kāi)頭提的兩個(gè)m3u8的,這個(gè)就溜一點(diǎn):

??????改EXT-X-KEY的文件地址為key的本地地址后,發(fā)現(xiàn)這樣去轉(zhuǎn)是失敗的(提示找不到ts文件),這時(shí)可以把下面的一堆ts信息,換成另一個(gè)m3u8里面的ts信息,就可以轉(zhuǎn)換了。我遇到的情況,是第一個(gè)ts信息是本地文件,第二個(gè)是一個(gè)找不到的路徑的文件(但是這個(gè)帶key,第一個(gè)不帶),修改成本地文件后,除了#EXTINF的數(shù)字不同外,其他都一樣(文件也能找到了),結(jié)果還是報(bào)錯(cuò),就把那個(gè)m3u8的ts信息都復(fù)制過(guò)來(lái)(#EXTINF的數(shù)字保持一樣),本個(gè)m3u8只保留EXT-X-KEY這里的URI="k0",其他都是用另一個(gè)m3u8的,就可以轉(zhuǎn)換了。
---------------------?
作者:Yao_PC?
來(lái)源:CSDN?
原文:https://blog.csdn.net/Yao_2333/article/details/82910560?utm_source=copy?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!

總結(jié)

以上是生活随笔為你收集整理的ffmpeg-简单AES加解密记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。