如何用100塊的云服務器配合OBS搭建無人值守LoFi電臺

可能很多人不知道QQ有個一起聽歌的功能,我之前經(jīng)常在群里開這玩意放我自己喜歡聽的歌。
然后差點被群主給t了。為了解決這種尷尬的情況,我決定直接在b站上直播lofi電臺放自己喜歡聽的歌。
因為人不在國內(nèi),之前直播都是通過在國內(nèi)的云服務器上開魔法配合OBS直播。這樣弄我試下來比Malus要穩(wěn)定很多也便宜很多,Malus一年大約400,騰訊買個云服務器的話(2核 4g 6mbps)只要100塊。實際推流720p,看b站1080p的視頻沒有什么問題。

如果是真人在線直播的話這樣可能就是比較好的解決方案了。但我的需求比較特殊,只是用來循環(huán)播放lofi音樂,并不需要實時的互動。這樣直播了一段時間以后發(fā)現(xiàn)幾個問題:一是,我必須一直開著推流的電腦。二是,有時候魔法連接不是很穩(wěn)定,基友上來聽的時候和我說很卡。

就在和沙雕群友吹水的過程當中, @saintrecon?提醒我說為啥不把OBS直接裝魔法服務器上推流,這樣直接省去一道從國外傳輸?shù)絿鴥?nèi)服務器的過程,還不用開電腦。


只能說還是沙雕群友思路多。我的格局還是太小了被局限在通常的解決方法上。因為大多數(shù)直播的情況下推流的電腦肯定是自己家里的電腦。很少有我這種循環(huán)放LoFi的需求可以在一個無人值守的云服務器上干這個事情的。
但是問題又來了。我的云主機是一個虛擬機,并沒有顯示器和GUI界面而OBS是一個GUI程序。所以第一個要解決的問題是給云主機安裝圖形界面并能通過遠程登錄的方法來訪問服務器。(后面發(fā)現(xiàn)可能還有更簡單更省資源的方法比如用PyLivestream 去調(diào)用FFmpeg?https://github.com/scivision/PyLivestream?不過因為我已經(jīng)弄好了GUI的界面,目前懶得折騰了等以后有空再說吧)
這里我推薦用XFCE做GUI因為系統(tǒng)占用比較小。然后安裝一個VNC Server來遠程登錄GUI界面。VNC有點類似Windows的遠程桌面。我這里裝的TightVNC。我發(fā)現(xiàn)TightVNC還有個好處他似乎是能夠虛擬一個屏幕給Linux的,所以當你的VNC Client關(guān)閉以后OBS也還是在運行的。我不知道其他VNC Server是不是也是有類似的效果,有玩過的大佬在評論里說說。
安裝過程可以參考:
https://www.vultr.com/docs/install-gui-environment-for-ubuntu/
https://www.vultr.com/docs/create-a-streaming-server-with-obs-and-ubuntu/
需要注意的是安裝OBS和一些其他軟件的時候最好不要用SNAP的包,最好去官網(wǎng)下原來的安裝程序。不知道為什么我用SNAP的包似乎在VNC下運行會遇到權(quán)限問題,導致程序不能運行。
等全部安裝完以后就可以遠程登錄云主機用OBS直播了

當然如果你不是用OBS的media source直接播放帶有l(wèi)ofi音樂嵌入的視頻你還會遇到一個問題:就是云主機沒有聲卡。這時你就要一個loopback device。其實linux的ALSA驅(qū)動是帶一個loopback的模塊的激活方式也很簡單。只需要輸入命令:
sudo modprobe snd-aloop
你就會得到一個8進8出的聲音設備:

在播放軟件和obs選擇相應的設備后就可以通過音樂播放器來播放你的lofi歌單而不是限制在視頻的內(nèi)嵌音頻了。音樂播放器的話推薦strawberry因為開發(fā)還是比較active而且還能夠選擇輸出設備(比較流行的rythmbox好像不行)。還有一個小問題是我一開始用modprobe激活snd-aloop這個module后用aplay -l打印聲音設備一直顯示sound card not found。然后也不知道是重啟了幾把還是改了asound的配置文件才顯示。所以對alsa驅(qū)動比較熟悉的大佬可以評論一下到底怎么回事。


至于上傳文件和視頻的話可以安裝一個FTP Server到云服務器,然后用FileZilla之類的客戶端上傳視頻文件。具體FTP服務器安裝可以參考:https://www.vultr.com/docs/install-an-ftp-server-with-proftpd-on-debian-or-ubuntu/#Prerequisites
最后要說一下的是因為我的服務器比較拉只有雙核所以就播放一個720p的視頻都能夠把cpu的占用率用到80-90%。所以需要高分辨率推流的話可能需要4-8核的處理器才行。2核的極限大概是在480p 24fps并且obs的畫布大小要和視頻分辨率一樣這樣推流的時候obs就不用再縮放分辨率。視頻轉(zhuǎn)碼的話可以用ffmpeg來轉(zhuǎn),比如要轉(zhuǎn)成852x480 24fps 的mp4視頻可以用下面的命令:
ffmpeg -i “輸入文件名” -vf scale=852:480 -r 24 “輸出文件名”.mp4
有事沒事也可以來聽聽我的lofi電臺:P