Linux でデスクトップを偽のウェブカメラとして使用する

Linux でデスクトップを偽のウェブカメラとして使用する

無料のストリーミング サイトを使用して Linux デスクトップ (ウィンドウ) のライブ ストリームを作成し、キャプチャしたビデオを偽の Web カメラとして使用したいと考えています。Windows にはこのためのツールが多数あります。ffmpeg を使用すると、特定のウィンドウの入力をキャプチャできますが、フラッシュで使用できる偽の Web カメラ スタイルのデバイスにビデオを出力する方法が見つかりません。

これを実行するための方法(またはソフトウェア)を誰かお勧めいただけますか?

答え1

インストールできますv4l2ループバックこれはウェブカメラをシミュレートするカーネル モジュールです。次のようにロードします。

modprobe v4l2loopback

次に、ffmpeg などのプログラムを使用して、ビデオ ストリームをデバイスに送信する必要があります/dev/videoN(ここで、Nは新しく作成されたデバイスに対応する番号です。おそらく最も高い番号です)。デスクトップをキャプチャして ffmpeg に転送するには/dev/videoN、次のコマンド ラインを使用できます。

ffmpeg -probesize 100M -framerate 15 -f x11grab -video_size 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -f v4l2 /dev/videoN

-framerate異なるフレーム レートが必要な場合は、の値を 15 から他の値に変更します。

解像度は-video_sizeパラメータで選択します。画面の左上隅からのオフセットを指定する場合は、 の形式で -i パラメータに渡します-i :0.0+x,y。ここで、x と y はそれぞれ水平オフセットと垂直オフセットです。

答え2

使用v4l2loopback と mplayer

  1. ダウンロードして、

  2. コンパイルして(makeそしてsu -c 'make install')、

  3. モジュールをロードしsu -c 'modprobe v4l2loopback'

  4. examples/yuv4mpeg_to_v4l2.c次に、 v4l2loopbackソースフォルダのファイルの1行を

    v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
    

    v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
  1. makeこのフォルダ内で実行します。

  2. 次に、次のようにディレクトリから実行しますexamples

    mkfifo /tmp/pipe  # only needed once, as long as you do not delete the file /tmp/pipe
    ./yuv4mpeg_to_v4l2 < /tmp/pipe &
    mplayer movie.mp4 -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
    

movie.mp4ここで、 をビデオ ファイルの名前に置き換えます。 を/dev/video0ループバック デバイスに置き換えます。

MPlayerは、あらゆるウェブストリーム、あらゆる種類のビデオファイルを再生できます。標準入力からでも再生できます。私は次のファイルでテストしました。http://www.tagesschau.deドイツのニュースサイトです。

TS=$(wget "http://www.tagesschau.de/multimedia/video/" -q -O - | grep --regexp='http.*\.webm"' | sed -e 's%.*href="%%' -e 's%\.webm".*%\.webm%')
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer $TS -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe

$TS の代わりに-(stdin の略) を置くこともできます。そして、mplayer の前に ffmpeg コマンドを配置して、その出力を stdout にリダイレクトします。つまり、次のようになります。

./yuv4mpeg_to_v4l2 < /tmp/pipe &
ffmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe

ffmpeg コマンドがどのようになっているかが示されていなかったため、最後のものはテストしませんでした。

答え3

どのディストリビューションを使用していますか? Arch の WebCamStudio と Livestream の Web ベースの「スタジオ」を組み合わせて使用​​したところ、うまくいきました。ただし、使用してから少し時間が経っています。

http://www.ws4gl.org/

正確には何をしようとしているのですか? x11grab でコンパイルされた ffmpeg はデスクトップを録画できます。それを Ustream にプッシュすることにある程度成功しましたが、やはりしばらく経ちましたし、私がやっていたことはもう機能しないと思います。

デスクトップではなくファイルをストリーミングしたいだけなら (「ウィンドウ」というのは「VLC」のことだと思います)、Livestream (おそらく Ustream) でそれを動作させるための正しい方法をご案内できます。私は実験を通じて、これをどうやって行うかを不器用に理解しています。素晴らしいとは言えませんが、Livestream では動作します。

Justin.tv には、VLC からサービスにストリーミングできるスクリプトもあります。

http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API

答え4

まず、appear.in はおそらく、何の面倒もなくあなたが望むことを実行します (私は関係ありません)。http://appear.in/

次に、最近 Linux サポートが追加された OBS を使用して、Twitch やその他のサービスにストリーミングできます。https://obsproject.com/

OBS は、Ubuntu で画面をキャプチャする際にシステム サウンドとオーディオ入力を多重化するという、はるかに難しい問題も解決します (universeこれまで私が見つけたリポジトリのどの方法でも解決されていません)。

私には素晴らしい Unix 風のソリューションはありません。しかし、それらは現実世界ではうまく機能しました。

関連情報