Linuxでデスクトップの配信をする方法

ニコニコ生放送UstreamなどでLinuxからデスクトップを配信する方法です。Webcamstudioが動かなかったのでややこしいやり方になってますorz

#!/bin/sh

FIFO=/tmp/stream-$USER.ogv
FPS=24
SIZE=320x240

[ -p "$FIFO" ] || mkfifo "$FIFO"

recordmydesktop --windowid $(xwininfo | awk '/Window id:/ {print $4}') \
                --fps $FPS --no-cursor --no-frame --no-sound \
                --on-the-fly-encoding --overwrite -o $FIFO &
sleep 5 &
ffmpeg -i $FIFO -s $SIZE -r $FPS -an -f yuv4mpegpipe - | \
       mjpegtools_yuv_to_v4l /dev/video1

killall recordmydesktop
rm -f $FIFO

vloopbackモジュールはflashcam-1.3*1の中に入ってるヤツを野良ビルド。mjpegtools_yuv_to_v4l*2も同じく野良ビルド
使い方は、上記スクリプトを実行したあとキャプチャしたいウィンドウをクリックすればそのウィンドウをキャプチャできます。
他にWebカメラなどが繋がっている場合、/dev/video1の部分は変わると思います。

% sudo modprobe vloopback
% dmesg | grep vloopback

でvloopbackのinputの所のデバイスに変えれば動くと思います。

追記:HPに最新のスクリプトがあります。