TechLion Vol.9でUstream.tv中継をしてきた

Posted by nogajun - 2012/10/05

_

Tech LionのUstream.tv中継をしてきました。 イベント自体についてはレポートが出ているのでこれを見ていただくとして、中継について書いてみたいと思います。

まず中継機材ですが、会場の音をPAミキサーからもらってUstreamに流すのでサウンドキャプチャ用にUSBサウンドカードが入ってますが、それ以外はシンプルな感じで特に変わったしかけはありません。

  • ノートPC: hp 2230s/CT (ubuntu 12.04)
  • HDMIキャプチャユニット: MonsterX Live
  • ビデオカメラ: ビクター GZ-E225
  • USBサウンドカード: Behringer UCA202 (会場PAミキサーキャプチャ用)

中継回線は、会場で有線の回線が使えなかったのでWiMaxを利用しました。WiMaxも地下のライブハウスで電波状況が難しい状態だったのですが、なんとか持ちこたえてくれました。

ノートPCのOSはDebianではなくUbuntu 12.04です。 Ubuntuを使った理由は弟にノートPCを貸していたので入っていた、という以外は特になくDebianでも問題なく使えます。

配信方法ですがlibav(ffmpegからフォークしたプロジェクト。Debian/Ubuntuでは現在こちらが使われている)を使った方法で配信しました。 (以前書いた「IEEE1394カメラとたった一行でUstream.tv高画質配信できた」と同じ方法です。)

基本的にはavconvの一行だけですが、avconvはオプションも多くその場で入力は難しいので、事前にシェルスクリプトにして、それを実行する形にしてあります。

#!/bin/bash

RTMP_URL="(RTMP URLをここに書く)"
STREAM_KEY="(ストリームキーをここに書く)"

FPS="15" # フレームレート

INRES="720x480" # 入力解像度
OUTRES="720x480" # 出力解像度

avconv -rtbufsize 10MB \
 -f video4linux2 -s ${INRES} -r ${FPS} -i /dev/video0 \
 -f alsa -i default \
 -sws_flags lanczos -pix_fmt yuv420p -maxrate 750k -bufsize 1500k -crf 23 \
 -vcodec libx264 -preset fast -profile:v high -tune film \
 -acodec libfaac -ar 44100 -ab 96k -ac 2 \
 -threads 1 \
 -f flv "${RTMP_URL}/${STREAM_KEY} flashver=FME/3.0\20(compatible;\20FMSc/1.0)"

MonsterX LiveはUSB Video Classとして見えるのでvideo4linux2で扱えます。 音声についてですがPulse Audioを使っているので、ALSAのdefaultにはPulse Audioの出力が流れています。ですので、defaultを指定しておいてpavucontrolを使ってUSBサウンドカードの音を選択して出力すれば、シェルスクリプトを変更することなく音声の入力元を変更できます。

その他のオプションについてですが、ThreadはCPUをフルに使われると困るので使用CPUコアを明示的に1にしています。ビットレートについてはWiMaxの回線テストで1.1Mbpsほどだったので映像と音声を合わせて850kくらいでいいかなと思って750kにしてみました。

感想など

音声はクリアに出てたらしいのですが、映像がカクカクしてたのは、WiMaxのせいなのかavconvのせいなのかMonsterX Liveのせいなのか、よくわかりません。分かる人がいたら教えてください。 地下でWiMaxのせいの気がするけど、音声が途切れなかったのでMonsterX Liveかなぁ。

MonsterX LiveはLinuxだと480pしか使えなくて本当に使いものにならないし、GPLのソースは公開していないし、最悪のゴミだと思います。SKnetは最低。