Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多个源代码在JavaSWT中创建管道_Java_Swt_Gstreamer - Fatal编程技术网

使用多个源代码在JavaSWT中创建管道

使用多个源代码在JavaSWT中创建管道,java,swt,gstreamer,Java,Swt,Gstreamer,我是gstreamer java的新手, 我正在使用gstreamer做一个javaswt项目,我阅读了教程和 做其他事情。 我决定先编写管道,然后用命令行进行测试, 所有的管道都很好。 但是现在我想在我的java代码中使用它。 我尝试了“pipeline.launch”,例如,这个管道: “v4l2src!videoscale!视频/x-raw-yuv,高度=240!xImageSink autoaudiosrc!audioconvert!alsasink“ (同时获得网络摄像头输出和音频输出

我是gstreamer java的新手, 我正在使用gstreamer做一个javaswt项目,我阅读了教程和 做其他事情。 我决定先编写管道,然后用命令行进行测试, 所有的管道都很好。 但是现在我想在我的java代码中使用它。 我尝试了“pipeline.launch”,例如,这个管道: “v4l2src!videoscale!视频/x-raw-yuv,高度=240!xImageSink autoaudiosrc!audioconvert!alsasink“ (同时获得网络摄像头输出和音频输出)

但是结果不是预期的,就是我有两个窗口, 而不是一个。一个用于网络摄像头输出,另一个包含 没有什么我知道这是因为有一扇窗户 与管道一起生成

我现在了解到我应该使用videocomponent来包含网络摄像头 流到我的特定帧中。 我试过这个:

                   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,
正确的)//包括在我的框架内

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

                   Element videosink = videocomponent.getElement();
                   Element audiosink = ElementFactory.make("alsasink",
“sortieaudio”)//用于音频输出 视频组件.立根(25,65,420,320)

但是网络摄像头有一个bug,视频流停止了,出现了错误 没有音频输出。
有人能帮我吗?我真的很困惑

我终于在别处找到了解决办法。 对于这个管道

gst发布-ev v4l2src!电子秤!视频/x-raw-yuv,高度=240!xvimagesink自动音频src!音频转换!阿尔萨斯辛

这是gstreamer java中的解决方案,不使用“Pipeline.launch”:

  • 首先,我创建了自定义shell的组件视频:
VideoComponent VideoComponent=新的VideoComponent(shell,SWT.NONE,true); videocomponent.getElement().setName(“网络摄像头”); videocomponent.setKeepAspect(true); setLayoutData(新的GridData())

  • 然后,我创建了管道的元素:
单元视频源、视频接收器、音频源、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()

  • 现在,我在管道中添加了以下元素:
pipe.addMany(videosrc、videosink、audiosrc、audioconv、audiosrc、videosink)

  • 然后,我链接元素
linkMany元素(videosrc、videosink); linkMany元素(audiosrc、audioconv、audiosink)

  • 最后,演奏管乐器:
吹奏

  • 然后打开窗口:
shell.open()

如果这能帮助某人,那就太好了! 再见

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