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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

srs可以用java开发吗,为SRS流媒体服务器添加HLS加密功能(附源码)

發(fā)布時間:2024/3/12 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 srs可以用java开发吗,为SRS流媒体服务器添加HLS加密功能(附源码) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#為SRS流媒體服務(wù)器添加HLS加密功能(附源碼)#

之前測試使用過nginx的HLS加密功能,會使用到一個叫做nginx-rtmp-module的插件,但此插件很久不更新了,網(wǎng)上搜索到一個中國制造的叫做SRS的流媒體服務(wù)器,比較活躍,而且據(jù)說這個流媒體服務(wù)器的性能和功能都強(qiáng)大不少,但遺憾的是沒有HLS加密功能。原作者沒有加這個功能,所以決定自己動手,花了幾個晚上的時間自己參考nginx-rtmp實(shí)現(xiàn)了一下。代碼放到了github上(源碼已經(jīng)merge到了3.0release主分支上,pull request)。

##功能介紹##

###幾個新添加的參數(shù)配置項###

hls_keys on;

hls_fragments_per_key 4;

hls_key_file [app]/[stream]-[seq].key;

hls_key_file_path ./objs/nginx/html;

hls_key_url http://localhost:8080/live/h265.m3u8;

分別代表如下含義:

hls_keys: 是否開啟hls加密,默認(rèn)關(guān)閉。

hls_fragments_per_key: 每個key可以加密多少個ts片段,默認(rèn)值是10。

hls_key_file: key文件相對路徑的生成模板,包括一個[app]文件夾以及名字[stream]-[seq],后綴為.key,默認(rèn)值為[app]/[stream]-[seq].key。

hls_key_file_path: 可以為key文件的生成指定本地目錄,默認(rèn)為hls_path(存放ts的目錄)。

hls_key_url: 可以為key指定一個HTTP url。

##實(shí)現(xiàn)過程中的幾個關(guān)鍵點(diǎn)##

需要實(shí)現(xiàn)的功能點(diǎn)包括一下幾個方面:

###從配置文件讀取配置項####

這個仿照srs的實(shí)現(xiàn)添加,比較簡單。

###key和iv的自動生成和保存####

在這里每隔hls_fragments_per_key個ts會自動的生成隨機(jī)的16bytes的key和iv。key會保存在hls_key_file_path路徑中,iv會保存在m3u8文件中。

在代碼實(shí)現(xiàn)中,key和iv在內(nèi)存中保存了三份。SrsHlsMuxer中保存了一份,用于提供每次new SrsHlsSegment時需要的key和iv。因為每次刷新m3u8(refresh_m3u8)時,都要從頭重新生成一次m3u8文件,所以需要為每個SrsHlsSegment對象備份一份iv。最后是傳遞給writer的key和iv,用于AES128加密。

###AES128加密###

材料都準(zhǔn)備好了,最后的關(guān)鍵問題就是加密。在這里使用了Openssl的加密庫,SRS的實(shí)現(xiàn)是每次寫一個packet(188bytes),而AES128需要加密的raw數(shù)據(jù)是16的倍數(shù),因此需要在原有SrsFileWriter的實(shí)現(xiàn)上加一層緩沖。緩沖到16的倍數(shù)后(也就是188*4),加密一次數(shù)據(jù),然后寫到文件中。具體實(shí)現(xiàn)是下面的樣子:

srs_error_t SrsEncFileWriter::write(void* buf, size_t count, ssize_t* pnwrite)

{

srs_assert(count == SRS_TS_PACKET_SIZE);

srs_error_t err = srs_success;

if(buflength != HLS_AES_ENCRYPT_BLOCK_LENGTH)

{

memcpy(tmpbuf+buflength,(char*)buf,SRS_TS_PACKET_SIZE);

buflength += SRS_TS_PACKET_SIZE;

}

if(buflength == HLS_AES_ENCRYPT_BLOCK_LENGTH)

{

unsigned char encryptedbuf[HLS_AES_ENCRYPT_BLOCK_LENGTH];

memset(encryptedbuf,0,HLS_AES_ENCRYPT_BLOCK_LENGTH);

AES_cbc_encrypt((unsigned char *)tmpbuf, (unsigned char *)encryptedbuf, HLS_AES_ENCRYPT_BLOCK_LENGTH, &key, iv, AES_ENCRYPT);

buflength = 0;

memset(tmpbuf,0,HLS_AES_ENCRYPT_BLOCK_LENGTH);

return SrsFileWriter::write(encryptedbuf,HLS_AES_ENCRYPT_BLOCK_LENGTH,pnwrite);

}

else

{

return err;

}

};

需要注意的是每次close TS文件的FD時需要判斷緩沖中有沒有數(shù)據(jù),如果有的話需要添加填充數(shù)據(jù)(添加到正好為16的倍數(shù)即可),然后加密,寫文件,關(guān)閉文件:

int addBytes = 16 - buflength % 16;

memset(tmpbuf + buflength, addBytes, addBytes);

unsigned char encryptedbuf[buflength+addBytes];

###測試###

