工具/软件:Linux
您好!
我想使用 gstreamer 对视频文件进行编码、我 的代码如下:
#include
int main (int argc、char * argv[])
{
GstElement *管道、* src、*视频_解析、* myvpe、*编码、 *SINK、*capsfilter1;
GstCaps *caps1;
GstBus *总线;
GstMessage *msg;
GstStateChangeReturn;
GST_init (&argc、&argv);
流水线= GST_P管线_NEW ("videocoder");
src = GST_ELECK_factory_make ("filesrc"、 "src");
VIDEO_PART= GST_ELECK_factory_make ("videoparse"、"video_parse");
myvpe = GST_ELECK_factory_make ("video"、"myvepe");
capsfilter1 = gst_el元_factory_make ("capsfilter"、"capsfilter1");
enc = gst_el元_factory_make ("ducatih264enc、"con");
sink = gst_el元_factory_make ("filesink"、 "接收器");
if (!pipeline ||!src ||!video_parse ||!myvpe ||!capsfilter1||!enc ||!sink)
{
g_printerr ("无法创建一个元素。正在退出。\n");
return -1;
}
g_object_set (G_object (src)、"位置"、"/mnt/akiyo_qcif.yuv null);
g_object_set (G_object (video_parse)、"width"、"176"、NULL);
G_object_set (G_object (video_parse)、"高度"、"144"、NULL);
G_object_set (G_object (video_parse)、 "format"、2、NULL);
g_object_set (g_object (video_parse)、"framerate"、 25、1、NULL);
caps1 = gst_caps_new_Simple ("video/x-rain"、
"format"、G_type_string、 "NV12"、
"宽度"、G_TYPE_INT、176、
"高度"、 G_TYPE_INT、144、
"帧速率"、GST_TYPE_FRATE、25、 1、
NULL);
g_object_set (G_object (capsfilter1)、"caps"、cap1、 null);
GST_OBJECT_UNREF (caps1);
g_OBJECT_SET (G_OBJECT (SINK)、"位置"、"/mnt/b2b.h264、 null);
gst_bin_add_many (gst_bin (pipeline)、src、video_parse、myvpe、 capsfilter1、enc、sink、NULL);
if (gst_element_link_many (src、 video_parse、myvpe、capsfilter1、enc、sink)!= true)
{
g_printerr ("元素无法链接。\n");
gst_object_pref (流水线);
return -1;
}
ret= gst_elie_set_state (流水线、
unable _state_playing);if (gstgst_stop_state_state_gst = gstop_gstate_gst)
;gstop_time_message_gstage_time_time_tune_stop_gst (gst = gst);gstop_time_time_gstop_gstipe_time_tune_time_tune_stel_r_r_gst (gst = gstel_time_gst = gst (gst);gst
if (msg!= NULL)
gst_message_UNREF (msg);
gst_object_UNREF (bus);
gst_element_set_state (流水线、gst_state_NULL);
gst_object_UNREF (流水线);
返回0;
}
然后、我运行此代码。它 遇到了一个问题:
(GST-TEST:1185):glib-GObject-Critical **:G_object_UNREF:断言"G_is_object (object)"失败
无法链接元素。
但是、我使用相同的流水线、命令行 成功:
gst-launch-1.0文件 rc location=/mnt/akiyo_qcif.yuv ! 视频粗宽度=176高度=144格式=i420 ! 视频转换! 'video/x-raw、format=(string) NV12、framerate=(fraction) 25/1、width=(int) 176、height=(int) 144' ! ducatih264enc! 文件链接位置=x.264
那么、您能告诉我如何处理这个问题吗。谢谢。
