使用多个源代码在JavaSWT中创建管道
我是gstreamer java的新手, 我正在使用gstreamer做一个javaswt项目,我阅读了教程和 做其他事情。 我决定先编写管道,然后用命令行进行测试, 所有的管道都很好。 但是现在我想在我的java代码中使用它。 我尝试了“pipeline.launch”,例如,这个管道: “v4l2src!videoscale!视频/x-raw-yuv,高度=240!xImageSink autoaudiosrc!audioconvert!alsasink“ (同时获得网络摄像头输出和音频输出) 但是结果不是预期的,就是我有两个窗口, 而不是一个。一个用于网络摄像头输出,另一个包含 没有什么我知道这是因为有一扇窗户 与管道一起生成 我现在了解到我应该使用videocomponent来包含网络摄像头 流到我的特定帧中。 我试过这个:使用多个源代码在JavaSWT中创建管道,java,swt,gstreamer,Java,Swt,Gstreamer,我是gstreamer java的新手, 我正在使用gstreamer做一个javaswt项目,我阅读了教程和 做其他事情。 我决定先编写管道,然后用命令行进行测试, 所有的管道都很好。 但是现在我想在我的java代码中使用它。 我尝试了“pipeline.launch”,例如,这个管道: “v4l2src!videoscale!视频/x-raw-yuv,高度=240!xImageSink 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,
正确的)//包括在我的框架内
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的组件视频:
- 然后,我创建了管道的元素:
- 现在,我在管道中添加了以下元素:
- 然后,我链接元素
- 最后,演奏管乐器:
- 然后打开窗口:
pipe.addMany(src, videosink,src2, audiosink);
Element.linkMany(src, videosink, src2, audiosink);
pipe.play();
shell.open();