Ustream配信用記述

一段落したので残しておく。
注意:配信中に同じPCで自分の配信を確認しようとすると「配信動画の音声がスピーカーに流れる」→「流れたきた音が配信される」のリフレインを起こします。タイムラグがあるとはいえ、気をつけないと音響関係に不具合をもたらす可能性がありますので配信の確認は別端末を使うなどしてください。
avconv -rtbufsize 100MB \
-f video4linux2 -s ${INRES} -r ${FPS} -i /dev/video0 \
-f pulse -i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -name Rhythmbox \
-f pulse -i alsa_input.pci-0000_00_1b.0.analog-stereo -filter_complex amix \
-sws_flags lanczos -pix_fmt yuv420p -maxrate 750k -bufsize 1500k -crf 23 \
-vcodec libx264 -preset fast -profile:v high -tune film \
-acodec libmp3lame -ar 44100 -ab 96k -ac 2 \
-threads 2 \
-vf drawtext=”fontfile=TakaoGothic.ttf:fontsize=20:fontcolor=white:shadowcolor=0x888888:box=1:boxcolor=444444@0.5:x=10:y=10:textfile=${GAME_TITLE}” \
-f flv “${RTMP_URL}/${STREAM_KEY} flashver=FME/3.0\20(compatible;\20FMSc\201.0)”
ざっくり解説。でも多分該当部分でけんさくするほうが詳細を拾えるかも。

  • -f video4linux2 -s ${INRES} -r ${FPS} -i /dev/video0 \
    ビデオ入力。解像度とフレームレートは別に定義しています。
  • -f pulse -i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor \
    オーディオ入力その1。オーディオ出力をそのまま入れてます。
    このあたり追加でデバイスなりソフトウェアなり指定する方法を使うとピンポイント出力も可能になるんでしょうけど、それは今後の検討課題。
  • -f pulse -i alsa_input.pci-0000_00_1b.0.analog-stereo -filter_complex amix \
    オーディオ入力その2、マイク端子です。普通にデフォルトでもいいでしょうけどあえて選んでいます。
    この2つのオーディオを最後のfilter_complexでまとめて1つに出力しています。
  • -sws_flags lanczos -pix_fmt yuv420p -maxrate 750k -bufsize 1500k -crf 23 \
    画像の入力フォーマット及びレート類の指定。このあたりは参考にさせていただいたところの受け売りのまま。
  • -vcodec libx264 -preset fast -profile:v high -tune film \
    出力ビデオ形式の指定。ここもほぼそのまま。
  • -acodec libmp3lame -ar 44100 -ab 96k -ac 2 \
    出力オーディオ形式の指定。なぜかAACが通らなかったのでmp3出力に。
  • -threads 1 \
    略。
  • -vf drawtext=”fontfile=TakaoGothic.ttf:fontsize=20:fontcolor=white:shadowcolor=0x888888:box=1:boxcolor=444444@0.5:x=10:y=10:textfile=${GAME_TITLE}” \
    プレイ中のゲームタイトルおよびBGGでのURLを表示。テキストファイルにデータ書いてそれを読み込む方式にしています。
    順にフォントファイル、サイズ、文字色、縁の色、背景の有無、背景色、表示位置、表示内容となります。
    なお、スクリプト側でスイッチ指定しやすいように変数定義にしています。
  • -f flv “${RTMP_URL}/${STREAM_KEY} flashver=FME/3.0\20(compatible;\20FMSc\201.0)”
    出力。触りようがないのでそのまま利用させていただきました。

一から作ったわけではないスクリプトではありますが、何かの参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください