Ubuntuでピアキャス配信用エンコード
現状Ubuntuでピアキャス配信は不可能ではないけれど、まずその環境を用意するのが面倒だなぁと思っていました。エンコーダ1つ起動するだけで配信を始められないものか。
そうだ。androidでピアキャス配信するアプリ、入力をカメラからデスクトップに変えるだけでUbuntuで配信するやつができるんじゃない?androidってlinuxみたいなもんだし・・・。ところがUbuntuはGUIにUnityが組み込まれていて通常の方法ではスクリーンショットが撮れませんでした。(ウィンドウがない状態のスクリーンショットになる)
しかしアプリの制作過程でできた派生物FFWmvServerがFFServerの代用として使えたので、少しだけ配信のハードルが下げられそうな感じがしました。以下その方法
まずUbuntuソフトウェアセンターからRecordMyDesktopとPulseAudio音量コントロールをインストールします。
RecordMyDesktopの設定でデバイスをpulseに
FFmpeg Static Builds by BurekなどからFFmpegのバイナリをとってきて展開しておく
FFWmvServerをポート47711で起動
java -jar FFWmvServer.jar 47711
次のシェルスクリプトを実行
# 既にrecordmydesktopが起動していたら止める killall recordmydesktop sleep 3 rm -f tmp.ogv # desktopをtmp.ogvとして出力 recordmydesktop --on-the-fly-encoding --fps=5 --width=1024 --height=768 --overwrite -o tmp.ogv & sleep 20 # tmp.ogvを入力、FFWmvServerを出力としてエンコード ffmpeg -f ogg -i tmp.ogv -vcodec wmv1 -s 512x384 -sws_flags lanczos -b 512k -maxrate 1024k -bufsize 560k -r 5 -re -acodec wmav1 -f asf -y http://localhost:47711
これで一応配信することができました
このやり方の問題点
- デスクトップ取り込み後すぐにエンコードを始めると止まってしまうので少し時間を開けなければいけないがラグがひどくなる
- デスクトップ取り込みとffmpegの2段階エンコでcpuがやばい
参考:recordMyDesktopの設定 ステレオミックスの方法など