[vlc-devel] Invalid DTS in RTSP stream (Axis camera)
Jeremy Vignelles
jeremy.vignelles at dev3i.fr
Mon Oct 9 16:04:50 CEST 2017
Hi,
I have a video camera that I'd like to record using the following command line:
./vlc -vv --rtsp-tcp --sout="#std{access=file,mux=ts,dst=/home/user/Desktop/rec.ts}" rtsp://192.168.0.3/axis-media/media.amp
However VLC is stuck in an infinite loop and even after closing the window, it doesn't stops.
After digging into the code, I found that DTS = 0 all the time, which causes that hang.
That invalid DTS is set by this piece of code:
/*FIXME: for h264 you should check that packetization-mode=1 in sdp-file */
switch( tk->fmt.i_codec )
{
case VLC_CODEC_MPGV:
case VLC_CODEC_H264:
case VLC_CODEC_HEVC:
case VLC_CODEC_VP8:
p_block->i_dts = VLC_TS_INVALID;
break;
default:
p_block->i_dts = VLC_TS_0 + i_pts;
break;
}
Commenting out `VLC_CODEC_H264` does what I want.
This code has been introduced in may (fcb7347 by fcartegnie), and I'm sure it's there for a good reason. Could you tell me why? How can I fix my issue?
I have then been distracted by the `FIXME` comment above. The original commit said:
it seems that most of h264 streams are
with packetization-mode=1 eg. in decoding order (thou it should be
checked here, and FIXME is for that).
Should we keep that assumption or should we replace that, and check for that at initialization?
sub->attrVal_bool("packetization-mode")
`b_packetized` is set to false. What's its purpose? Should we set this to `true` if `packetization-mode == 1` ?
Last question:
tk->fmt.p_extra is set but never seems to be used, at least not by the access_demux. What is it used for?
More information about the vlc-devel
mailing list