日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一区二区伦理 | 午夜视频在线观看国产 | 亚洲v国产v欧美v久久久久久 | 日韩精品视频免费 | 能看av的网站 | 久久天 | 日韩欧美一级视频 | 欧美黄色a级片 | 韩日欧美 | 日韩欧美成人一区二区 | 亚洲一区二区免费在线观看 | 国产精品三区在线观看 | 老妇裸体性激交老太视频 | 五月深爱 | 色五婷婷| 色综合天天色 | 猛1被调教成公厕尿便失禁网站 | 91老师片黄在线观看 | 精品无码一区二区三区的天堂 | 男人舔女人下部高潮全视频 | 经典毛片 | 日本三级黄色大片 | av在线资源网 | 婷婷色中文网 | 久操视频在线观看免费 | 欧美日韩黄色片 | 911成人网 | 五月天精品视频 | 国产乱码精品一区二区三区忘忧草 | 就操成人网 | 亚洲综合影院 | 最近免费中文字幕大全免费版视频 | 久久av免费看 | 日韩一区二区三区高清 | 黄色一级在线观看 | 免费看91视频 | 91网站免费看 | 中文字幕最新 | 成人超碰在线 | 少妇av一区二区三区无码 | 又色又爽又黄gif动态图 | 成人手机在线播放 | 成人羞羞网站 | 亚洲永久免费av | 久久久久无码国产精品不卡 | 欧美一级淫片bbb一84 | 毛片av在线 | 91禁外国网站 | 好吊色免费视频 | www色com| 一本一道久久综合 | 4438x亚洲| 欧美视频久久久 | 亚洲不卡在线视频 | 越南a级片 | 国产精品操 | 调教女m荡骚贱淫故事 | 青青草小视频 | 射射综合网 | 亚洲综合色在线 | 亚洲第一成人网站 | 2019年中文字幕 | 国产视频资源 | 亚一区| 日韩中文字幕在线观看视频 | 免费av影片 | 精品一二三区久久aaa片 | 日韩成人在线网站 | 亚洲av无码乱码国产精品久久 | 人妻一区二区三区视频 | 亚洲午夜视频在线观看 | 亚洲av成人片无码 | 无码人妻一区二区三区免费 | 蜜桃av免费 | 色四月| 一区视频免费观看 | 国产精品美女久久久久久久 | 久久伊人成人网 | 折磨小男生性器羞耻的故事 | 高清成人免费视频 | 日韩综合在线 | 久久男人的天堂 | 久久视频免费 | 婷婷亚洲综合 | 99亚洲视频| 台湾a级艳片潘金莲 | 亚洲一在线 | 午夜免费看片 | 久久亚洲一区二区三区四区五区 | 欧美一区二区日韩 | 密臀av | 精品少妇爆乳无码av无码专区 | 国产成人精品视频在线观看 | 国产精品视频久久久 | 天天干天天色天天射 | 国产伦精品一区二区三区 | 日本欧美黄色 | 亚洲激情在线视频 | 国产夜色精品一区二区av |