![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
GStreamer/DeepStream
GStreamer和DeepStream相关
fire9953
这个作者很懒,什么都没留下…
展开
-
7,appsrc和appsink
appsrc和appsink用起来的确是方便了很多,但是引用官方的说法:“ While these methods are strongly discouraged, GStreamer offers support for them --Beware! You need to know what you are doing--. Since you don't have any support from a base class you need to thoroughly understand s..原创 2020-09-16 17:01:48 · 546 阅读 · 1 评论 -
6,capsfilter的作用
我们看一下jpegenc的CapabilitiesPad Templates: SINK template: 'sink' Availability: Always Capabilities: video/x-raw format: { (string)I420, (string)YV12, (string)YUY2, (string)UYVY, (string)Y41B, (string)Y42B, (string)YVYU, (st原创 2020-09-10 21:58:30 · 1944 阅读 · 1 评论 -
5,avdec_h264使用的2种方法
方法1,和h264parse配合使用。以前面文章里提到的例子,PIPE为:appsrc - h264parse -avdec_h264 -videoconvert -jpegenc -multifilesinkavdec_h264一般连接在h264parse后面,用来解码H264数据。向appsrc里面填充数据,参考前面的文章,直接把H264文件里读出来的数据不断放进去就可以了。方法2,直接使用。做点新的尝试,如果我们把中间的h264parse去掉,PIPE变成下面这样:...原创 2020-09-10 17:52:16 · 2808 阅读 · 1 评论 -
4,h264parse的作用
h264parse的作用,顾名思义,用来分割输出H264帧数据。如果我们输入一个H264 Raw文件的数据流到h264parse里面,h264parse输出的是什么呢?实际的H264数据帧中,往往帧前面带有00 00 00 01或00 00 01分隔符。通过添加Probe来查看流过的数据,会发现h264parse流出的数据为 :分隔符 + SPS + 分隔符 + PPS + 分隔符 + 帧数据不管是I帧还是P帧,输出的数据都包含有分隔符,SPS和PPS....原创 2020-09-10 17:34:36 · 3590 阅读 · 0 评论 -
0, GStreamer开发教程
最近因为工作需要,Nvidia的deepstreamer基于GStreamer,所以需要去了解GStreamer。网上的资料搜索了一下,大部分是翻译的官方文档。通过自己的实际操作和写代码测试,感受,一方面感觉GStreamer还是非常有意思的,另外也发现有些问题并不是那么容易获得想要的答案。定位不是入门教程, 不会像官方文档说的那么细致。推荐大家入门教程可以看官方文档,demo还是很容易跑起来的。这里主要是针对我自己遇到的一些疑惑做一些记录。另外也希望能帮助到和我一样在学习初期有很多疑惑的朋原创 2020-09-10 00:22:38 · 239 阅读 · 0 评论 -
3,向appsrc发送数据,push模式
appsrc也支持push模式。简单来说,就是你主动地把数据“填充”或者说是“发送”到appsrc里面。例如你自己创建一个thread,每间隔3秒往appsrc里面填充一次数据。我看了网上的一些demo,基本上都是通过pull模式的callback来做的, push模式相关的demo也比较不好找。在上篇文章里的代码基础上做一些改动,核心就是填充数据以后,调用一下g_signal_emit_by_name(appsrc, "push-buffer", buffer, &ret); 上篇..原创 2020-09-09 23:54:52 · 1971 阅读 · 1 评论 -
2,向appsrc发送数据,pull模式
你可以通过appsrc,往pipe里填充自己的数据。有两种模式,PULL模式和PUSH模式。简单理解,PULL模式,通过callback,主动向你要数据,你把数据填充进去就可以了。以黑和白在窗口中交替显示为例:其实这是官方的一个demo,我在运行的时候,发现使用xvimagesink运行以后没反应,改成ximagesink以后运行正常。播放时候切换的频率,和timestamp有关,可以多改动体验一下。pipeline = gst_pipeline_new("pipeline");ap原创 2020-09-09 22:36:14 · 912 阅读 · 0 评论 -
1,1分钟上手GStreamer,解码h264 raw,保存成jpg
最近基于Nvidia开发板做一些开发,发现DeepStream是一个绕不过去的槛。当然你也可以有很多其他的选择,比如使用FFMPEG,但是decode,encode这些在Jetson上支持的并不是很好。或者也使用MutiMediaApi,但是难度比较高,对个人要求比较高。所以DeepStream相对来说是一个不错的选择,要弄明白DeepStream,必须得先弄明白GStreamer。安装GStreamer环境,学习了两天,基本有个入门吧。以解码h264 raw 文件为例,可以使用下面的命令,来简单看原创 2020-09-09 22:26:23 · 6956 阅读 · 0 评论