個人實況伺服器與高畫質轉碼 - 實況

Sandy avatar
By Sandy
at 2017-03-21T04:24

Table of Contents

各位好,小弟的電腦又被GANK了!

所以來分享一下之前實況的參數!

希望大家可以提升畫質增加母數!

畢竟似乎只有一些高畫質被GANK!

需要一台空閒不使用的前遊戲機!

幾乎只有顯示卡加速轉碼畫質好!

簡單解釋一下: CPU CPU CPU CPU v.s. GPU GPU GPU GPU GPU GPU
(通常匹配記憶體顆粒的數量)
BUT..GPU裡面有至少數百個CPU

以我的前顯卡Bart為例共960個CPU

而CPU基本上越多核心越適合~轉檔

硬碟容量就看要不要自己錄影留存

接下來將一步一步安裝實況轉檔機


1.安裝Linux系統
我是使用Debain8.3.0共13張DVD全部拔縣斷網安裝

如果你不在意網路上自動更新伺服器可以連網安裝

總之一定要斷網安裝後修改/etc/apt/source.list

將裡13張ISO檔之路徑資料夾放進source.list裡面

deb file:/opt/repo/debian-8.3.0-amd64-DVD-1 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-2 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-3 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-4 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-5 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-6 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-7 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-8 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-9 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-10 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-11 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-12 jessie main contrib
deb file:/opt/repo/debian-8.3.0-amd64-DVD-13 jessie main contrib

當然要先把每張ISO光碟之內容物複製進指定資料夾

之後要執行 # apt-get update 指令掃描整個清單

我的意思是若沒改清單,預設會連上網掃描雲端更新 (有中毒風險)

建議大家裝完系統後執行 apt-get install build-essential 即可安裝基本的編譯器


2.安裝 nginx 與 nginx-rtmp-module (即實況轉播伺服器的rtmp通訊兵)

nginx
http://nginx.org/
http://nginx.org/download/

nginx-rtmp-module
http://github.com/arut/nginx-rtmp-module

這部分是最麻煩的,若碰到系統缺少lbrary時會錯誤 (*1.電腦也要查一下圖書館)

總之缺少library的時候使用 apt-cache search [******] 即可找到相關的圖書館

若找到 ******-dev 就是代表這是一個用於建構你的程式碼所需要的圖書建議安裝

舉個例子我常常編譯 nginx 時會出現 libssl 的錯誤 ,我會先輸入指令試著搜尋

apt-cache search libssl 通常會跳出 libssl-dev 這個圖書可以供我安裝解問題

即 apt-get install libssl-dev 即可以安裝 libssl-dev 然後讓我的編譯器閉嘴

我好像忘了說編譯 nginx with rtmp module 的指令,我覺得我提供的網站更詳細

不過我還是說一下,在 nginx 的原始碼資料夾下輸入以下指令並加入 rtmp-module

不過還是先看一下清單選擇一下 nginx-rtmp-module 目前推薦的 nginx 版本較好

# mkdir -p /opt/src

# cd /opt/src

/opt/src# wget http://nginx.org/download/nginx-1.11.5.tar.gz

/opt/src# tar -xzf nginx-1.11.5.tar.gz

/opt/src# wget http://github.com/arut/nginx-rtmp-module/archive/master.zip

/opt/src# unzip master.zip

/opt/src# cd nginx-1.11.5/

/opt/src/nginx-1.11.5# ./configure --add-module=/opt/src/nginx-rtmp-module-master

/opt/src/nginx-1.11.5# make

/opt/src/nginx-1.11.5# make install

如果以上安裝流程出現任何問題可以在下方推文發問,我會盡可能回答大家的問題

接下來就可以到 /usr/local/nginx/conf/nginx.conf 修改設定檔,請參考網頁吧

如果想要有不錯的連線與流量顯示頁面可以參考 rtmp-module 中 stat.xsl之用法


3. 安裝 libx264 與 ffmpeg (即實況轉碼伺服器的h264翻譯官)

x264 (含lib)
http://www.videolan.org/developers/x264.html

ffmpeg
http://ffmpeg.org/

總之先下載最新版的程式碼,因為通常x264都是經常在更新保持最佳編碼效率與效能兼顧

當然ffmpeg也很重要因為有時候會編碼失敗通通都是ffmpeg的錯!除非你的電腦有穩題!

這次我就不提供詳細的解決方案了,我只提供下載路徑與編譯的方式還有最後要如何用!

/opt/src# wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2

/opt/src# tar -xvjf last_x264.tar.bz2

