DanmakuRender:一個錄制帶彈幕直播流的小工具(版本4)
????結(jié)合網(wǎng)絡(luò)上的代碼寫的一個能錄制帶彈幕直播流的小工具,主要用來錄制包含彈幕的視頻流,主要功能如下:
可以錄制虎牙斗魚B站的純凈直播流和彈幕,并且支持在本地預(yù)覽帶彈幕直播流。(抖音的直播只能錄視頻,錄不了彈幕)
可以自動壓制彈幕到視頻中,并且渲染速度快。
支持在不同操作系統(tǒng)上運(yùn)行。
支持錄播自動上傳至B站(實(shí)驗(yàn)性功能)。
????本文主要介紹從沒用過Python和命令行的萌新使用這個代碼,如果你已經(jīng)有相關(guān)基礎(chǔ)可以直接看GitHub的簡介。
? ? GitHub項目地址:https://github.com/SmallPeaches/DanmakuRender。有更新第一時間會在GitHub上更新,有問題可以先去重新下載一份最新的代碼試試。
安裝說明
? ? 安裝Python:如果你之前安裝過Python的話直接下載代碼使用就行了,如果沒有安裝Python則先安裝Python(不知道怎么下的就下載這個?https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe)。安裝時一定要注意選擇Add Python xxx to PATH這個選項,其他的安裝路徑什么的可以自由選擇,不懂的話默認(rèn)也行。

? ??下載程序文件:前往GitHub項目地址,然后依次點(diǎn)擊Code-Download ZIP按鈕下載壓縮包,并把文件解壓到你想要的位置。

? ? 下載完成后打開程序所在的文件夾(main.py所在的文件夾),然后打開命令行窗口(win10系統(tǒng)shift+右鍵點(diǎn)擊頁面空白處,在菜單中選擇“在此處打開powershell窗口”,win11在頁面右鍵選擇“在終端中打開”)。輸入python -V并回車執(zhí)行,如果出現(xiàn)Python+版本號的輸出(例如Python 3.9.13)說明Python安裝成功,可以執(zhí)行下一步,否則檢查前面的Python安裝步驟是不是沒做好。
? ? 注意:在Windows 10 舊版本及更早的系統(tǒng)中,可能會出現(xiàn)安裝好了也無法正常顯示的情況,只要在安裝完成后重啟一下電腦就好了。
? ? TIPS:可以使用鍵盤方向鍵(上下箭頭)選擇之前執(zhí)行過的命令,右鍵可以復(fù)制粘貼內(nèi)容。
使用方法
????新版本使用yaml配置文件的方法來指定錄制的參數(shù),配置文件可以直接用記事本打開。配置文件分為兩個,分別為default.yml(默認(rèn)配置文件)和replay.yml(錄制配置文件), 一般情況下默認(rèn)配置文件不需要修改,只需要修改錄制配置文件。
????啟動程序需要在前面說的控制臺里運(yùn)行 python main.py ,不需要附帶參數(shù)。設(shè)置好了之后直接雙擊main.py打開也可以。
????程序第一次運(yùn)行需要下載環(huán)境,下載速度取決于網(wǎng)絡(luò)速度,環(huán)境需要從外國網(wǎng)站下載,可能比較慢。當(dāng)然你也可以自行前往下載,下載ffmpeg.exe、ffprobe.exe到tools文件夾,如果需要上傳的話還需要下載biliup.exe到tools文件夾。
????錄制配置文件內(nèi)錄制任務(wù)應(yīng)該滿足如下格式:

????一些常用的錄制例子(注意空格!不想打字就去GitHub復(fù)制粘貼!):
錄制B站13308358直播間:

錄制B站13308358直播間,指定分段時間1800秒:

錄制兩個不同的直播間,指定不同的參數(shù):

帶自動上傳功能的錄制(實(shí)驗(yàn)性功能):

