gpt4 book ai didi

c++ - 如何修复 "GStreamer-CRITICAL **: gst_sample_get_buffer: assertion ' GST_IS_SAMPLE(示例 )' failed"

转载 作者:行者123 更新时间:2023-12-04 18:54:25 26 4
gpt4 key购买 nike

我想通过 gstreamer 抓取视频帧并显示在我的应用程序上(使用 Qt),但我遇到了一些问题:

当我尝试使用 GstAppSink (gst_app_sink_pull_sample) 时,它一直返回 NULL,我不明白。我可以完美地使用终端(gst-launch-1.0)流式传输视频。

下面是我的代码:

void gstreamer::openStream()
{
pipeline = gst_parse_launch ("rtspsrc location=rtsp://192.168.10.123 ! rtph264depay ! h264parse ! queue ! avdec_h264 ! xvimagesink sync=false async=false appsink name=mysink", NULL);

GstElement* sink = gst_bin_get_by_name(GST_BIN(pipeline), "mysink");

GstAppSink* appsink = GST_APP_SINK(sink);

if(!appsink)
{
qDebug() << "get app sink failed";
}
else
{
qDebug() << "app sink pass";
mAppSink = appsink;

openSample();
}
}

void gstreamer::openSample()
{

if(!mAppSink)
{
qDebug() << "appsink failed";
}
GstSample* gstSample = gst_app_sink_pull_sample(mAppSink);

if(gstSample == NULL)
{
qDebug() << "sample failed ";
}
else{
qDebug() << "sample pass";
}

GstBuffer* buffer = gst_sample_get_buffer(gstSample);
if(!buffer)
{
qDebug() << "buffer fail";
}

GstMapInfo map;

gst_buffer_map(buffer, &map, GST_MAP_READ);


QImage image = QImage((map.data), 320, 240, QImage::Format_RGB888);
emit sendFrame(image);
}

我试图在网上找到,但几乎没有任何关于这个问题的链接。

最佳答案

尝试将管道更改为
“rtspsrc location=rtsp://192.168.10.123!rtph264depay!h264parse!tee name=my_tee!队列!avdec_h264!xvimagesink sync=false my_tee。!队列!appsink async=false name=mysink”

关于c++ - 如何修复 "GStreamer-CRITICAL **: gst_sample_get_buffer: assertion ' GST_IS_SAMPLE(示例 )' failed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55454086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com