Re: [心得] 個人實況伺服器與高畫質轉碼

看板Live (實況)作者 (CARD)時間2年前 (2022/04/03 21:18), 編輯推噓1(101)
留言2則, 1人參與, 2年前最新討論串3/3 (看更多)
來講一下現在的心得 由於已經有 2160P 的螢幕上市 所以目前跟以前很不一樣了吧 那麼我來分享我現在的 nginx rtmp 轉碼設置 至於以前的軟件與現在的軟件是否正常 取決於 Kernel 的版本,我也無法多談 那麼如果你碰到任何奇怪的問題 可以用以下方法嘗試解決啟動問題 nginx@transcoder:/usr/local/nginx/conf$ killall nginx nginx@transcoder:/usr/local/nginx/conf$ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 當然如果你想要用直播 key 來當關鍵字 那麼我也可以給一點資訊讓各位可以嘗試 以下程式碼可以將 rtmp://127.0.0.1/live_in/1080pCardLin 轉碼成 rtmp://127.0.0.1/live_out/720pCardLin 並且禁止其他 IP 來亂搞你的伺服器: allow publish 127.0.0.1; deny publish all; allow play 127.0.0.1; deny play all; exec_options on; exec_push /opt/ffmpeg/bin/ffmpeg -i "rtmp://127.0.0.1/live_in/$name" -vcodec libx264 -preset veryfast -x264opts "threads=6:opencl=0:opencl_device=0:partitions=all:aq-mode=2:trellis=2:deblock=-1,-1:rc-lookahead=10:scenecut=10:ref=1:b-adapt=2" -maxrate 2500k -bufsize 25000k -s 1280x720 -sws_flags lanczos -acodec copy -f flv "rtmp://127.0.0.1/live_out/720pCardLin" 2>>/usr/local/nginx/logs/ffmpeg-720p-$name.log name=1080pCardLin; 舉例到此結束,歡迎發問,有任何問題請直接在下方推文 感謝板 ※ 引述《a34021501 (CARD)》之銘言: : 標題: Re: [心得] 個人實況伺服器與高畫質轉碼 : 時間: Sun May 28 11:30:02 2017 : : 各位好 : : 有鑑於要達到類似YouTube的多編碼! : : 分享一下720p的轉碼設定值給大參考 : : 如果有興趣還可以做出給手機的360p : : 不過我覺得這真的要很小心謹地使用 : : 因為擁有個人影音播放伺服器可能會 ...被斷電(至少我前幾天停電週邊區域都沒停) : : 先不管那多了還是直接分享參數好了 : : 有鑑於rtmp-nginx-module已有說明! : : 所以我們直接分享最重要的關鍵參數 : : IP架構如下: : 192.168.2.22 主要直播伺服器對內IP : 192.168.2.33 次要直播伺服器對內IP : 192.168.2.111 個人直播影像處理機IP <- 總之就是用這個來直播給上面兩部 : : 我們先當作192.168.2.33不存在好了 : : 因為這有可能會侵犯其他公司的IP呢 : : 這是接收1080FullHD原始畫質的設定 : : 所以要設定以下的參數到你的OBS裡! : rtmp://192.168.2.22/live_in/CardLin : : 假設OBS出去的就是1080p不用再轉碼 : : 先來描述一下架構由接收伺服器轉碼 : : MoreServer : | : | : 111 --1080p--> 22 --720p,1080p--> 33 : | | : | | : UserGroup1 UserGroup2 : : -- nginx.conf -- 192.168.2.22 -- : : application live_in { : live on; : : allow play 127.0.0.1; : deny play all; : : allow publish 192.168.2.111; : deny publish all; : : drop_idle_publisher 10s; : : record off; : : # Transcode to 720p : exec_push /opt/ffmpeg/bin/ffmpeg -i "rtmp://127.0.0.1/live_in/$name live=1" -vcodec libx264 -preset veryfast -x264opts "threads=4:opencl=1:opencl_device=0:partitions=all:aq-mode=2:trellis=2:deblock=-1,-1:rc-lookahead=18:scenecut=18:ref=1:b-adapt=2" -maxrate 2300k -bufsize 23000k -s 1280x720 -sws_flags lanczos -acodec copy -f flv "rtmp://127.0.0.1/720p_live/$name live=1" 2>>/usr/local/nginx/logs/ffmpeg-$name-720p.log; : : # Transcode to 1080p : exec_push /opt/ffmpeg/bin/ffmpeg -i "rtmp://127.0.0.1/live_in/$name live=1" -vcodec copy -acodec copy -f flv "rtmp://127.0.0.1/1080p_live/$name live=1" 2>>/usr/local/nginx/logs/ffmpeg-$name-1080p.log; : : } : : : application 720p_live { : live on; : : allow publish 127.0.0.1; : allow publish 192.168.2.33; : deny publish all; : : record all; : record_path /path_to_shared_storage/720p; : recorder allin { : record all; : record_suffix 720p-%F-%H-%M-%S.flv; : } : : # Coop Server : exec_push /opt/ffmpeg/bin/ffmpeg -i "rtmp://127.0.0.1/720p_live/$name live=1" -vcodec copy -acodec copy -f flv "rtmp://192.168.2.33/720p_live/$name live=1" 2>>/usr/local/nginx/logs/ffmpeg-$name-720p-PushToCoop192.168.2.33.log; : : # Live Service : exec_push /opt/ffmpeg/bin/ffmpeg -i "rtmp://127.0.0.1/720p_live/$name live=1" -vcodec copy -acodec copy -f flv "rtmp://127.0.0.1/live_out/720p$name live=1" 2>>/usr/local/nginx/logs/ffmpeg-$name-720p-live_out.log; : : } : : application 1080p_live { : live on; : : allow publish 127.0.0.1; : allow publish 192.168.2.33; : deny publish all; : : record all; : record_path /path_to_shared_storage/1080p; : recorder allin { : record all; : record_suffix 1080p-%F-%H-%M-%S.flv; : } : : # Coop Server : exec_push /opt/ffmpeg/bin/ffmpeg -i "rtmp://127.0.0.1/1080p_live/$name live=1" -vcodec copy -acodec copy -f flv "rtmp://192.168.2.33/1080p_live/$name live=1" 2>>/usr/local/nginx/logs/ffmpeg-$name-1080p-PushToCoop192.168.2.33.log; : : # Live Service : exec_push /opt/ffmpeg/bin/ffmpeg -i "rtmp://127.0.0.1/1080p_live/$name live=1" -vcodec copy -acodec copy -f flv "rtmp://127.0.0.1/live_out/1080p$name live=1" 2>>/usr/local/nginx/logs/ffmpeg-$name-1080p-live_out.log; : : } : : application live_out { : live on; : : allow publish 127.0.0.1; : deny publish all; : : record off; : : # Turn On optional exec : exec_options on; : : # Condition: name=720pCardLin : exec_push /opt/ffmpeg/bin/ffmpeg -i "rtmp://127.0.0.1/live_out/$name live=1" -vcodec copy -acodec copy -f flv "rtmp://live-tpe.twitch.tv/app/************************ live=1" 2>>/usr/local/nginx/logs/ffmpeg-$name-PushToTwitch.log name=720pCardLin; : : # Condition: name=1080pCardLin : exec_push /opt/ffmpeg/bin/ffmpeg -i "rtmp://127.0.0.1/live_out/$name live=1" -vcodec copy -acodec copy -f flv "rtmp://a.rtmp.youtube.com/live2/************************ live=1" 2>>/usr/local/nginx/logs/ffmpeg-$name-PushToYouTube.log name=1080pCardLin; : : } : : -------------------------------- : : 值得注意的是ffmpeg一定要絕對路徑 : : 當然有人會將720p推送到Twitch網站 : : 當然也可將1080p推送到YouTube網站 : : 值得一提的是如果OBS選用GPU編碼器 : : 可以設置到50Mbps傳輸給直播伺服器 : : 讓直播伺服器壓縮到10Mbps以下輸出 : : 謝謝大家 : : ※ 引述《a34021501 (CARD)》之銘言: : : 標題: [心得] 個人實況伺服器與高畫質轉碼 : : 時間: Tue Mar 21 04:24:56 2017 : : : : 各位好,小弟的電腦又被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音質會較好! : : : : -- : : ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.252.34 : : ※ 文章網址: https://www.ptt.cc/bbs/Live/M.1490041511.A.C4D.html : : 跟大家開個玩笑,所以修改了內容,其實我只是在比擬通訊兵責任較輕,翻譯官要負責! : : ※ 編輯: a34021501 (1.164.252.34), 03/21/2017 04:42:55 : : 推 wyiwyi: 推一下 03/21 06:50 : : → a34021501: http://times.hinet.net/times/news/20080824 今天新聞 03/21 19:52 : : → a34021501: 有提到git之內容可能下載到不當的內容,所以台灣的電信 03/21 19:53 : : → a34021501: 業者針對http提供TranspartentProxy可有效防範下載失敗 03/21 19:55 : : → a34021501: http://i.imgur.com/fo6uLQv.jpg
我的Google對TP的見解 03/21 20:01 : : ※ 編輯: a34021501 (1.164.252.34), 03/21/2017 21:33:45 : : : : 來講一下壓縮參數好了,不過我不是開發人員,我所知道的都是我在網路上搜尋到的結果 : : : : 首先講一下壓縮時的 I P B 三種 frame!! 在時間的流逝就像 IBBPBBPBBIBBPBBPBBI.... : : : : 講白了 I 最重要! P 次要! B 普通! 說普通就是因為如果 B 的品質差畫面也會很差 : : : : 所以重點是 I frame 已經固定了,反正我也不知道以後的 x264 如何定義 I frame間距 : : : : 不過那不重要,重要的是 P frame 是由 I frame 搭配一些參數計算而成的預測未來畫面 : : : : 我要說未來是因為那個未來是 I 的未來,但 P 其實是要與真實的未壓縮影像匹配算參數 : : : : 總而言之在你看到 IPB 這三種 frame 出現在你的螢幕上的時候,代表那是以前發生的事 : : : : 好了,現在來提一提 B frame 其實可以定義 bframe=0 關掉所有 B 就是只有 IP 這兩種 : : : : 總之建議你不要設定 bframe=0 因為我加了 b-adapt=2 就是 Adaptive BFrame decision : : : : 再來就是我最喜歡的 trellis2 讓影像壓縮使用全模式的 decision 使整個壓縮效率增加 : : : : 然後再來是我覺得應該這些參數都應該預設開啟可是不知道為什麼沒有開可能我沒很懂吧 : : : : 先來說說 weightp 好了,因為 B 通常夾在兩個 P 中間,所以 B 是由 P 經過向量計算! : : : : 我還是沒講 weightp 因為我真的不太懂,不過看手冊的意思大概是有些P重要有些不重要 : : : : 所以就以這 weight 比重來計算出要用哪個 P 參考較多,哪個 P 參考較少,畫質會變好 : : : : 反正 I 還是最重要,畢竟 P 是由 I 計算而成,所以 me 與 subme 有很多種模式可以調 : : : : 但我建議還是保留預設值,因為通常調高之後但腦會無法負荷而無法正常實況例如沒畫面 : : : : 至於 aq-mode 似乎是用於評估上面這些參數及壓縮後的影像是否滿足我們設定的 qp=25 : : : : 總之 aq-mode = 2 是我玩一些明亮遊戲時用的參數, aq-mode = 3 是我玩恐怖遊戲所用 : : : : 畢竟 aq-mode = 3 有考慮黑暗場景,所以我還是設成 aq-mode = 2 好了壓縮率應該較高 : : : : 至於 weightp 我還是覺得怪怪的所以我先設為 veryfast preset 的預設參數即不複製圖 : : : : 畢竟經過了一段時間,這張圖像如果還一樣我覺得真的要考慮是否有畫面定格的情況發生 : : : : 以上是我個人的理解,並且我其實不明白 x264 與 ffmpeg 的搭配與組合似乎有點很複雜 : : : : 我的意思是說 ffmpeg 有很多種不同版本,而且還附上不同的 resize 程式碼讓我好難選 : : : : 因為我從 3840x2160 解析度降到 1920x1080 的之後還要再降到 1280x720 字體有點模糊 : : : : 我可能還要再花點時間查詢一下是否有包含增強邊緣的 Edge Detection Resize Method! : : : : 總之這樣應該可以非常低流量又可以有很清晰的字體,變更解析度似乎是 ffmpeg 的責任 : : : : 等我研究出來再跟大家分享,今天先分享到這了!感謝大家的支持!記得用 qp 調整畫質 : : : : qp 數值越低越接近原始圖片,但我覺得如果原始圖片很糟糕就讓 qp 增加也沒甚麼感覺! : : ※ 編輯: a34021501 (1.164.252.34), 03/22/2017 03:18:24 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.32.195 : ※ 文章網址: https://www.ptt.cc/bbs/Live/M.1495942204.A.996.html : : 感謝來信詢問有關RTMP傳輸中斷的情況,目前我是用OBS Classic 0.659b : : 我最近也有遭遇的相同的情況,以下是我的實況主機詳細編譯參數及流程 : : ~$ su : Password: : : # cd /opt : # mkdir src : # cd /opt/src : : /opt/src# wget : ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20170320-2245.tar.bz2 : /opt/src# tar -xvjf x264-snapshot-20170320-2245.tar.bz2 : /opt/src# cd x264-snapshot-20170320-2245 : /opt/src/x264-snapshot-20170320-2245# ./configure --enable-static --enable-shared --enable-lto --enable-strip --enable-pic : /opt/src/x264-snapshot-20170320-2245# make : /opt/src/x264-snapshot-20170320-2245# make install : : /opt/src# wget http://ffmpeg.org/releases/ffmpeg-3.2.4.tar.gz : /opt/src# tar -xzf ffmpeg-3.2.4.tar.gz : /opt/src# cd ffmpeg-3.2.4 : /opt/src/ffmpeg-3.2.4# ./configure --prefix=/opt/ffmpeg-3.2.4 --enable-gpl --enable-libx264 --enable-pic --enable-hardcoded-tables -enable-memalign-hack --enable-memory-poisoning : /opt/src/ffmpeg-3.2.4# make : /opt/src/ffmpeg-3.2.4# make install : /opt/src/ffmpeg-3.2.4# ln -s /opt/ffmpeg-3.2.4 /opt/ffmpeg : : 基本上這樣的參數在使用exec_push的時候應該就不會出現buf異常的情況 : : 基本上這樣的設置在 debian 8.3.0 內建的 gcc4.9.2 還算穩定且效率高 : ※ 編輯: a34021501 (1.171.20.188), 05/30/2017 16:58:47 : → a34021501: 這次參數拿掉qp=25, 因為新版預設的qp已完美地最佳化! 05/30 17:12 : → a34021501: 有人來信提問static與shared的差異,執行static執行檔 05/30 19:46 : → a34021501: 時不需要libx264.so的函式庫,可以避免libx264被換掉.. 05/30 19:47 : → a34021501: 但shared的好處是更新x264的版本後不用重新編譯ffmpeg 05/30 19:49 : → a34021501: 只要執行ldconfig就能更新系統預設路徑下的函式庫清單 05/30 19:50 : → a34021501: 而使用ldd /opt/ffmpeg/bin/ffmpeg可檢查執行檔的清單 05/30 19:51 : → a34021501: 如果擔憂系統被惡搞,可以用ldconfig -p檢查所有函式庫 05/30 19:52 : 更新合作伺服器直播參數,因為有 RTMP bug 所以通通使用 exec_push 避免發生傳輸異常 : 另外值得注意的是可用直播時所選用的參數名稱決定是否要推送影音串流至更多的伺服器~ : 如此一來這樣的設定還可分隔內部的 np_live 轉檔與儲存系統以及外部的 live_out 服務 : 遭受外部網路攻擊 live_out 時,內部的 np_live 不至於被立即癱瘓而失去影音串流存檔 : ※ 編輯: a34021501 (1.171.20.188), 05/31/2017 10:48:16 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.136.68.20 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Live/M.1648991925.A.DDA.html

04/03 21:29, 2年前 , 1F
我都用顯卡或內顯得GPU Encoder打80Mbps到我的轉碼伺服器
04/03 21:29, 1F

04/03 21:31, 2年前 , 2F
的 (typo)
04/03 21:31, 2F
文章代碼(AID): #1YIPwrtQ (Live)
文章代碼(AID): #1YIPwrtQ (Live)