gpt4 book ai didi

ffmpeg - 使用 ffmpeg 同步文件时间戳

转载 作者:行者123 更新时间:2023-12-04 22:52:19 26 4
gpt4 key购买 nike

我正在通过采集卡从与 HDMI 连接的 4 个摄像头采集视频。我正在使用 ffmpeg 将来自摄像机的视频源保存到多个 jpeg 文件(每台摄像机每秒 30 jpeg)。

我希望能够使用捕获时间保存图像。目前我正在为一台相机使用这个命令:

ffmpeg -f video4linux2 -pixel_format yuv420p -timestamps abs -I/dev/video0 -c:a jpeg -t 60 -ts_from_file 2 camera0-%5d.jpeg

它使用名称 camera0-00001.jpg、camera0-00002.jpg 等保存我的文件。

然后我根据文件的修改时间用 camera0-HH-mm-ss-(1-30).jpeg 重命名我的文件。

所以最后我有4个文件具有相同的时间和相同的帧,如下所示:
相机0-12-00-00-1.jpeg
camera1-12-00-00-1.jpeg
camera2-12-00-00-1.jpeg
camera3-12-00-00-1.jpeg

我的问题是文件可能从一帧偏移到两帧。它们可能具有相同的名称,但有时一个或两个相机可能会显示不同的帧。

有没有办法确保捕获帧具有捕获的实际时间而不是创建文件的时间?

最佳答案

您可以使用 mkvtimestamp_v2 复用器

ffmpeg -f video4linux2 -pixel_format yuv420p -timestamps abs -copyts -i /dev/video0 \
-vf setpts=PTS-STARTPTS -vsync 0 -vframes 1800 camera0-%5d.jpeg \
-c copy -vsync 0 -vframes 1800 -f mkvtimestamp_v2 timings.txt

Timings.txt 会有这样的输出
# timecode format v2
1521177189530
1521177189630
1521177189700
1521177189770
1521177189820
1521177189870
1521177189920
1521177189970
...

其中每个读数是以毫秒为单位的 Unix 纪元时间。

我已经切换到输出帧数限制来停止进程而不是 -t 60 .您可以使用 -t 60对于第一个输出,因为我们在那里重置时间戳,但不是第二个。如果这样做,请记住只使用文本文件中的前 N ​​个条目,其中 N 是生成的图像数。

关于ffmpeg - 使用 ffmpeg 同步文件时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49287744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com