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


47

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

誰でもこれを行うための方法(またはソフトウェア)を推奨できますか?


「フラッシュで使用できる偽のウェブカメラスタイルのデバイス」と言うまでは、すべてがおかしな話でした。
イグナシオバスケスエイブラムス

どういう意味か分かりませんか?「webcam-style」デバイスとは、偽の/ dev / videoNデバイスファイルなどのようなものを意味します。これがキャプチャされたビデオがフラッシュで使用できる方法だと思います。
bkconrad

まさに。難しいです。
イグナシオバスケス-エイブラムス

回答:


51

v4l2loopbackをインストールできます。Webカメラをシミュレートするカーネルモジュールです。でロード:

modprobe v4l2loopback

次に、ffmpegなどのプログラムを使用して、デバイス/ dev / video0にビデオストリームを送信する必要があります。デスクトップをキャプチャし、ffmpegで/ dev / video0に転送するには、次のコマンドラインを使用できます。

ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0

別のフレームレートが必要な場合は、-rの値を15から他の値に変更します。解像度は-sパラメーターで選択されます。画面の左上隅からのオフセットを指定する場合は、「-i:0.0 + x、y」の形式で-iパラメーターに渡します。xとyはそれぞれ水平オフセットと垂直オフセットです。


5
あなたの画像はミラーリングされているかもしれません。つまり、ffmpeg buildに応じて水平反転を取得します。ビデオフィルター-vf hflipを使用します。すでに1つのvfを使用している場合は、-vf 'hflip、scale = 640:360'のように、引用符で囲み、カンマで区切ってください。
マルセロテイシェイラルッジェリ

3
これ[x11grab @ 0x24013c0] Stream #0: not enough frames to estimate rate; consider increasing probesizeでいくつかのエラーが発生します[v4l2 @ 0x2409520] ioctl(VIDIOC_G_FMT): Invalid argumentCould not write header for output file #0 (incorrect codec parameters ?): Invalid argument
ロータス

1
ffmpeg 3.1.4で@Lotusとまったく同じ出力を取得しています。v4l2loopbackおよびffmpeg以外に必要な特別なコーデックまたはパッケージはありますか?
-cguenther

1
@Lotus別の/ dev / videoデバイスを使用すると、問題を回避できました。必ずv4l2ビデオデバイス(私の場合は/ dev / video1)を使用してください。オフセットは、/ dev / video0を使用する既存の実際のWebカメラデバイスが原因である可能性があります。
-cguenther

2
@Lotus chromeブラウザを起動する前に、modprobeコマンド(rootまたはsudoを使用)が実行されていることを確認してください。<code> lsmod |を使用して、モジュールが正しくロードされていることを確認します。grep v4l2loopback </ code>。
cguenther

6

mplayerでv4l2loopbackを使用ます。

  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;
    
  5. makeこのフォルダで行います。

  6. 次に、次の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は、標準入力からであっても、あらゆるWebストリーム、あらゆる種類のビデオファイルを再生できます!ドイツのニュースサイトである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 &
fmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe

ffmpegコマンドがどのように見えるかを知らなかったため、最後のものをテストしませんでした。


助けてください:に./yuv4mpeg_to_v4l2 < /dev/video0 &つながり./yuv4mpeg_to_v4l2: : missing YUV4MPEG2 headerます。どのように交換する/tmp/pipeことにより/dev/video0
user123456

3

どのディストリビューションを使用していますか?Archの下でWebCamStudioとLivestreamのWebベースの「スタジオ」を組み合わせて成功しました。ただし、使用してからしばらく経ちました。

http://www.ws4gl.org/

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

デスクトップではなくファイルをストリーミングしたいだけなら(「A window」、「VLC」と言うときは考えている)、Livestreamで動作させるために正しい方向に向けることができます(たぶんUstream)。実験を通してこれを行う方法を不器用に考えています。素晴らしいことではありませんが、Livestreamで動作します。

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

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


ああ、これは非常に興味深いです。いくつかのゲームのライブゲームプレイをストリーミングしようとしています。ffmpegからビデオファイルにキャプチャする方法は既に知っています。同じファイルをvlcで開き、書き込み中に何らかの方法でストリーミングできるかどうか疑問に思います。情報をありがとう。
bkconrad

ws4gl.orgの Webサイトは非常に古く、すべてのリンクはWayback Machineを指しています。私は、最新バージョンが利用可能であるとしsourceforge.net/projects/webcamstudio
デニウソンSáマイアは、

「WEBCAMSTUDIOはもうメンテナンスされていません」:/
ラファエル

2

まず、appear.inはおそらくあなたが面倒なしであなたが望むことをします(私は提携していません):http ://appear.in/

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

OBSは、Ubuntuでのスクリーンキャプチャ中のシステムサウンドとオーディオ入力の多重化という非常に難しい問題も解決します(universeこれまでに見つけたレポジトリでは解決されていません)。

素晴らしいUnix-yソリューションはありません。しかし、それらは現実の世界で私のために働いた。


Debian上のOBSスタジオ:tracker.debian.org/pkg/obs-studio
myrdd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.