前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DeepStream整理

DeepStream整理

作者头像
算法之名
发布2023-03-01 14:11:51
1K0
发布2023-03-01 14:11:51
举报
文章被收录于专栏:算法之名

GStreamer

DeepStream是基于GStreamer开发的。它们主要都是做视频流处理的。现在我们来看一个GStreamer的HelloWorld。

在/opt/nvidia/deepstream/deepstream-5.0/sources/apps/sample_apps目录下创建一个新的文件夹basic-tutorial-1,进入该文件夹,创建一个basic-tutorial-1.c文件,内容如下

代码语言:javascript
复制
#include <gst/gst.h>
 
int
main (int argc, char *argv[])
{
  GstElement *pipeline; //构建一个媒体管道的基本块,包含了各种element,如source,sink
  GstBus *bus;  //总线
  GstMessage *msg;  //总线消息
 
  /* Initialize GStreamer */
  gst_init (&argc, &argv); //初始化GStreamer
 
  /* Build the pipeline */
  /* playbin是一个element,它既是source,也是sink,能同时处理整个管道(pipeline)事务
     gst_parse_launch建立一个管道 */
  pipeline =
      gst_parse_launch
      ("playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm",
      NULL);
 
  /* Start playing */
  /* 每一个element都有一个状态,这里是播放这个element的流媒体
  gst_element_set_state (pipeline, GST_STATE_PLAYING);
 
  /* Wait until error or EOS */
  /* 获取通道element总线 */
  bus = gst_element_get_bus (pipeline);
  /* gst_bus_timed_pop_filtered会阻塞到遇到错误或者流媒体播放结束,并且得到一个消息 */
  msg =
      gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
      GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
 
  /* Free resources */
  /* 释放资源 */
  if (msg != NULL)
    gst_message_unref (msg);
  gst_object_unref (bus);
  gst_element_set_state (pipeline, GST_STATE_NULL);
  gst_object_unref (pipeline);
  return 0;
}

创建一个Makefile文件,内容如下(具体含义可以参考C++基础整理 中的Linux 下的 C++ 环境)

代码语言:javascript
复制
APP:= basic-tutorial-1

TARGET_DEVICE = $(shell gcc -dumpmachine | cut -f1 -d -)

NVDS_VERSION:=5.0

LIB_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/lib/
APP_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/bin/

ifeq ($(TARGET_DEVICE),aarch64)
  CFLAGS:= -DPLATFORM_TEGRA
endif

SRCS:= $(wildcard *.c)

INCS:= $(wildcard *.h)

PKGS:= gstreamer-1.0

OBJS:= $(SRCS:.c=.o)

CFLAGS+= -I../../../includes

CFLAGS+= `pkg-config --cflags $(PKGS)`

LIBS:= `pkg-config --libs $(PKGS)`

LIBS+= -L$(LIB_INSTALL_DIR) -lnvdsgst_meta -lnvds_meta \
       -Wl,-rpath,$(LIB_INSTALL_DIR)

all: $(APP)

%.o: %.c $(INCS) Makefile
	$(CC) -c -o $@ $(CFLAGS) $<

$(APP): $(OBJS) Makefile
	$(CC) -o $(APP) $(OBJS) $(LIBS)

install: $(APP)
	cp -rv $(APP) $(APP_INSTALL_DIR)

clean:
	rm -rf $(OBJS) $(APP)

执行命令

代码语言:javascript
复制
make

编译后就有了可执行程序basic-tutorial-1。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GStreamer
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档