能夠為HLS TS切片正常加密和播放。沒有做充分的測試,對SRS了解的還不夠深入。如果大家需要這個功能的話,可以嘗試著使用一下,遇到問題聯(lián)系我。

##如何使用##

首先,在配置文件中添加以下配置項。

http_server {

enabled on;

listen 8080;

dir ./objs/nginx/html;

}

vhost __defaultVhost__ {

hls {

enabled on;

hls_fragment 10;

hls_window 600000;

hls_path ./objs/nginx/html;

hls_m3u8_file [app]/[stream].m3u8;

hls_ts_file [app]/[stream]-[seq].ts;

hls_keys on;

hls_fragments_per_key 4;

hls_key_file [app]/[stream]-[seq].key;

hls_key_file_path ./objs/nginx/html;

hls_key_url http://localhost:8080/live;

}

然后到trunk目錄下啟動:

./objs/srs -c conf/hls.conf

推送rtmp流的命令:

ffmpeg -re -i /Users/zexu/Movies/test.mp4 -c copy -f flv rtmp://localhost:1935/live/h265

最后在播放器中播放URL:

http://localhost:8080/live/h265.m3u8

###關(guān)于配置項要注意的地方###

關(guān)于hls_key_file_path和hls_key_url,要么都不配置(注釋掉即可),這樣的話m3u8,ts和key文件都在一個目錄下面。要么就都配置,需要自己保證兩個地址能夠?qū)ι稀7駝t會出現(xiàn)key找不到而導(dǎo)致播放失敗的問題。

關(guān)于找一找教程網(wǎng)

本站文章僅代表作者觀點(diǎn),不代表本站立場,所有文章非營利性免費(fèi)分享。

本站提供了軟件編程、網(wǎng)站開發(fā)技術(shù)、服務(wù)器運(yùn)維、人工智能等等IT技術(shù)文章,希望廣大程序員努力學(xué)習(xí),讓我們用科技改變世界。

[為SRS流媒體服務(wù)器添加HLS加密功能(附源碼)]http://www.zyiz.net/tech/detail-118040.html

總結(jié)

以上是生活随笔為你收集整理的srs可以用java开发吗,为SRS流媒体服务器添加HLS加密功能(附源码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美a免费| 国产精品高潮呻吟久久 | 国产第20页 | av手机天堂| 国产亚洲精品女人久久久久久 | 免费av在线网址 | 中文在线字幕免费观看 | 日韩欧美第一区 | 在线视频免费观看 | 在线播放91 | a级免费网站| 国产成人麻豆精品午夜在线 | av精选| 国模无码一区二区三区 | 日本不卡一区在线观看 | 91成人免费看 | 日本护士╳╳╳hd少妇 | 国产免费成人在线视频 | 欧美极品喷水 | 成人做爰视频www网站小优视频 | 国产裸体永久免费视频网站 | 成人综合网站 | 日韩不卡毛片 | www.玖玖玖 | 美女日批网站 | 亚洲人妻一区二区 | 韩国三级hd中文字幕叫床浴室 | 亚洲乱码一区二区三区 | 亚洲在线不卡 | 日日噜噜夜夜狠狠久久丁香五月 | 手机看片福利在线 | 午夜大片在线观看 | 51调教丨国产调教视频 | www.成人av | 你懂的在线播放 | 亚洲熟女少妇一区 | 与亲女洗澡时伦了毛片 | 国产区视频| 免费观看黄色av | 午夜激情亚洲 | avtt亚洲| 国产伦精品一区二区三区精品 | 日韩av手机在线播放 | 人人妻人人爽人人澡人人精品 | 国产精品免费久久久 | av无毛 | 精品孕妇一区二区三区 | 观看av | 欧美三级在线视频 | caopor超碰| 国产免费高清视频 | 国产一卡二卡在线播放 | 妞妞影视 | 亚洲区视频在线观看 | 天天搞天天干 | 自拍视频啪 | 在线观看免费中文字幕 | 日本女人黄色 | 在线免费看黄色 | 国产三级精品在线 | 高潮毛片又色又爽免费 | 日韩精品一区二区三区色欲av | 中文字幕一区二区三区夫目前犯 | 成人一区二区三区视频 | 麻豆三级在线观看 | 肥熟女一区二区三肥熟女 | 激情综 | 亚洲图片一区 | 成人美女在线 | 香蕉视频在线网址 | 国产波霸爆乳一区二区 | 久久久久国产精品一区二区 | 天天射天天爽 | 成人学院中文字幕 | 777四色 | 成年人视频免费 | 波多野结衣在线免费观看视频 | 成人国产网站 | 人妻无码久久精品人妻 | 欧美两根一起进3p做受视频 | 国产精品一卡二卡在线观看 | 欧美三级 欧美一级 | 久草最新视频 | 九久久久久 | 成人免费视频a | 久草久| 日韩午夜毛片 | 中文字幕日韩欧美一区二区三区 | 久草a在线| 日韩欧美中文字幕一区 | 亚洲av毛片一区二二区三三区 | 尹人成人网 | 久久看视频 | 日本黄色录像片 | 亚洲精品字幕在线 | 女优视频在线观看 | 色久在线 | 国产欧美高清 | 欧美黑人又粗又大高潮喷水 |