总览
初始化(public)
mp4与yuv视频的相互转换(privately)
带缩放功能的mp4与yuv视频的相互转换(privately)
usb摄像头驱动(public)
摄像头视频流存储为yuv,或mp4在本地(privately)
摄像头视频流数据推送udp,网络视频的播放(privately)
1.初始化代码
/**
* @brief Gstreamer frame init and printf Gstreamer version
* @param void
* @return void
*/
void videoToolsInit(void)
{
const gchar *nano_str;
guint major, minor, micro, nano;
gst_init(NULL, NULL);
gst_version(&major, &minor, µ, &nano);
if(nano == 1)
{
nano_str = "(CVS)";
}
else if(nano == 2)
{
nano_str = "(Prerelease)";
}
else
{
nano_str = "";
}
printf("videoTools Init success, GStreamer Ver = %d.%d.%d %s\n", major, minor, micro, nano_str);
}
2.关键回调
static void pad_link_next_pad(GstElement *start, GstPad *pad, GstElement *next)
{
gst_element_link_pads(start, GST_PAD_NAME(pad), next, NULL);
}
static gboolean bus_call(GstBus *bus, GstMessage *msg, gpointer data)
{
GMainLoop *loop = data;
switch(GST_MESSAGE_TYPE(msg))
{
case GST_MESSAGE_EOS:
printf("SUCCESS: End-of-stream\n");
g_main_loop_quit(loop);
break;
case GST_MESSAGE_ERROR:
{
gchar *debug;
GError *err;
gst_message_parse_error(msg, &err, &debug);
g_free(debug);
printf("Error: %s\n", err->message);
g_error_free(err);
g_main_loop_quit(loop);
break;
}
default:
break;
}
return TRUE;
}
3.头文件
#include <gst/gst.h>