Question regarding gst_parse_launch function

qjqj quanjie at live.com
Wed Nov 29 00:44:10 UTC 2017


Hi,

I tried both with -e and without -e, the error I got was this:

[gstreamer] initialized gstreamer, version 1.8.3.0
[gstreamer] gstreamer decoder failed to create pipeline
[gstreamer]    (syntax error)
[gstreamer] failed to init gstCamera

gst-camera:  failed to initialize video device

Which is from parser, and here is my source code:

bool gstCamera::buildLaunchStr()
{
	std::ostringstream ss;
	
	//open ip camera
	ss << " udpsrc port=15004 !";
	ss << " application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay !
h264parse !"; 
	ss << " queue ! avdec_h264 ! xvimagesink sync=false async=false -e";
	
	mLaunchStr = ss.str();

	printf(LOG_GSTREAMER "gstreamer decoder pipeline string:\n");
	printf("%s\n", mLaunchStr.c_str());
	return true;
}

bool gstCamera::init()
{
	GError* err = NULL;

	// build pipeline string
	if( !buildLaunchStr() )
	{
		printf(LOG_GSTREAMER "gstreamer decoder failed to build pipeline
string\n");
		return false;
	}

	// launch pipeline
	mPipeline = gst_parse_launch(mLaunchStr.c_str(), &err);

	if( err != NULL )
	{
		printf(LOG_GSTREAMER "gstreamer decoder failed to create pipeline\n");
		printf(LOG_GSTREAMER "   (%s)\n", err->message);
		g_error_free(err);
		return false;
	}

	// get the appsrc
	GstElement* appsinkElement = gst_bin_get_by_name(GST_BIN(pipeline),
"mysink");
	GstAppSink* appsink = GST_APP_SINK(appsinkElement);

	if( !appsinkElement || !appsink)
	{
		printf(LOG_GSTREAMER "gstreamer failed to retrieve AppSink element from
pipeline\n");
		return false;
	}
	
	mAppSink = appsink;
	
	// setup callbacks
	GstAppSinkCallbacks cb;
	memset(&cb, 0, sizeof(GstAppSinkCallbacks));
	
	cb.eos         = onEOS;
	cb.new_preroll = onPreroll;
	cb.new_sample  = onBuffer;
	
	gst_app_sink_set_callbacks(mAppSink, &cb, (void*)this, NULL);
	
	return true;
}



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/


More information about the gstreamer-devel mailing list