2

/dev/videox デバイスの出力を「ティー」にして、ライブ ビデオ ストリームを 2 つのプログラムで同時に使用できるようにするにはどうすればよいですか?

/dev/video1:input=1:norm=NTSC からライブ ビデオを一度に 2 つのプログラム (mplayer と mencoder) に送信して、mencoder が記録しているときに遅延のないライブ ビューを取得したいと考えています。

mencoder からエンコードされたばかりの出力を取得して再生する方法は知っていますが、それでは数フレームの遅延が発生します (大きすぎます)。VLCはこれを実行できると言われていますが、大幅な遅延がないわけではありません。

私が今できる最善の方法は、mplayer で画面に再生させ、同時に「avconv -f x11grab」を使用してディスプレイからビデオを取得し、エンコードすることです。それは機能します (レイテンシーは追加されません) が、ディスプレイからビデオを取得するのが遅くなります - 最終的には 30 ではなく約 10 fps になります。

/dev/video1 を 2 つの仮想デバイスに "ティー" する簡単な方法が必要です。これにより、mplayer と mencoder の両方が同時にそれらを読み取ることができます (デバイスが「ビジー」であると不平を言うことなく)。

その方法は何ですか?

4

1 に答える 1

0

まさにあなたが求めているものではありませんが、単一のプログラムで実行してください: GStreamer( trygst-launch )。bash入力/出力パイプに対して行うことは、ビデオストリームに対して行います。

GStreamer のcamerabin2プラグインは、遅延なく必要なことを行うことができます: ストリームの再生と記録の両方。ただし、現在はクライアント コードからのみ使用でき、 からは使用できませんgst-launch

GStreamer には、たとえば RTP ネットワーク プロトコルを介してビデオ ストリームをエンコードして送信するなど、より複雑なことを行う必要がある場合のteeフィルターがあります。

于 2013-12-29T12:39:14.870 に答える