首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图从RTSP相机中获取具有ffmpeg的帧时间戳

试图从RTSP相机中获取具有ffmpeg的帧时间戳
EN

Stack Overflow用户
提问于 2022-05-24 14:58:42
回答 1查看 1.1K关注 0票数 0

我正试图使用rstp流和它们检索摄像机每帧的时间戳。为了进行记录,我使用以下命令行,它是工作的:

代码语言:javascript
复制
ffmpeg
-correct_ts_overflow 0
-probesize 1G
-analyzeduration 1G
-i rtsp://user:password@ip:port
-vcodec copy
-bsf:v h264_mp4toannexb
-bufsize 10M
-acodec copy
-f ssegment
-segment_list_flags live
-segment_atclocktime 1
-reset_timestamps 1
-write_empty_segments 1
-segment_time 15
-segment_list C:\Video\Delivery\ffmpeg\list.video
-segment_list_type csv
-strftime 1 "C:\Video\Delivery\ffmpeg\%%Y%%m%%d_%%H-%%M-%%S.ts"

对于某些实用工具,我希望能够在接收到帧时检索机器的时间戳,因此通过搜索位,我在'-mkvtimestamp_v2‘上找到了不同的帖子。就像下面这样,用相机单独尝试一下:

代码语言:javascript
复制
ffmpeg
-copyts ^
-correct_ts_overflow 0 ^
-probesize 1G ^
-analyzeduration 1G ^
-i rtsp://user:password@ip:port
-c copy
-pix_fmt yuv420p
-flush_packets 1
-vframes 10
-reset_timestamps 1
-timestamp now
-copyts
-f mkvtimestamp_v2 timestamp.txt
-vsync 0

它工作得很完美。

但是,从我尝试用以下命令同时记录和检索时间戳的那一刻起:

代码语言:javascript
复制
ffmpeg
-use_wallclock_as_timestamps 1
-correct_ts_overflow 0
-probesize 1G
-analyzeduration 1G
-i rtsp://user:password@ip:port
-vcodec copy
-bsf:v h264_mp4toannexb
-bufsize 10M
-acodec copy
-f ssegment
-segment_list_flags live
-segment_atclocktime 1
-reset_timestamps 1
-write_empty_segments 1
-segment_time 15
-segment_list C:\Video\Delivery\ffmpeg\list.video
-segment_list_type csv
-strftime 1 "C:\Video\Delivery\ffmpeg\%%Y%%m%%d_%%H-%%M-%%S.ts"
-copyts
-vcodec copy
-flush_packets 1
-f mkvtimestamp_v2 log.txt
-vsync 0

我得到了很多:Non-monotonous DTS in output stream 0:0警告。在记录的时间戳和实时时间戳之间,我平均也有一分钟的延迟。录制的第一个视频在这样的视频播放器上有一个窃听的计时器:这里

我试过把命令按不同的顺序排列,但我没有得到任何结论.

所以,如果你有任何想法,这将是一个很大的帮助!

我在Windows 10上工作,我使用ffmpeg-3.4.1。

真诚地,

杰伦

EN

Stack Overflow用户

回答已采纳

发布于 2022-06-12 00:14:35

我通过将第二个输出连接到另一个ffmpeg实例来解决这个问题。我认为这是因为第二个ffmpeg将放弃-use_wallclock_as_timestamps 1添加的时间戳偏移量,并将偏移量重置为0。

代码语言:javascript
复制
ffmpeg -use_wallclock_as_timestamps 1 -i rtsp://@ip:port -c copy -copyts -y -f mkvtimestamp_v2 timestamps.txt -vsync 0 -c copy -f mpegts - | ffmpeg -f mpegts -i - -c copy -f segment output-segment-%d.mp4

然而,这个解决方案的另一个问题是,如果RTSP删除了一些帧,那么mkvtimestamp_v2文件将跳过一些时间值,因此很难将这些段与timestamps.txt文件关联起来。

因此,我解决了这个问题,我将挂钟时间戳嵌入到各个片段中。

代码语言:javascript
复制
ffmpeg -use_wallclock_as_timestamps 1 -i rtsp://@ip:port -c copy -copyts -vsync passthrough -f segment -segment_time 10 out%d.mp4

然后,我可以运行的每一段后,了解他们的实际开始时间的不同探针。(相对于系统时钟)。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72365169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档