キャプチャしたビデオを偽のウェブカメラとして使用して、無料のストリーミングサイトを使用して、Linuxデスクトップ(のウィンドウ)のライブストリームを作成します。Windowsにはこれのための多くのツールがあります。ffmpegを使用すると、特定のウィンドウで入力をキャプチャできますが、フラッシュで使用できる偽のWebカメラスタイルのデバイスにビデオを出力する方法が見つかりません。
誰でもこれを行うための方法(またはソフトウェア)を推奨できますか?
キャプチャしたビデオを偽のウェブカメラとして使用して、無料のストリーミングサイトを使用して、Linuxデスクトップ(のウィンドウ)のライブストリームを作成します。Windowsにはこれのための多くのツールがあります。ffmpegを使用すると、特定のウィンドウで入力をキャプチャできますが、フラッシュで使用できる偽のWebカメラスタイルのデバイスにビデオを出力する方法が見つかりません。
誰でもこれを行うための方法(またはソフトウェア)を推奨できますか?
回答:
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はそれぞれ水平オフセットと垂直オフセットです。
[x11grab @ 0x24013c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
でいくつかのエラーが発生します[v4l2 @ 0x2409520] ioctl(VIDIOC_G_FMT): Invalid argument
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
make
およびsu -c 'make install'
)su -c 'modprobe v4l2loopback'
、次にexamples/yuv4mpeg_to_v4l2.c
、v4l2loopbackソースフォルダーのファイルの1行を
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
に
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
make
このフォルダで行います。
次に、次の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
?
どのディストリビューションを使用していますか?Archの下でWebCamStudioとLivestreamのWebベースの「スタジオ」を組み合わせて成功しました。ただし、使用してからしばらく経ちました。
正確に何をしようとしていますか?x11grabでコンパイルされたffmpegは、デスクトップを記録できます。私はそれをUstreamにプッシュするのに限られた成功しかありませんでしたが、再びそれはしばらくしており、私がやっていたことはもう機能しないと思います。
デスクトップではなくファイルをストリーミングしたいだけなら(「A window」、「VLC」と言うときは考えている)、Livestreamで動作させるために正しい方向に向けることができます(たぶんUstream)。実験を通してこれを行う方法を不器用に考えています。素晴らしいことではありませんが、Livestreamで動作します。
Justin.tvには、VLCからサービスにストリーミングできるスクリプトもあります。
http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API
まず、appear.inはおそらくあなたが面倒なしであなたが望むことをします(私は提携していません):http ://appear.in/
次に、OBSを使用してTwitchまたはその他のサービスにストリーミングできます。OBSは最近Linuxサポートを追加しました(!):https : //obsproject.com/
OBSは、Ubuntuでのスクリーンキャプチャ中のシステムサウンドとオーディオ入力の多重化という非常に難しい問題も解決します(universe
これまでに見つけたレポジトリでは解決されていません)。
素晴らしいUnix-yソリューションはありません。しかし、それらは現実の世界で私のために働いた。