2011-06-29 11 views
0

私はgstreamer-javaで新しいです。 私はgstreamerを使ってjava swtプロジェクトをやっています。私はチュートリアルと 他のことを読んでいます。 私は最初にパイプを書くことに決めました。コマンドラインでテストしたところ、 であり、すべてのパイプが正常に動作します。 しかし、今私は自分のJavaコードでそれを使用したいと思います。 私はこのパイプのための "pipeline.launch"を試しました: "v4l2src!videoscale!video/x-raw-yuv、height = 240!xvimagesink autoaudiosrc!audioconvert!alsasink" (ウェブカメラの出力と音声出力を取得する同時)多くのソースを持つjava swtでパイプを作成します

しかし、結果は期待されたものではなく、すなわち、私は2つのウィンドウ、1つではなく を得ました。 1つはウェブカメラの出力用、もう1つは が含まれていません。パイプで生成された というウィンドウがあるためです。

ウェブカメラ ストリームを自分の特定のフレームに含めるには、ビデオコンポーネントを使用する必要があります。 私はこの試み:

    Display display = new Display(); 
        Shell shell = new Shell(display); // my frame 
        Pipeline pipe = new Pipeline("Webcam"); 
        Element src = ElementFactory.make("v4l2src", "sourcevideo"); // the 

第一ソース 要素SRC2 = ElementFactory.make( "autoaudiosrc"、 "sourceaudio")// 第2のソース

    VideoComponent videocomponent = new VideoComponent(shell, SWT.NONE, 

true)を、 //私のフレームに含める

    videocomponent.getElement().setName("webcam"); 
        videocomponent.setKeepAspect(true); 
        videocomponent.setLayoutData(new GridData()); 

        Element videosink = videocomponent.getElement(); 
        Element audiosink = ElementFactory.make("alsasink", 

"sortieaudio"); //オーディオ出力の場合 videocomponent.setBounds(25、65、420、320);

    pipe.addMany(src, videosink,src2, audiosink); 
        Element.linkMany(src, videosink, src2, audiosink); 
        pipe.play(); 
        shell.open(); 

が、webcam.Theビデオストリームとのバグがありますが停止し、 には、音声出力はありません。 誰かが私を助けることができますか?私は本当に混乱している!

答えて

0

最後に私は解決策を他の場所で見つけました。 このパイプの場合、

gst-launch -ev v4l2src! videoscale!ビデオ/ x-raw-yuv、高さ= 240! xvimagesink autoaudiosrc! audioconvert! "Pipeline.launch" 使用せずにこれは、のgstreamer-Javaでのソリューションです

alsasink:

:すべての

  • まず、私は私のカスタムシェルのコンポーネントビデオを作成しました

    VideoComponent videocomponent = new VideoComponent(シェル、SWT.NONE、true); videocomponent.getElement()。setName( "webcam"); videocomponent.setKeepAspect(true); ビデオコンポーネント。setLayoutData(new GridData());

  • その後、私はパイプの要素を作成した:

要素videosource、videosink、はAudioSource、audioconv、audiosink。 videosource = ElementFactory.make( "v4l2src"、 "sourcevid"); audiosource = ElementFactory.make( "autoaudiosrc"、 "sourceaud");audioconv = ElementFactory.make( "audiconvert"、 "conv"); audiosink = ElementFactory.make( "alsasink"、 "DestAud"); videosink = videocomponent.getElement();

  • ここで、Iは、パイプ内のこの要素を追加した:

pipe.addMany(videosrc、videosink、audiosrc、audioconv、audiosrc、videosink)。

  • そして、Iは、要素

Element.linkMany(videosrc、videosink)に連結されました。 Element.linkMany(audiosrc、audioconv、audiosink); )(

pipe.play;:

  • 最後に、パイプを再生

  • とウィンドウを開く:

はshell.open();

これが誰かを助けることができれば、それは良いことです! bye

関連する問題