/opt/src# wget http://ffmpeg.org/releases/ffmpeg-3.2.4.tar.bz2

/opt/src# tar -xvjf ffmpeg-3.2.4.tar.bz2

一定有人問為什麼解壓縮的參數不同,因為我也不知道為何tar能解壓縮其實還蠻神奇的

總之tar與bz2的關係就像ffmpeg與x264的關係,如果有閒可以去下載tar與bz2的原始碼!

/opt/src# cd x264-snapshot-20170319-2245/ (*時間流逝可能讓路徑不同請自行修正)

/opt/src/x264-snapshot-20170319-2245# cd ..

為了確保下載到今天的最新版本的 x264 所以我要選擇使用另一個方法下載 x264 好嗎?

/opt/src# git clone http://git.videolan.org/git/x264.git

/opt/src# cd x264

/opt/src/x264# ./configure --enable-static --enable-shared --enable-lto --enable-strip --enable-pic

/opt/src/x264# make

/opt/src/x264# make install

說明一下static library與shared library的不同好了,就差在.a是塞進執行檔.so放系統

不過通常我都是用 $LD_LIBRARY_PATH 指定要用哪個版本的.so,還可以排PATH的優先順序

不過一般人如果要將自己的 lib/*.so 列入清單,只要在 /etc/ld.so.conf.d/ 加lib路徑

然後執行 ldconfig 就可以更新,而且 /etc/profile.d/ 可以放登入時要執行的系統參數

例如置換 $PATH 與 $LD_LIBRARY_PATH 可以用 export PATH=myPATH:$PATH 讓myPATH優先

好了廢話講太多了,不過還可以加在個人的 ~/.bashrc 或 ~/.profile 等相關方式設定之

接下來我們要安裝ffmpeg並引入libx264的函式庫(圖書館)讓ffmpeg可以使用x264壓縮編碼

/opt/src/x264# cd ../ffmpeg-3.2.4/

/opt/src/ffmpeg-3.2.4# ./configure --enable-gpl --enable-libx264 --enable-pic --enable-hardcoded-tables -enable-memalign-hack --enable-memory-poisoning

(不理新版x264) --extra-ldflags=-static

(編不過的參數) --enable-lto

/opt/src/ffmpeg-3.2.4# make

/opt/src/ffmpeg-3.2.4# make install

基本上就會置換你系統中的 ffmpeg 讓它可以用最新版的 libx264 並高畫質壓縮你的實況

------------------------------------------------------------------------------
以下這三行給有需要很多版本的勇者: (這樣就可以把x264直接塞進ffmpeg避免被換掉)
/opt/src/ffmpeg-3.2.4# ./configure --help
/opt/src/ffmpeg-3.2.4# ./configure --prefix=/opt/ffmpeg-3.2.4_with_current_x264ver#.# --enable-gpl --enable-libx264 --enable-pic --enable-thumb --enable-lto --enable-hardcoded-tables --disable-safe-bitstream-reader --enable-memalign-hack --enable-memory-poisoning --extra-ldflags=-static
/opt# ln -s ffmpeg-3.2.4/ ffmpeg
其中--enable-lto舊版gcc應該可以編得過, --enable-thumb好像是ARM的指令及加速160%
------------------------------------------------------------------------------

4.轉媽參數設定: (我直接分享我的YouTube與Twitch參數囉)

在分享我的參數之前,請您先使用 ldd ffmpeg 檢視圖書館中 libx264 路徑是否正確無誤

-twitch_720p.sh---------------------------------------------------------------
!#/bin/sh
ffmpeg -i rtmp://127.0.0.1/live_in/CardLin -vcodec libx264 -preset veryfast -x264opts "qp=25:keyint=100:min-keyint=100:threads=4:opencl=1:opencl_device=0:partitions=all:aq-mode=2:trellis=2:deblock=-1,-1:rc-lookahead=25:scenecut=25:ref=1:b-adapt=2" -maxrate 2300k -bufsize 23000k -s 1280x720 -r 50 -force_fps -sws_flags lanczos -acodec copy -f flv rtmp://127.0.0.1/twitch_live_out/CardLin -rtmp_buffer 30000 -rtmp_live live
------------------------------------------------------------------------------

-youtube_1080p.sh-------------------------------------------------------------
!#/bin/sh
ffmpeg -i rtmp://127.0.0.1/live_in/CardLin -vcodec libx264 -preset veryfast -x264opts "qp=25:keyint=100:min-keyint=100:threads=8:opencl=1:opencl_device=0:partitions=all:aq-mode=2:trellis=2:deblock=-1,-1:rc-lookahead=25:scenecut=25:ref=1:b-adapt=2" -maxrate 8000k -bufsize 80000k -s 1920x1080 -r 50 -force_fps -acodec copy -f flv rtmp://127.0.0.1/youtube_live_out/CardLin -rtmp_buffer 30000 -rtmp_live live
------------------------------------------------------------------------------

分析一下:這兩個是畫質還不錯的低碼率動態碼率參數!以下是你有可能會更改的數據!
threads=8 //執行序數量,建議最多為實體核心數*1.5
opencl=1 //是否開啟OpenCL加速,建議一定要開啟
opencl_device=0 //設定OpenCL裝置編號 (多張GPU才有效)
keyint, min-keyint = 100 //FPS等級的keyframe_interval, 建議2秒即
r 50 //FPS設定成50
s 1920x1080 //畫面寬長大小
sws_flags lanczos //使用lanczos的方法降低解析度

好啦,今天就分享到這邊了,聰明的你應該有發現127.0.0.1可以改成其他電腦的IP位址

如果你有多部舊電腦的話就可以用全部的電腦效能一起做出和大型網站一樣多種解析度!

再提供兩個指令給大家自己查詢要如何使用ffmpeg與如何搭配libx264的"..."內設定值!

$ ffmpeg --help full

$ x264 --fullhelp

總結就是我會把我的OBS的rtmp網址設為實況伺服器,然後輸出25Mbps以上的高畫質!

然後再到我的實況伺服器或其他的子伺服器輸入指令以轉碼並輸出到不同的實況網站中!

可以在 nginx 設置 push 到實況網站,當然你要 push 到另一個實況伺服器當分流也可~

所以基本上大家可以參考一下轉出來的流量有多寬再決定要投放到哪個區域的實況網站!

補充一下OBS的設定好了,可以用"使用裝置時間戳記"的320kbps,44100hz音質會較好!

--
Tags: 實況

All Comments

Jack avatar
By Jack
at 2017-03-25T23:37
推一下
Olivia avatar
By Olivia
at 2017-03-28T16:43
http://times.hinet.net/times/news/20080824 今天新聞
Zora avatar
By Zora
at 2017-03-31T02:01
有提到git之內容可能下載到不當的內容,所以台灣的電信
Valerie avatar
By Valerie
at 2017-04-04T05:31
業者針對http提供TranspartentProxy可有效防範下載失敗
Oscar avatar
By Oscar
at 2017-04-05T17:25
http://i.imgur.com/fo6uLQv.jpg 我的Google對TP的見解

廚爹 爐石戰記

Elizabeth avatar
By Elizabeth
at 2017-03-20T23:58
直播主帳號:Tukuyomi 國家語系:中文 今天要播什麼:爐石、英霸 點我連結:https://www.twitch.tv/tukuyomi 想跟觀眾說:今天隨便玩 也沒特定只玩這2款遊戲 - ...

仙劍奇俠傳四 陳州

Edith avatar
By Edith
at 2017-03-20T23:08
直播主帳號:xuan85116 國家語系:中文 今天要播什麼:PC 仙劍奇俠傳四 點我連結:https://www.twitch.tv/xuan85116 想跟觀眾說: 目前進度到陳州 準備觸發劇情 以下是小弟的粉絲團跟Youtube頻道 https://www.facebook.com/MrL ...

[索爾台] 炎龍騎士團1 經典遊戲~~

Isabella avatar
By Isabella
at 2017-03-20T20:30
直播主帳號:acq0422 國家語系:中文 今天要播什麼:炎龍騎士團1 點我連結:https://www.twitch.tv/acq0422 想跟觀眾說:炎龍騎士團1 day3 第十四章開始 走路線二 紅藍武聖都入手了 就剩 ...

【F.H】Gwent昆特牌:爬分、聊天、已開獎

Ula avatar
By Ula
at 2017-03-20T20:28
直播主帳號:FH_Molissa 國家語系:中文 今天要播什麼:Gwent: the witcher card game 點我連結:https://www.twitch.tv/fh_molissa https://www.youtube.com/channel/UCq5LQH-bD0Q3ZRhlclBA ...

FW Zonda -OW

Susan avatar
By Susan
at 2017-03-20T20:06
直播主帳號:FW Zonda 國家語系:中文 今天要播什麼:OW 點我連結:https://www.twitch.tv/zondalol 想跟觀眾說:咱們的美女開台啦 大家火速圍觀 - ...