デスクトップ配信補助ツール

  • Linux環境でデスクトップ配信を行う場合、多くはffmpeg/libavを利用します
  • しかしこれは非常にオプションが多く、設定が面倒です
  • これは対話的に配信のための設定をしたシェルスクリプトを作るスクリプトです
  • 単にキャプチャして保存するだけも可能です。

必要な環境

必須

  • Linux(UbuntuとArch Linuxにて動作確認)
  • ffmpegまたはlibav
  • Python(残念ながら2系)

あると便利かも

  • Webcam Studio http://www.ws4gl.org/ (デスクトップ配信に)
  • Webcam(未検証)
  • libvo_aacencまたはlibfaac(ない場合はlibmp3lameが選択されます)
  • 配信サイトのアカウント(CaveTubeで動作確認)

使い方

  • 端末上でpython descast.pyを実行してください(Python2とPython3が混在しているときはpython2 descst.py)
  • あとは質問に答えていけば勝手に配信(または録画)のスクリプトができあがります
  • できたスクリプトを./dekita.shすれば実行できます。
  • 再生中の音を録音する場合、必ずPulseaudio音量調節で入力装置のタブに行き All input DevicesにしてMonitor ofから始まるデバイスを有効にしてください
  • じゃないと録音できません。

機能

入力ソース(動画)の選択

  • 直接Xを補足するx11grabとWebcamStudio等を使う場合の/dev/video
  • /dev/videoが複数ある場合はそれも選択可能ですが、未検証です。
  • /dev/videoを利用する場合はwebcamを使っての配信も可能です。
  • カメラの利用は未検証です。

入力ソース(音声)の選択

  • alsaを利用するもの(再生中の音)
  • hwで指定するもの(入力のあるカードを直接指定)
  • Linuxのサウンド周りは厄介なためOSS、Jack等は今のところ無視する予定です。
  • ffmpegやavconv単体では複数の音声をソースにとってまとめてエンコードはできないようです。

出力

  • 配信を前提とするため動画はH264、音声はaacを利用することにしています。
  • Justin.tv等でOgg/Theoraが使えるのかが不明ですが、可能ならば対応します。

ビデオの形式

  • フレームサイズ、ビットレートを決めます。
  • コーデックは現在libx264で決め打ちになっています。

音声の形式

  • 自動でlibmp3lame、libfaac、libvo_aacencから選択します。
  • ビットレート、ボリュームを指定します。

スレッド数

CPU数に応じてデフォルト値を決めていますが自由に設定可能です。

保存

  • 配信のURLは各自調べてください
  • CaveTubeならrtmp://cavestream.net/live/〜
  • Justin.tvならrtmp://live.justin.tv/app/〜
  • Ustreamではなぜかエラーが出るので配信できません
  • 配信と同時に手元に保存、あるいは配信なしで保存するだけも可能です。
  • 保存する場合の形式は動画のコーデックで決まることになりますが、現在はmp4決め打ちです。

その他

  • 現在のところlibavとffmpegはほぼ同じオプションが使えるためavconv/ffmpegを切り替えるだけで共通して動作します。
  • ですがどちらも変更の激しいプロジェクトであり、将来的には互換性がなくなる可能性があります。

予定

  • マイクの音声と再生中の音をミックスする方法を考える
  • カメラを利用する際のエラー(The v4l2 frame is 〜 bytes, but 〜 bytes are expected /dev/video0)をなんとかする
  • Ustreamで使えるようにする

ライセンス

  • MITライセンスにて提供しています。