将当前时间添加为几帧的H.264原始流中的时间戳

问题描述 投票:0回答:1

我有一个程序会发出H.264原始流(在Android上为screenrecord)。我正在使用FFmpeg在帧上添加PTS(演示时间戳记),如下所示:

$ my-program | ffmpeg -i - -filter:v setpts='(RTCTIME - RTCSTART) / (TB * 1000000)' out.mp4

此过滤器计算当前时间,并将其作为PTS。

麻烦的是,如果视频没有任何变化,my-program不会产生任何输出。由于FFmpeg似乎要等待一堆帧才能通过setpts过滤器,因此计算出的PTS将不正确。特别是,下一个序列开始时,序列的最后一帧将带有时间戳。

是否有一种方法(使用FFmpeg或其他方法)将当前时间作为PTS添加到H.264原始帧中,其中“当前时间”是在接收帧时而不是将其输出?

注:问题是not来自管道的缓冲。

ffmpeg timestamp video-streaming h.264 video-capture
1个回答
1
投票

您可以更早地分配时间戳,让setpt只需将其标准化为从0开始。

 my-program | ffmpeg -use_wallclock_as_timestamps 1 -i - -filter:v setpts='PTS-STARTPTS' out.mp4

[-use_wallclock_as_timestamps在接收数据包时由libavformat框架分配。

© www.soinside.com 2019 - 2024. All rights reserved.