[FFmpeg-user] RTSP stream fps 29.97 instead of 30
Mark Thompson
sw at jkqxz.net
Tue Oct 3 03:56:53 EEST 2017
On 03/10/17 00:56, Jonathan Viney wrote:
> Hi,
>
> I am pulling an RTSP stream from an Axis 4K IP camera. The stream from the
> camera is 30fps, but the resulting stream from ffmpeg is 29.97fps. Here is
> the command:
>
> ffmpeg -rtsp_transport tcp -i rtsp://10.9.9.1:554/axis-media/media.amp
> -loglevel debug
>
> The rtsp log shows a framerate of 30:
>
> a=framerate:30.000000
>
> The full log output is below. Is there a way to force the framerate to 30
> fps?
>
> This video undergoes a second pass where it gets re-encoded, so we could
> adjust the frame rate there if necessary. But it would be preferable for it
> to be right at this step.
>
> ...
> [rtsp @ 0x40d0d80] SDP:
> v=0
> o=- 8374289283112756277 1 IN IP4 10.9.9.1
> s=Session streamed with GStreamer
> i=rtsp-server
> t=0 0
> a=tool:GStreamer
> a=type:broadcast
> a=range:npt=now-
> a=control:rtsp://10.9.9.1:554/axis-media/media.amp
> m=video 0 RTP/AVP 96
> c=IN IP4 0.0.0.0
> b=AS:240000
> a=rtpmap:96 H264/90000
> a=fmtp:96
> packetization-mode=1;profile-level-id=640033;sprop-parameter-sets=Z2QAM6w0yAPABD/8BbgICAoAAAfSAAHUwdDAAGP/gAAMf+Nd5caGAAMf/AAAY/8a7y4b04A=,aO48MA==
This SPS in the SDP decodes with:
@126 VUI: timing_info_present_flag 1 ( 1)
@127 VUI: num_units_in_tick 00000000000000000000001111101001 (1001)
@159 VUI: time_scale 00000000000000001110101001100000 (60000)
@191 VUI: fixed_frame_rate_flag 1 ( 1)
That is, the H.264 stream indeed has a fixed framerate of 60000/1001/2 ~ 29.97fps, and that is what ffmpeg is reading - the RTSP layer is likely lying about it. (You may be able to count frames to check that.)
If you want an exactly 30fps output then you should tell the camera to generate a 30fps stream rather than the 30000/1001fps it currently is.
- Mark
More information about the ffmpeg-user
mailing list