最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

使用huggingface免費(fèi)docker服務(wù)部署24h錄播

2023-02-21 22:09 作者:秋之雪華  | 我要投稿

這里只是簡要講述下我遇到了哪些問題,怎么解決的。純自用,不提供代碼及完整方案。

原因很簡單,huggingface雖然提供免費(fèi)服務(wù),但是終究免費(fèi)的docker服務(wù)是用于學(xué)習(xí)和演示的,直接用于錄播應(yīng)用,雖說似乎沒有明面的違規(guī),但是開銷恐怕有些打,如果因?yàn)殚T檻降低而進(jìn)一步濫用就太不好了。

另外本人對(duì)Linux和docker都不熟,僅從初學(xué)的視角講述一些考量和問題點(diǎn)。

為什么需要部署24h錄播

  1. 部分主播可能沒有自動(dòng)錄播

  2. 部分直播可能因?yàn)椴豢煽沽o法完成投稿

  3. 部分主播或者場次可能是不留檔的

  4. 開播時(shí)間和個(gè)人時(shí)間不太匹配,無法跟直播

  5. 本地網(wǎng)絡(luò)不穩(wěn)定,看直播有時(shí)都卡,不適合本地錄播

fuggingface的docker服務(wù)特殊之處

  1. 只對(duì)外暴露一個(gè)端口,暴露的端口對(duì)docker鏡像來說,是可以通過readme.md和dockerfile來自定義的,對(duì)外映射為80,可以通過https://${用戶名}-${倉庫名}.hf.space來調(diào)用

  2. 2c16g,磁盤可用空間100g左右,網(wǎng)絡(luò)狀況良好

  3. docker啟動(dòng)以后無法獲得root權(quán)限也無法使用sudo命令 (當(dāng)然也可能是我水平有限)

部署24h錄播需要的主要軟件:

  1. 錄播軟件,最好能夠提供API或者網(wǎng)頁

  2. 把網(wǎng)盤映射為存儲(chǔ)器,或者提供http/webdav/ftp等公開協(xié)議的網(wǎng)盤

我選擇了錄播姬和Alist。網(wǎng)盤服務(wù)選擇了和彩云(畢竟空間大還免流)


部署程序到hf

如果單獨(dú)部署直播姬和Alist到hf,其實(shí)難度并不大。dockerfile里直接添加下載程序,解壓,給執(zhí)行權(quán)限,運(yùn)行,完事。

但是如果讓兩個(gè)程序同時(shí)運(yùn)行在一個(gè)space里,就有困難了。

  1. dockerfile的CMD命令只能運(yùn)行一個(gè)程序,用&&連接多個(gè)命令是無效的

  2. 如前述,hf限制一個(gè)space對(duì)外只暴露一個(gè)端口。兩個(gè)程序運(yùn)行在同一個(gè)space中時(shí),無法從外部訪問兩個(gè)程序的控制界面

當(dāng)然這只是困難,顯然是有解決辦法的:

  1. ? 使用如下方式的shell腳本,在docker的CMD命令中運(yùn)行這個(gè)腳本,運(yùn)行到cmd1時(shí),不等待cmd1運(yùn)行結(jié)束,就會(huì)直接運(yùn)行cmd2.只要cmd2打開了readme.md指定的端口,或者默認(rèn)的7860端口,hf就會(huì)判斷空間正常啟動(dòng)。而cmd1和cmd2所運(yùn)行的程序都會(huì)繼續(xù)運(yùn)行。

????2.? 突破這個(gè)限制有兩種方式:a.使用反向代理技術(shù),把不同端口映射為同一個(gè)端口的不同路由;b.把錄播和網(wǎng)盤服務(wù)分別運(yùn)行在兩個(gè)space,錄播結(jié)束通過webdav協(xié)議備份文件.c.對(duì)外只暴露一個(gè)服務(wù)。我選擇的方案是b。


Docker重啟配置丟失的問題

