我在eglfs
板上工作只有Qt Multimedia
,即没有窗口系统。由于此Qt
内容,视频和相机无法使用Gstreamer
X
,而QtGstreamer
需要camerabin2
。所以我使用//init QGst
QGst::init(&argc, &argv);
//create video surface
QGst::Quick::VideoSurface* videoSurface = new QGst::Quick::VideoSurface(&engine);
CameraPlayer player;
player.setVideoSink(videoSurface->videoSink());
库here。
我跟随examples并创建了一个按预期工作的媒体播放器。现在,我想要使用来自错误plugins的void open()
{
if (!m_pipeline) {
m_pipeline = QGst::ElementFactory::make("camerabin").dynamicCast<QGst::Pipeline>();
if (m_pipeline) {
m_pipeline->setProperty("video-sink", m_videoSink);
//watch the bus for messages
QGst::BusPtr bus = m_pipeline->bus();
bus->addSignalWatch();
QGlib::connect(bus, "message", this, &CameraPlayer::onBusMessage);
//QGlib::connect(bus, "image-done", this, &CameraPlayer::onImageDone);
} else {
qCritical() << "Failed to create the pipeline";
}
}
}
//-----------------------------------
void CameraPlayer::setVideoSink(const QGst::ElementPtr & sink)
{
m_videoSink = sink;
}
//-----------------------------------
void CameraPlayer::start()
{
m_pipeline->setState(QGst::StateReady);
m_pipeline->setState(QGst::StatePlaying);
}
来做相机。
这是我的代码:
cameraPlayer.start()
// cameraplayer.cpp
QtGstreamer
然后我打电话给{{1}},但是没有视频。我在这里错过了什么吗?有人用{{1}}来播放网络摄像头吗?提前谢谢。
答案 0 :(得分:1)
我意识到一些插件(multifilesink)丢失了。使用Qt
参数和--gst-debug-level=4
启动了我的gstreamer
应用程序,然后报告了有关插件丢失的信息。