deepstream sdk是基于gstream框架开发的
gstream用pipeline的形式,把各个element连接起来。所以使用deepstream时,有很多插件是原本gstream自带的,有些的deep stream自己的。
deepstream插件介绍:
https://docs.nvidia.com/metropolis/deepstream/dev-guide/#wwpID0E0TB0HA
列出所有插件列表
gst-inspect-1.0
查看某一插件的详细信息
通过gst命令可以查看到有很多nvidia官方插件
gst-inspect-1.0 -a |grep NVIDIA
gst-inspect-1.0 nvinfer
测试图像保存功能,输入源是测试用源插件,png编码
gst-launch-1.0 videotestsrc num-buffers=1 ! pngenc ! multifilesink location=img_0922_%d.png
nvidia demo infer
deepstream-test1-app ~/deepstream_sdk_v4.0.2_jetson/samples/streams/sample_720p.h264
读取与保存,经过 nv 处理,支持pngenc ,jpegenc
gst-launch-1.0 filesrc location= samples/streams/sample_720p.jpg ! jpegparse ! nvv4l2decoder ! nvvideoconvert ! pngenc ! filesink location=rd4.png
gst-inspect-1.0 rtspsrc
...
Element Properties:
name : The name of the object
flags: readable, writable
String. Default: "rtspsrc0"
parent : The parent of the object
flags: readable, writable
Object of type "GstObject"
async-handling : The bin will handle Asynchronous state changes
flags: readable, writable
Boolean. Default: false
message-forward : Forwards all children messages
flags: readable, writable
Boolean. Default: false
location : Location of the RTSP url to read
flags: readable, writable
String. Default: null
protocols : Allowed lower transport protocols
flags: readable, writable
Flags "GstRTSPLowerTrans" Default: 0x00000007, "tcp+udp-mcast+udp"
(0x00000000): unknown - GST_RTSP_LOWER_TRANS_UNKNOWN
(0x00000001): udp - GST_RTSP_LOWER_TRANS_UDP
(0x00000002): udp-mcast - GST_RTSP_LOWER_TRANS_UDP_MCAST
(0x00000004): tcp - GST_RTSP_LOWER_TRANS_TCP
(0x00000010): http - GST_RTSP_LOWER_TRANS_HTTP
(0x00000020): tls - GST_RTSP_LOWER_TRANS_TLS
debug : Dump request and response messages to stdout(DEPRECATED: Printed all RTSP message to gstreamer log as 'log' level)
flags: readable, writable, deprecated
Boolean. Default: false
retry : Max number of retries when allocating RTP ports.
flags: readable, writable
Unsigned Integer. Range: 0 - 65535 Default: 20
timeout : Retry TCP transport after UDP timeout microseconds (0 = disabled)
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 5000000
tcp-timeout : Fail after timeout microseconds on TCP connections (0 = disabled)
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 20000000
latency : Amount of ms to buffer
flags: readable, writable
Unsigned Integer. Range: 0 - 4294967295 Default: 2000
drop-on-latency : Tells the jitterbuffer to never exceed the given latency in size
flags: readable, writable
Boolean. Default: false
connection-speed : Network connection speed in kbps (0 = unknown)
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551 Default: 0
nat-method : Method to use for traversing firewalls and NAT
flags: readable, writable
Enum "GstRTSPNatMethod" Default: 1, "dummy"
(0): none - None
(1): dummy - Send Dummy packets
...
可以根据对应的属性在代码中设置参数:
bin->src_elem = gst_element_factory_make ("rtspsrc", elem_name);
g_signal_connect (G_OBJECT(bin->src_elem), "select-stream",
G_CALLBACK(cb_rtspsrc_select_stream),
bin);
g_object_set (G_OBJECT (bin->src_elem), "location", config->uri, NULL);
g_object_set (G_OBJECT (bin->src_elem), "latency", config->latency, NULL);
g_object_set (G_OBJECT (bin->src_elem), "drop-on-latency", TRUE, NULL);
g_signal_connect (G_OBJECT (bin->src_elem), "pad-added",
G_CALLBACK (cb_newpad3), bin);
g_signal_connect (G_OBJECT (bin->src_elem), "pad-removed",
G_CALLBACK (cb_newpad4), bin);
参考:https://zhuanlan.zhihu.com/p/381788441