создание труб в Java SWT со многими источниками - PullRequest
0 голосов
/ 29 июня 2011

Я новичок в gstreamer-java, я делаю проект Java SWT с использованием gstreamer, и я читаю учебные пособия и другие вещи, чтобы сделать это.Сначала я решил написать каналы, которые я тестировал с помощью командной строки, и все каналы работают нормально.Но теперь я хотел бы использовать его в своем коде Java.Я попробовал "pipe.launch", например, для этого канала: "v4l2src! Videoscale! Video / x-raw-yuv, height = 240! Xvimagesink autoaudiosrc! Audioconvert! Alsasink" (чтобы одновременно получать выходные данные веб-камеры и выводить аудио)

Но результат не тот, который ожидался, то есть я получил два окна вместо одного.Один для вывода веб-камеры, а другой, который ничего не содержит.Я понимаю, что это потому, что есть окно, которое генерируется с каналом.

Теперь я понимаю, что должен использовать видеокомпонент, чтобы включить поток веб-камеры в свой конкретный кадр.Я попробовал это:

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

первый источник Element src2 = ElementFactory.make ("autoaudiosrc", "sourceaudio") // второй источник

                   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();

, но есть ошибка с веб-камерой. Видеопоток остановлен, и аудиовыход отсутствует.Кто-нибудь может мне помочь?Я действительно запутался!

1 Ответ

0 голосов
/ 02 июля 2011

Наконец-то я нашел решение в другом месте.Для этой трубы

gst-launch -ev v4l2src!видеомасштабvideo / x-raw-yuv, высота = 240!xvimagesink autoaudiosrc!аудиоконвертировать!alsasink

Это решение в gstreamer-java, без использования "Pipeline.launch":

  • Прежде всего, я создал компонентное видео моей пользовательской оболочки:

VideoComponent videocomponent = new VideoComponent (shell, SWT.NONE, true);videocomponent.getElement () SetName ( "веб-камеры").videocomponent.setKeepAspect (истина);videocomponent.setLayoutData (new GridData ());

  • затем я создал элементы канала:

Элемент видеоисточника, видеосинкса, аудиосообщения,audioconv, аудиосинк;videosource = ElementFactory.make ("v4l2src", "sourcevid");audiosource = ElementFactory.make ("autoaudiosrc", "sourceaud");audioconv = ElementFactory.make ("audiconvert", "conv");audiosink = ElementFactory.make ("alsasink", "DestAud");videosink = videocomponent.getElement ();

  • Теперь я добавил следующие элементы в канал:

pipe.addMany (videosrc, videosink,audiosrc, audioconv, audiosrc, videosink);

  • Затем я связал элементы

Element.linkMany (videosrc, videosink);Element.linkMany (audiosrc, audioconv, audiosink);

  • Наконец, проиграйте трубу:

pipe.play ();

  • И откройте окно:

shell.open ();

Если это кому-то поможет, это будетхорошо!Bye

...