- ubuntu 18.04 rootfs
- JP 4.6.2 (32.7.2)
- TX2 on a CTI spacely using CTI BSP on top of NVIDIA BSP (as instructed)
- Deepstream 6.0.1 installed
Most examples and question on this forum apply to following typical flow:
- Single process
- Creates a single pipeline
- Runs the pipeline forever until it stops for whatever reason
- process terminates
- restart process if required …
This is mostly applicable for people using gst-launch and such.
In my case I’m doing the following:
- Single process (C app)
- Up to 20 pipelines (1 thread per pipeline)
→ 8x analog inputs (Intersil TW6869 capture card)
→ 8x network inputs (RTSP, youtube … doesn’t matter)
→ 4x usb camera input (webcams and such)
Each thread is responsible for creating & destroying it’s pipeline based on user config.
The Analog and USBcam inputs use v4l2src source element.
So this approach only works sometimes …
The main issues here is Argus daemon.
Starting the threads mostly result in Argus errors all over the place:
Snippet below was when simply starting all analog inputs 1 by 1 serialized with a 30 sec gap between each start to properly investigate:
root@000C8B920897:/home/ncentric# ./ncss2/ncss2 -S
Using default vserver config: /etc/ncentric/ncss/vserver.conf
Using default sserver config: /etc/ncentric/ncss/sserver.conf
Using default sclient config: /etc/ncentric/ncss/sclient.conf
Detected GStreamer version 1.14.5
RTSP: Attached mount: rtsp://0.0.0.0:554/analog1
Starting stream analog1
RTSP: Attached mount: rtsp://0.0.0.0:554/analog2
Starting stream analog2
RTSP: Attached mount: rtsp://0.0.0.0:554/analog3
Starting stream analog3
RTSP: Attached mount: rtsp://0.0.0.0:554/analog4
Starting stream analog4
RTSP: Attached mount: rtsp://0.0.0.0:554/analog5
Starting stream analog5
RTSP: Attached mount: rtsp://0.0.0.0:554/analog6
Starting stream analog6
RTSP: Attached mount: rtsp://0.0.0.0:554/analog7
RTSP: Attached mount: rtsp://0.0.0.0:554/analog8
Starting stream analog7
Starting stream analog8
RTSP server started on port 554
Config: Watch Started
apiv2: Thread Started
apiv2: Starting HTTP server on port 8000
analog1: using device /dev/video0 "tw6869"
analog1: local: Using encoder: nvv4l2h264enc
analog1: shore: Using encoder: nvv4l2h265enc
Opening in BLOCKING MODE
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 4
NvMMLiteOpen : Block : BlockType = 8
===== NVMEDIA: NVENC =====
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 8
NvMMLiteBlockCreate : Block : BlockType = 4
H264: Profile = 100, Level = 0
NVMEDIA: H265 : Profile : 1
NVMEDIA_ENC: bBlitMode is set to TRUE
NVMEDIA_ENC: bBlitMode is set to TRUE
analog2: using device /dev/video1 "tw6869"
analog2: local: Using encoder: nvv4l2h264enc
analog2: shore: Using encoder: nvv4l2h265enc
Opening in BLOCKING MODE
Opening in BLOCKING MODE
Opening in BLOCKING MODE
(Argus) Error FileOperationFailed: Connecting to nvargus-daemon failed: Connection refused (in src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error FileOperationFailed: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)
ArgusV4L2_Open failed: Connection refused
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 8
NvMMLiteOpen : Block : BlockType = 4
===== NVMEDIA: NVENC =====
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
NvMMLiteBlockCreate : Block : BlockType = 8
NVMEDIA: H265 : Profile : 1
H264: Profile = 100, Level = 0
NVMEDIA_ENC: bBlitMode is set to TRUE
NVMEDIA_ENC: bBlitMode is set to TRUE
analog3: using device /dev/video2 "tw6869"
analog3: local: Using encoder: nvv4l2h264enc
analog3: shore: Using encoder: nvv4l2h265enc
Opening in BLOCKING MODE
Opening in BLOCKING MODE
Opening in BLOCKING MODE
(Argus) Error FileOperationFailed: Connecting to nvargus-daemon failed: Connection refused (in src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error FileOperationFailed: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)
ArgusV4L2_Open failed: Connection refused
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 4
NvMMLiteOpen : Block : BlockType = 8
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 8
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
NVMEDIA: H265 : Profile : 1
H264: Profile = 100, Level = 0
NVMEDIA_ENC: bBlitMode is set to TRUE
NVMEDIA_ENC: bBlitMode is set to TRUE
analog4: using device /dev/video3 "tw6869"
analog4: local: Using encoder: nvv4l2h264enc
analog4: shore: Using encoder: nvv4l2h265enc
Opening in BLOCKING MODE
Opening in BLOCKING MODE
Opening in BLOCKING MODE
(Argus) Error FileOperationFailed: Connecting to nvargus-daemon failed: Connection refused (in src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error FileOperationFailed: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)
ArgusV4L2_Open failed: Connection refused
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 4
NvMMLiteOpen : Block : BlockType = 8
===== NVMEDIA: NVENC =====
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
NvMMLiteBlockCreate : Block : BlockType = 8
H264: Profile = 100, Level = 0
NVMEDIA: H265 : Profile : 1
NVMEDIA_ENC: bBlitMode is set to TRUE
NVMEDIA_ENC: bBlitMode is set to TRUE
analog5: using device /dev/video4 "tw6869"
analog5: local: Using encoder: nvv4l2h264enc
analog5: shore: Using encoder: nvv4l2h265enc
Opening in BLOCKING MODE
Opening in BLOCKING MODE
Opening in BLOCKING MODE
(Argus) Error FileOperationFailed: Connecting to nvargus-daemon failed: Connection refused (in src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error FileOperationFailed: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)
ArgusV4L2_Open failed: Connection refused
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 8
===== NVMEDIA: NVENC =====
NvMMLiteOpen : Block : BlockType = 4
NvMMLiteBlockCreate : Block : BlockType = 8
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
NVMEDIA: H265 : Profile : 1
H264: Profile = 100, Level = 0
NVMEDIA_ENC: bBlitMode is set to TRUE
NVMEDIA_ENC: bBlitMode is set to TRUE
Can Argus Daemon handle multiple connection properly?
Is this usecase tested within nvidia or is the focus solely on the avg user case of a single process with a single pipeline using gst-launch?
It’s pretty easy to simulate …