Twitch.tv を使ってストリーミング
ナビゲーションに移動
検索に移動
Twitch.tv は RTMP ベースの人気のストリーミングサービスの一つです。Steam には Linux クライアントがあるため、ゲームや Linux デスクトップをストリーミングする方法を探している人がいるかもしれません。このページではそのような方法のリストとして情報を提供しています。
Twitch ストリーミングガイドライン
Twitch.tv サポート より:
ビデオ要件
- コーデック: H.264 (x264)
- モード: Strict CBR
- キーフレーム間隔: 2秒
オーディオ要件
- コーデック: AAC-LC ステレオまたはモノ音声
- 最大ビットレート: 160 kbps
- サンプリング周波数: 任意
他の要件
Twitch のページで記載されていないものとして Y'UV420p ピクセルフォーマット の要件があります、Y'UV444 はあまりサポートされていません。
GUI の方法
- Open Broadcaster Software (obs-studio) は人気のあるストリーミングプログラムです。公式リポジトリからインストールできます。Linux 版のアルファビルドも利用することができます (obs-studio-gitAUR)
- castawesomeAUR は ffmpeg ストリーミングの Gtk3 フロントエンドで Twitch.tv のサポートが付いています。
- SimpleScreenRecorder (simplescreenrecorder) を使って twitch にストリーミングすることもできます。
- コンテナは FLV に設定してください。
- RTMP の URL を 'save as' フィールドに記入してください。
- 'separeate file per segment' のチェックが外れていることを確認してください。
- 動画のコーデックは libx264 に設定 (H.264 ではありません)。
- ビットレートは 2000 kbps などに設定。
- カスタムオプションフィールドに
preset=fast,minrate=2000,maxrate=2000,bufsize=2000,keyint=60
と入力。
CLI の方法
FFmpeg
次のソリューションでは、Twitch.tv へのストリーミングに FFmpeg を利用します。
.bashrc スクリプトを使う方法
FFmpeg を使用して Twitch.tv にストリーミングするために、デスクトップ要素と OpenGL 要素の両方のストリーミングをサポートします。このスクリプトは、シェル内で stream-to-twitch path/to/stream_key
を実行することで呼び出すことができます。キーは pass で安全に保存されています。スクリプトは次のとおりです。
/usr/local/sbin/stream-to-twitch
#!/usr/bin/env sh # # Stream screen and audio (speakers and microphone) to Twitch.tv using FFmpeg. # # Usage: stream-to-twitch path/to/key set -euo pipefail ####################################### # Stream to Twitch.tv. # Globals: # None. # Arguments: # Stream key. A string. # Returns: # None. ####################################### stream_to_twitch() { res_input="1920x1080" # input resolution res_output="1280x720" # output resolution fps="30" # target FPS gop="60" # i-frame interval, should be double of fps gop_min="30" # min i-frame interval, should be equal to fps probesize="42M" # https://stackoverflow.com/a/57904380 threads="2" # max 6 cbr="1000k" # constant bitrate (should be between 1000k–3000k) quality="ultrafast" # one of the many FFmpeg presets audio_input_speakers="0" # speakers' sink id audio_input_mic="default" # microphone's sink id audio_rate="44100" stream_server="live-prg" # see https://stream.twitch.tv/ingests for list stream_key="${1}" # key will be passed as an agument from the command line loglevel="warning" # supress unecessary information from printing ffmpeg \ -loglevel "${loglevel}" \ -f x11grab -s "${res_input}" -r ${fps} -probesize ${probesize} -i :0.0 \ -f pulse -i "${audio_input_speakers}" \ -f pulse -i "${audio_input_mic}" \ -filter_complex "[2]highpass=f=200,lowpass=f=3000[hl]; [1][hl]amix=inputs=2[a]" \ -map 0:v -map [a] \ -f flv -ac 2 -ar ${audio_rate} \ -vcodec libx264 -g ${gop} -keyint_min ${gop_min} -b:v ${cbr} \ -minrate ${cbr} -maxrate ${cbr} -pix_fmt yuv420p \ -s ${res_output} -preset "${quality}" -tune film -acodec aac \ -threads ${threads} -strict normal \ -bufsize ${cbr} \ "rtmp://${stream_server}.twitch.tv/app/${stream_key}" } # Get stream key securely stored with the password manager "pass" # and pass the key to the script to start the stream. stream_to_twitch "$(pass "${1}")"
パラメータ | 説明 |
---|---|
ffmpeg | コンバータ |
-loglevel "${LOGLEVEL}" |
ログレベルの出力を設定します |
-f x11grab |
x11grab からの入力を強制します |
-s $RES_INPUT |
変数 $RES_INPUT で指定された入力ソースから特定の画像サイズを設定します |
-r $FPS |
フレームレートを $FPS に等しい値に設定します |
-probesize "${PROBESIZE}" |
ストリーム情報を取得するために分析するデータのサイズを設定します |
-i :0.0 |
-i は入力を取得、この場合 x11 からスクリーン :0.0 を入力にする。調整可、例えば -i :0.0+500,100 なら画面位置 500/100 |
-f pulse |
PulseAudio からの入力を強制します |
-i "${AUDIO_INPUT_SPEAKERS}" |
スピーカーのシンク ID を選択します |
-i "${AUDIO_INPUT_MIC}" |
マイクのシンク ID を選択します |
-filter_complex ... |
マイクにフィルターを適用してノイズを軽減し、オーディオストリームをマージします |
-map 0:v |
マップビデオストリーム |
-map [a] |
オーディオストリームをマップします |
-f flv |
フォーマットを強制的に FLV にします |
-ac 2 |
オーディオチャンネルを 2 に設定します |
-ar "${AUDIO_RATE}" |
オーディオレートを設定します |
-vcodec libx264 |
ビデオコーデックを libx264 に設定します |
-b:v "$CBR" |
ビデオのビットレートを変更することを指定します。ビットレートの値は $CBR によって設定されます |
-pix_fmt yuv420p |
ピクセル形式を Y'UV420p に設定します。それ以外の場合は、デフォルトで Y'UV444 が使用され、Twitch と互換性がありません。 |
-s $RES_OUTPUT |
変数 $RES_OUTPUT で指定された出力用の特定の画像サイズを設定します |
-preset "{$QUALITY}" |
プリセットの圧縮品質と速度を設定します |
-acodec aac |
AAC を使用するようにオーディオコーデックを設定します |
-threads 0 |
開始する CPU スレッドを設定します。0 は CPU コアに基づいてスレッドを自動開始します。 |