Twitch.tv を使ってストリーミング

提供: ArchWiki
ナビゲーションに移動 検索に移動

Twitch.tv は RTMP ベースの人気のストリーミングサービスの一つです。Steam には Linux クライアントがあるため、ゲームや Linux デスクトップをストリーミングする方法を探している人がいるかもしれません。このページではそのような方法のリストとして情報を提供しています。

Twitch ストリーミングガイドライン

Twitch.tv サポート より:

ビデオ要件

  • コーデック: H.264 (x264)
  • モード: Strict CBR
  • キーフレーム間隔: 2秒

オーディオ要件

  • コーデック: AAC-LC または MP3, ステレオまたはモノ音声
  • 最大ビットレート: 160 kbps (AAC), 128 kbps (MP3)
  • サンプリング周波数: any (AAC), 44.1 KHz (MP3)

他の要件

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 と入力。
    • 'minrate', 'maxrate', 'bufsize' の値は同じにしてください。

Ffmpeg の方法

以下の方法は FFmpeg パッケージを利用します:

.bashrc スクリプトを使う方法

FFmpeg を使って twitch にストリーミングする方法の一つとしてユーザーの ~/.bashrc ファイルにシンプルなスクリプトを記述する方法があります。このスクリプトはデスクトップと OpenGL エレメント両方のストリーミングをサポートしています。

ノート: インターネットのアップロード速度によっては、FFmpeg のパラメータを修正する必要があります。下のパラメータのリストを参照してください。

スクリプトを使う時はターミナルに次を入力します:

$ streaming streamkeyhere

スクリプトが実行している間、pavucontrol を使って音声ソースを編集します。 .bashrc スクリプトは以下のようになります:

 streaming() {
     INRES="1920x1080" # input resolution
     OUTRES="1920x1080" # output resolution
     FPS="15" # target FPS
     GOP="30" # i-frame interval, should be double of FPS, 
     GOPMIN="15" # min i-frame interval, should be equal to fps, 
     THREADS="2" # max 6
     CBR="1000k" # constant bitrate (should be between 1000k - 3000k)
     QUALITY="ultrafast"  # one of the many FFMPEG preset
     AUDIO_RATE="44100"
     STREAM_KEY="$1" # use the terminal command Streaming streamkeyhere to stream your video to twitch or justin
     SERVER="live-fra" # twitch server in frankfurt, see http://bashtech.net/twitch/ingest.php for list
     
     ffmpeg -f x11grab -s "$INRES" -r "$FPS" -i :0.0 -f alsa -i pulse -f flv -ac 2 -ar $AUDIO_RATE \
       -vcodec libx264 -g $GOP -keyint_min $GOPMIN -b:v $CBR -minrate $CBR -maxrate $CBR -pix_fmt yuv420p\
       -s $OUTRES -preset $QUALITY -tune film -acodec libmp3lame -threads $THREADS -strict normal \
       -bufsize $CBR "rtmp://$SERVER.twitch.tv/app/$STREAM_KEY"
 }
FFmpeg パラメータの説明
パラメータ 説明
ffmpeg コンバータ
-f x11grab -f は x11grab からの入力を強制
-s $INRES -s は $INRES 変数を使って特定の画像サイズを設定
-r $FPS -r は $FPS と同じ値にフレームレートを設定
-i :0.0 -i は入力を取得、この場合 x11 からスクリーン :0.0 を入力にする。調整可、例えば -i :0.0+500,100 なら画面位置 500/100
-b:v $CBR -b:v は動画のビットレートが可変になるように指定します。ビットレートの値は $CBR で設定されます
-ab 96k -ab は音声ビットレートを 96k に設定。-b:a という表記も可能
-f alsa alsa からの入力を強制
-ac 2 音声チャンネルを 2 に設定
-i pulse pulse からの入力を取得
-vcodec libx264 動画コーデックを libx264 に設定
-crf 23 ffmpeg の constant rate factor を 23 に設定
-preset "$QUAL" プリセットの圧縮品質と速度を設定
-s "1280x720" 画像のサイズを 720p に設定
-acodec libmp3lame 音声コーデックを libmp3lame を使うように設定
-ar 44100 音声レートを 44100 hz に設定
-threads 0 作成する cpu スレッドを設定、0 は cpu のコア数に基づいて自動的にスレッドを作成
-pix_fmt yuv420p ピクセルフォーマットを Y'UV420p に設定。デフォルトで使用される Y'UV444 は twitch が対応していない
-f flv "$URL" フォーマットを flv に強制して、twitch の RTMP url に出力