How to decode the PTS timestamps and extract the video frames
FFmpeg will, by default, remove the starting offset. To preserve it, add -copyts. 

The description of -vsync 0 isn't accurate and was written 8+ years ago: Each frame is passed with its timestamp from the demuxer to the muxer.. Video sync takes effect only once the frame has exited the decoder(+filtergraph) pipeline. But you should keep it to avoid dropping/duplicating frames.