(using JetPack 28.2.1)
i’ve succeeded to create “intra-refresh” streaming, by configuring pipeline (part of) “iframeinterval=-2 SliceIntraRefreshInterval=90 SliceIntraRefreshEnable=true”
and i can see that stream’s bitrate behavior over time is good (using Wireshark) - the only problem is that if i’m using vlc for example, to decode the streaming video - it succeeded only if i start it before the start of the streaming.
should i configure anything else in the encoder level (sps, sei ?) so vlc (and other decoders) would be able to play the “intra-refresh” stream?
Generally decoding begins from receiving first IDR frames. For streaming, we would suggest encode periodic IDR frames.
you are right, when i’m encoding IDR frames into the stream - it works fine,
BUT i used “SliceIntraRefresh” mode from the start, in order to have the stream as much CBR as one can get - inserting IDR frame here and there - can disturb my network.
As i understand it, “Intra refresh” mode, should be seen at the stream as a periodic “refresh wave”, where the sequence of P-frames contain intra-coded slices (- hence, the decoder “understand” it and can create a whole picture using this “wave”).
Am I wrong here? what should i expect when using SliceIntraRefreshEnable=true in the bitstream?
If SliceIntraRefreshEnable=true is set, it encodes stream like:
IDR P P P ... I P P P ... I P P P ...
Does not encode the stream as a periodic wave.
If you use r28 release, please try to set the properties: vbv-size EnableTwopassCBR=true EnableStringentBitrate=true.
There are reference commands in gstreamer user guide:
I have tried your suggestions, and it slightly improves the bitstream over time, but I’m still having problem with I frames size - in that manner, there isn’t any difference in size between I frames and IDR.
- using r28 release, is there a way to make the stream be more “Intra Refresh” (periodic wave)?
- can I have this capability in newer release?
- I saw some advices to use “gdr” commands, is there a way to exposed it into Gstreamer encoder?