2012年9月2日星期日

讓 Linux 進行桌面現場廣播

以往透過電腦進行廣播,都是使用 FME (Flash Media Encoding) 進行
問題是,FME 只能安裝在 Windows 及 Mac
雖然 Linux 有替代品 - WebcamStudio,但正如其名,WebcamStudio 是使用 Webcam 進行廣播
在本篇文章並不適合

假如打算在 justin.tv 進行桌面現場廣播
首先前往 justin.tv ,然後登入自己的帳戶
http://www.justin.tv/broadcast/adv_other 此頁面

頁面中有一個寫著「Show」的按鈕
按下按鈕會出現一個 Stream Key 的字串資料
將 Stream Key 複製於以下 Shell Script 並取代 <paste-your-stream-key-at-here> 的字串
#!/bin/sh

STREAM_KEY=<paste-your-stream-key-at-here>
#STREAM_KEY="$1"
URL="rtmp://live.justin.tv/app/$STREAM_KEY"

ffmpeg -f x11grab -s 1920x1080 -r 30 -i :0.0 -ab 128k \
-f alsa -ac 2 -i pulse -vcodec libx264 -crf 30 -preset fast -s 1280x720 \
-acodec libmp3lame -ar 44100 -threads 0 -f flv \
"$URL"

注意:
選項的次序不能亂


第一行
-f x11grab 強制設定格式為 x11 即 Desktop 的檔案 (因為 Linux 中任何裝置都是以檔案處理)
編譯時需指定 --enable-x11grab 才能使用,在 apt-get 或 yum 的安裝情況下預設為啟用
-s 1920x1080 設定攝取畫面像素面積,更改為設定合適面積,預設為 160x128
-r 30 設定攝取畫面的 FPS 一般以 PAL 為 25 , NTSC 為 29.97 ,預設為 25
-i :0.0+0,0 攝取的檔案,:0.0 即是 x11 +0,0 即是偏移量,+0,0 為桌面左上角
-ab 128k 為輸出音質,以 bps 為單位,可附加有效倍數單位如 k 為 1000

第二行
-f alsa 強制設定格式為 Advanced Linux Sound Architecture
編譯時需指定 --enable-alsa 才能使用,在 apt-get 或 yum 的安裝情況下預設為啟用
-ac 2 設定聲音通道數量
-i pulse 設定輸入檔案為 PulseAudio
編譯時需指定 --enable-pulse 才能使用,在 apt-get 或 yum 的安裝情況下預設為啟用
-vcodec libx264 設定輸出影片編碼格式為使用 x264 函式庫
編譯時需指定 --enable-libx264 才能使用,在 apt-get 或 yum 的安裝情況下預設為啟用
-crf 30 固定品質參數範例 (作用不明)
-preset fast 展示方式以快速為優先性
-s 1280x720 設定攝取畫面像素面積

第三行
-acodec libmp3lame 設定輸出聲音編碼格式為使用 mp3lame 函式庫
編譯時需指定 --enable-libmp3lame 才能使用,在 apt-get 或 yum 的安裝情況下預設為啟用
-ar 設定聲音 Hz 值為 44100
-threads 0 自動檢查和選擇適合的執行緒數量來壓縮影片
-f flv 強制設定格式為 flv (Flash Video)

最後輸出以 rtmp 於指定 Stream Key 的播放器上

然後安裝 FFmpeg 及 libavcodec-extra
使用 Debian 系列的 Linux 發行版可以使用
sudo apt-get install ffmpeg libavcodec-extra-*
使用 RedHat 系列的 Linux 發行版可以使用
yum install ffmpeg libavcodec-extra-*
由於 libavcodec-extra 可能會因時間而升級,以本篇文章編寫的版本為 libavcodec-extra-53

安裝 FFmpeg 及 libavcodec-extra 後
可以執行以上 script 進行最基本的桌面現場廣播
可以的話,將下 script 另存成一個 sh file 便可以透過執行方法運作,而無需經常編寫這麼長的指令



另外 FFmpeg 不會自動辨認聲音輸入裝置
可以安裝 PulseAudio Volumn Control 來協助調整各種聲音裝置
Debian 系列可以透過以下指令安裝
sudo apt-get install pavucontrol
RedHat 系列可以透過以下指令安裝
yum install pavucontrol

執行 PulseAudio Volumn Control
在 Record 中選擇合適的攝取裝置,如在下使用「Build-in Audio 類比立體聲」


在 Input Devices 先在底部選擇 All Input Devices
然後調整需要使用的裝置的音量;其他裝置若果不使用可以,設定為靜音


由於進行桌面現場廣播,亦需要設定主音量裝置
到「系統」>「偏好設定」>「聲音」
若果桌面的版面上有「聲音」的 icon 可以右鍵點選「聲音偏好設定」即可

在輸入,同樣選擇合適的輸入裝置


在輸出,同樣選擇合適的輸出裝置,如在下同樣使用「Build-in Audio 類比立體聲」


完成後,執行 Shell Script,並前往自己的網上直播網站,測試是否正常播放

注意事項:
使用 Stream Key 並不會參與使用者認證
即是,任何人只要擁有 Stream Key 就可以直接於對應帳戶進行桌面現場廣播
因此 Stream Key 不應讓使用者自己以外的人所擁有,若不慎被其他人盜取,應立切換 Stream Key


另外只要將輸出的 Stream Key 改成檔案名,便可以成功進行 Desktop Screen Video Capture
非常簡單方便

沒有留言 :

發佈留言