Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU)
GPU
• DeepStream Version
7.1
• JetPack Version (valid for Jetson only)
• TensorRT Version
• NVIDIA GPU Driver Version (valid for GPU only)
566.03
• Issue Type( questions, new requirements, bugs)
bugs
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)
Environment
- Using GStreamer with NVIDIA DeepStream plugins
- Pipeline involves nvmultiurisrcbin/nvurisrcbin/nvstreammux with HLS streams
Issue Description
When using nvmultiurisrcbin/nvurisrcbin/nvstreammux with HLS streams, timing and playback issues occur, including pipeline freezing, depending on the configuration of live-source
, max-batch-size
and sync
parameters.
Working Configuration without nvmultiurisrcbin/nvurisrcbin
The following pipeline works correctly:
gst-launch-1.0 souphttpsrc location=<redacted> ! hlsdemux ! decodebin ! videoconvert ! autovideosink
Note: the test URL(m3u8) can be shared privately with NVIDIA support team.
Problem Scenarios
Failed Pipeline Example
gst-launch-1.0 nvmultiurisrcbin \
port=9000 ip-address=localhost \
batched-push-timeout=33333 max-batch-size=2 \
drop-pipeline-eos=1 live-source=1 \
uri-list=<redacted> width=720 height=480 \
! nvmultistreamtiler width=720 height=480 ! nveglglessink sync=0
Working but Restricted Pipeline
gst-launch-1.0 nvmultiurisrcbin \
port=9000 ip-address=localhost \
batched-push-timeout=33333 max-batch-size=1 \
drop-pipeline-eos=1 live-source=0 \
uri-list=<redacted> width=720 height=480 \
! nvmultistreamtiler width=720 height=480 ! nveglglessink sync=1
Scenario 1: live-source=1 with max-batch-size >= num_source
-
Configuration:
nvmultiurisrcbin live-source=1 max-batch-size=3 nveglglessink sync=0
source=1
-
Result: PTS is not respected
-
Issue: Video plays ~1.5x faster and freezes at the next segment
Scenario 2: live-source=1 with max-batch-size = num_source
-
Configuration:
nvmultiurisrcbin live-source=1 max-batch-size=1 nveglglessink sync=0
source=1
-
Result: PTS is not respected
-
Issue: Video plays ~3.5x faster and freezes at the next segment
Scenario 3: live-source=0 with max-batch-size > num_source
-
Configuration:
nvmultiurisrcbin live-source=0 max-batch-size=5 nveglglessink sync=1
source=1
-
Result: Similar timing issues
-
Issue: Video plays ~1.5x faster and freezes
Working but Limited Scenario
-
Configuration:
live-source=0
withmax-batch-size=num_source
andnveglglessink sync=1
-
Result: Works correctly
-
Limitation: According to documentation, we need
live-source=1
for dynamic pipelines (adding/removing sources on demand)
Documentation Reference
The documentation states that live-source=1
is required for dynamic pipelines:
“live-source need to be turned ON to allow batching of available buffers when number of sources is < max-batch-size configuration.”
Impact
-
This bug prevents the proper use of nvmultiurisrcbin with HLS streams in dynamic pipeline scenarios where sources need to be added or removed on demand.
-
Users are forced to use
sync=1
in the sink becauselive-source=0
causes PTS (Presentation Time Stamps) to be disregarded, resulting in incorrect playback timing -
This creates a conflicting situation where:
-
Using
live-source=0
requiressync=1
to maintain proper timing -
But dynamic pipelines require
live-source=1
according to documentation -
When using
live-source=1
, the PTS timing issues occur regardless of sync settings
Expected Behavior
The pipeline should maintain correct playback speed and timing when using live-source=1 max-batch-size > num_sources and sync=0
with HLS streams, allowing for dynamic source management while respecting PTS timing.