2

「コンピューターなしでフラクタル」を再現しようとしていますが、3 台のプロジェクターではなくコンピューターを使用しています。gstreamer を使用するのは非常に簡単だと思います。tee を使用してカメラからストリームを複製し、 videomixer使用して 3 つの同一の画像を 1 つに配置するだけです。

ここでは、「videotestsrc pattern=1」を複製したいストリームとして使用し、「videotestsrc pattern="black"」を画面全体の背景として使用しています。

#!/bin/bash
gst-launch -v \
    videotestsrc pattern=1 ! video/x-raw-yuv,width=200,height=200 \
        ! tee name=t \
    videomixer name=mix \
          sink_0::xpos=0   sink_0::ypos=0 \
          sink_1::xpos=100 sink_1::ypos=0 \
          sink_2::xpos=200 sink_2::ypos=200 \
          sink_3::xpos=0   sink_3::ypos=200 \
        ! ffmpegcolorspace ! xvimagesink \
    videotestsrc pattern="black" ! video/x-raw-yuv,width=400,height=400 \
        ! mix.sink_0 \
    t. ! queue ! mix.sink_1 \
    t. ! queue ! mix.sink_2 \
    t. ! queue ! mix.sink_3 \

問題は、sink_1 に対応するコピーと、sink_2 に対応するコピーの 2 つしか得られないことです。最後の 2 行を入れ替えると、sink_1 と sink_3 のみが得られます。

問題は、3 つのコピーすべてを表示する方法です。

4

2 に答える 2

5

このようなもの

gst-launch -v \
videotestsrc pattern=1 ! video/x-raw-yuv,width=200,height=200 \
    ! tee name=t \
videomixer name=mix \
      sink_0::xpos=0   sink_0::ypos=0    sink_0::zorder=0\
      sink_1::xpos=100 sink_1::ypos=0    sink_1::zorder=1\
      sink_2::xpos=200 sink_2::ypos=200  sink_2::zorder=2\
      sink_3::xpos=0   sink_3::ypos=200  sink_3::zorder=3\
    ! ffmpegcolorspace ! xvimagesink \
videotestsrc pattern="black" ! video/x-raw-yuv,width=400,height=400 \
    ! mix.sink_0 \
t. ! queue ! mix.sink_1 \
t. ! queue ! mix.sink_2 \
t. ! queue ! mix.sink_3 
于 2011-09-08T15:54:03.883 に答える
4

やあ!各 i=0..3 に sink_i::zorder=i を追加すると、問題が解決します。

于 2010-11-30T11:55:07.460 に答える