????在此任務(wù)中,視頻會上傳到B站的默認(rèn)賬號,彈幕視頻和源視頻將會分別上傳,錄播中的分段會被作為分P上傳,上傳任務(wù)會在直播結(jié)束后進(jìn)行。如果不想上傳源視頻就刪掉src_video那一條。上傳功能由biliup-rs支持,項目地址:https://biliup.github.io/biliup-rs/index.html。
? ? 為了保證錄播正常,可以先設(shè)置分段時間為幾分鐘錄制一個直播試試。上傳功能最好是用自己的直播間開播十分鐘再下播試試(程序設(shè)計最短上傳的視頻長度為5分鐘)。
????這里是一個正常錄制的例子:

????如果使用上傳功能,則需要登錄到B站,登錄方法同biliup。登錄信息(cookies)默認(rèn)保存到.temp文件夾。特別提醒:cookies內(nèi)包含了登錄信息,不要將他分享給任何人!
????更豐富的功能和高階使用可以去GitHub看:https://github.com/SmallPeaches/DanmakuRender。
注意事項
程序的工作流程是:先錄制一小時直播,然后在錄制下一小時直播時啟動對這一小時直播的渲染。錄制完成后可以同時得到直播回放和帶彈幕的直播回放(分為兩個視頻)
程序默認(rèn)使用NVIDIA的硬件編碼器渲染,如果用A卡的話需要修改參數(shù)。如果不渲染彈幕就不用管。
在關(guān)閉程序時,如果選擇了自動渲染彈幕,則一定要等錄制結(jié)束并且渲染完成再關(guān)閉(由于程序設(shè)定是先錄制后渲染),否則帶彈幕的錄播會出問題。
如果因?yàn)榕渲帽容^差,渲染視頻比較慢導(dǎo)致渲染比錄制慢很多的,可以選擇先不渲染彈幕,在錄制結(jié)束后手動渲染。(這種情況比較少見,因?yàn)殇秩镜乃俣群芸?,?060的顯卡都可以同時錄兩個直播)
在錄制的過程中彈幕保存為一個字幕文件,因此使用支持字幕的播放器在本地播放錄播可以有彈幕的效果(就算是沒渲染彈幕也可以?。?,拿VLC播放器為例,在播放錄像時選擇字幕-添加字幕文件,然后選擇對應(yīng)的ass文件就可以預(yù)覽彈幕了。
自動上傳功能需要在主播直播結(jié)束之后才開始,然后把視頻一次性上傳到B站,多個錄像會自動作為多個分P上傳。注意重啟程序之前的視頻不會自動上傳!
常見問題
最后一個分P總是播不了,也不會自動渲染?
如果提前關(guān)程序的話記得用ctrl+c終止程序,不然就會播不了。當(dāng)然你也可以把default.yml里面的錄制視頻格式改成 ts ,這樣就不怕提前終止了。
N卡渲染失?。簄o device cuda?
多半是驅(qū)動程序太老了,更新一下就行。
壓制出來的視頻很糊/文件太大了怎么辦?
如果本地看很糊的話說明碼率不夠,本地文件過大說明碼率太高,可以在default.yml里面把默認(rèn)15M碼率改成其他你需要的數(shù)值。
如果本地看沒有問題,但是上傳B站很糊,這是因?yàn)锽站二壓導(dǎo)致的,沒有什么特別完美解決辦法。目前比較好的方案是偽4K,把1080P的視頻縮放成4K,讓B站以為是4K視頻然后按4K分配碼率,保證清晰度。程序里可以設(shè)置重縮放來實(shí)現(xiàn)(代價是4倍編碼時間!)。
使用A卡或者無顯卡情況下壓制彈幕?
參考default.yml里面的設(shè)置修改就行了。
程序有些時候莫名其妙卡住,視頻也不錄制了,彈幕也沒有了?
出現(xiàn)這種情況請私信聯(lián)系我,保留logs文件夾里的日志文件。
更多
感謝 THMonster/danmaku, wbt5/real-url, ForgQi/biliup 的工作。
如果出現(xiàn)bug歡迎大家評論或者在GitHub中提出。
此程序只供研究學(xué)習(xí)使用。