I am receiving an HEVC encoded live stream that contains SMPTE 12-1 timecode in the SEI picture timing, as it is recommended in ITU-T Rec-H.265-202108 Annex D.3.3 Picture timing SEI message semantics. I want to copy this timecode to a new timecode stream in an MXF Container, according to EBU – Recommendation R 122.
I can use the command ffprobe -i input.ts -show_frames
to see the timecode information of each frame in a recording of such a stream:
TAG:timecode=09:06:19:01
[SIDE_DATA]
side_data_type=SMPTE 12-1 timecode
[TIMECODE]
value=09:06:19:01
[/TIMECODE]
[/SIDE_DATA]
But I have not found any way to access the SEI messages with FFmpeg. I already did a lot of research and tried playing around with things like:
-copytb 1
, -timecode 00:00:00:00
or -map_metadata 0:s:0
without any luck. The only thing about SEI that I could find in the FFmpeg docs is the sei_user_data
, which is only used for insertion.
Is there any way to achieve this with FFmpeg and without writing C/C++ (or any other) code around libav*?