VS2019 + Gstreamer

一、安装VS2019

安装程序可以自行去下载,网上也有很多的教程,大家自行搜索安装,很简单的。

二、安装Gstreamer

2.1. 下载地址

下载地址: https://gstreamer.freedesktop.org/data/pkg/windows/
本人下载的是下图中的版本
下载版本

2.2. 安装Gstreamer

先安装 gstreamer-1.0-msvc-x86_64-1.20.2.msi, 本人安装到D盘了,且选择的Complete安装选项
再安装 gstreamer-1.0-devel-msvc-x86_64-1.20.2.msi, 方法同样。

2.3. 设置Gstreamer的环境变量

  1. 将gstreamer\bin 目录加入path路径
    环境变量
  2. 设置环境变量
    GSTREAMER_ROOT_X86 = xxxx
    环境变量

三、创建VS项目工程

3.1 创建一个VS工程

大家自行搜索下,很多的。 本人创建的是一个控制台程序输出Hello Wold的那个。

3.2 写一个gstreamer的测试程序

#include <iostream>
#include <gst/gst.h>   // 新添加的Gstreamer相关的头文件
#include <glib.h>      // 新添加的Gstreamer相关的头文件

int main()
{
    std::cout << "Hello World!\n";    // 工程创建后自带的, 下边都是添加的测试程序
	GstElement* pipeline;
	GstElement* source, * filter, * sink;

	//init
	gst_init(nullptr, nullptr);

	//creat pipeline
	pipeline = gst_pipeline_new("my-pipline");

	//create elements
	source = gst_element_factory_make("fakesrc", "source");
	filter = gst_element_factory_make("identity", "filter");
	sink = gst_element_factory_make("fakesink", "sink");

	//将元组添加到管道中
	gst_bin_add_many(GST_BIN(pipeline), source, filter, sink, NULL);

	//连接
	if (!gst_element_link_many(source, filter, sink, NULL)) {
		g_warning("failed to link elements\n");
		std::cout << "failed to link elements!\n";
	}
	else
	{
		std::cout << "Hello GStreamer!\n";
	}
}

3.3 将Gstreamer相关的东西添加到VS工程中

3.3.1 切换debug 目标平台 为x64.

在这里插入图片描述

3.3.2

选择具体项目, 如下图的ConsoleApplication1 ,右击后选择属性,打开属性窗口。
在这里插入图片描述
在这里插入图片描述

3.3.3 配置vc++ 目录

属性窗口中选择vc++目录,分别修改“包含目录”,“引用目录”:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3.4 修改c/c++附加包含目录

选择C/c++ ->常规, 修改附加包含目录:
在这里插入图片描述
在这里插入图片描述

3.3.5 修改链接器配置
  1. 选择连接器->常规, 修改附加库目录:
    在这里插入图片描述
    在这里插入图片描述
  2. 选择连接器->输入, 修改附加依赖项:
    在这里插入图片描述
3.3.6 修改调试环境

选择配置属性 -> 调试 -> 环境
在这里插入图片描述
在这里插入图片描述

3.4构建运行

  1. 构建,选择生成->生成解决方案
    在这里插入图片描述
  2. 运行,调试->开始运行(不调试)
    在这里插入图片描述
  3. 运行结果
    在这里插入图片描述
瑞芯微是一家专注于提供集成电路解决方案的公司,而GStreamer是一个功能强大的多媒体框架。结合瑞芯微和GStreamer,您可以实现各种多媒体处理和流媒体应用。 以下是一个使用瑞芯微和GStreamer的示例代码,用于从摄像头捕获视频并将其显示在屏幕上: ```c #include <gst/gst.h> int main(int argc, char *argv[]) { GstElement *pipeline, *source, *sink; GstBus *bus; GstMessage *msg; GstStateChangeReturn ret; // 初始化GStreamer gst_init(&argc, &argv); // 创建pipeline pipeline = gst_pipeline_new("my-pipeline"); // 创建source元素 source = gst_element_factory_make("v4l2src", "my-source"); // 创建sink元素 sink = gst_element_factory_make("autovideosink", "my-sink"); // 将source和sink添加到pipeline中 gst_bin_add_many(GST_BIN(pipeline), source, sink, NULL); // 连接source和sink gst_element_link(source, sink); // 启动pipeline ret = gst_element_set_state(pipeline, GST_STATE_PLAYING); if (ret == GST_STATE_CHANGE_FAILURE) { g_printerr("Unable to start the pipeline\n"); gst_object_unref(pipeline); return -1; } // 等待直到播放完成或发生错误 bus = gst_element_get_bus(pipeline); msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS); // 处理消息 if (msg != NULL) { GError *err; gchar *debug_info; switch (GST_MESSAGE_TYPE(msg)) { case GST_MESSAGE_ERROR: gst_message_parse_error(msg, &err, &debug_info); g_printerr("Error received from element %s: %s\n", GST_OBJECT_NAME(msg->src), err->message); g_printerr("Debugging information: %s\n", debug_info ? debug_info : "none"); g_clear_error(&err); g_free(debug_info); break; case GST_MESSAGE_EOS: g_print("End-Of-Stream reached.\n"); break; default: // 其他消息 break; } gst_message_unref(msg); } // 停止并释放资源 gst_element_set_state(pipeline, GST_STATE_NULL); gst_object_unref(pipeline); return 0; } ``` 请注意,上述代码是一个简单的示例,用于演示如何使用瑞芯微和GStreamer进行视频捕获和显示。实际应用中,您可能需要根据具体需求进行更多的配置和处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值