當(dāng)hf倉庫發(fā)生git?push后,或者超時(shí)被回收后,docker會(huì)重啟。此時(shí)配置文件會(huì)被重置。如何持久化存儲(chǔ)配置文件呢?

錄播姬直接使用json格式保存配置,Alist使用json格式備份和恢復(fù)配置。因此我們可以把這兩個(gè)文件備份到另一個(gè)git倉庫中,當(dāng)docker啟動(dòng)時(shí),自動(dòng)拉取配置。

而Alist稍微麻煩一些,還需要額外手動(dòng)登錄并且導(dǎo)入配置。


自動(dòng)同步網(wǎng)盤

雖然錄播姬和Alist都運(yùn)行起來了,但是錄播結(jié)束后,如何同步到網(wǎng)盤中去呢?

錄播姬的設(shè)置中提供了webhook服務(wù),也就是發(fā)生事件后,就向設(shè)定的API發(fā)送post請(qǐng)求。請(qǐng)求內(nèi)容包含了事件的信息(比如哪個(gè)直播間開播了,哪個(gè)直播間錄播結(jié)束了)

我直接用范例改寫了nodejs腳本,當(dāng)錄播結(jié)束后,調(diào)用curl把文件上傳到Alist的webdav接口上。

nodejs的啟動(dòng)方法正是前邊提及但是沒用上的cmd1 & cmd2的寫法。


減少空間占用

兩方面減少空間占用:

  1. 錄播結(jié)束后,自動(dòng)刪除3天前的文件,節(jié)約本地磁盤:運(yùn)行命令??find -mtime +3 -type f -name "*.flv" -exec rm {} \;

  1. 錄播結(jié)束,只上傳音頻和截圖,節(jié)約網(wǎng)盤空間。畢竟看直播也是常做黑聽人,沒有畫面問題不是特別大。也可以按需下載到本地。只上傳音頻顯然是用ffmpeg分離音頻,就不贅述。截屏的部分同樣是ffmpeg

自動(dòng)生成字幕

?? ?? ? 如果沒有看到別人reop直播內(nèi)容,通過語音識(shí)別出主播說了什么,是可以快速了解直播內(nèi)容的一個(gè)方法。雖然現(xiàn)在大家都在吹whisper,我還是推薦使用谷歌的服務(wù),whisper的開銷實(shí)在太大了,我擔(dān)心影響到正常錄播。

對(duì)應(yīng)的項(xiàng)目是這個(gè)https://github.com/agermanidis/autosub,他有一些上手難度,默認(rèn)不能識(shí)別為中文,因此我給出一個(gè)范例: ?

推送消息

直播開始和錄播結(jié)束自動(dòng)推送消息也是一個(gè)實(shí)用的功能。

我把他也做到了nodejs腳本里,推送服務(wù)選擇了推送加。有條件的人可以自己搭一個(gè)公眾號(hào),這樣推送的消息的自定義程度可以更高

離線下載

AList支持調(diào)用Aria2,但是需要自己安裝Aria2.這玩意apt-get?install一下就完事,但是安裝之后需要配置。略有點(diǎn)麻煩,可以直接抄我的倉庫,配置文件也可以在里邊找到??https://huggingface.co/spaces/tumuyan/Alist/blob/main/script.sh

文件時(shí)間錯(cuò)誤

安裝tzdata并且設(shè)置時(shí)區(qū)


使用huggingface免費(fèi)docker服務(wù)部署24h錄播的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
陵川县| 赤壁市| 廉江市| 丹东市| 衡东县| 吐鲁番市| 故城县| 河北省| 南涧| 额尔古纳市| 章丘市| 遂川县| 乡宁县| 出国| 金堂县| 登封市| 五大连池市| 唐河县| 周宁县| 罗定市| 江山市| 阜康市| 彭阳县| 和静县| 平罗县| 澄江县| 峡江县| 花垣县| 肃宁县| 耒阳市| 武安市| 舞阳县| 青铜峡市| 大关县| 达拉特旗| 金川县| 耿马| 普安县| 新宾| 柳州市| 石家庄市|