如何在c++中录制具有精确帧时间戳的视频
How to record video with exact frames timestamp in c++
我想用c++录制相机的帧。相机帧速率不是恒定的,我需要存储每个图像及其时间戳(我使用操作系统时钟,并存储图像毫秒精度(。我已经将捕获的图像存储为一系列图像文件,但独立存储的图像(如.png(太重(因为我处理的是长序列,而且它们很多(。因此,我想利用连续图像之间的相似性(作为视频压缩技术(,创建一个利用这一事实的无损视频。然后,我想使用这个视频来单独提取图像,以保存时间戳。
换句话说,我只是使用视频格式来压缩图像序列(而不会丢失信息(,但我需要跟踪捕获图像时的确切时间戳。
所以我的问题是:如何以无损格式使用每帧的确切时间戳在视频中记录相机的流媒体
我一直在尝试使用OpenCV库,尤其是VideoWriter类。然而,VideoWriter接口不提供任何将帧和时间戳作为输入的方法。
我的另一个选择是将每一帧的时间戳与录制的视频一起存储在一个单独的txt文件中。然后,我可以使用时间戳从视频中检索帧。然而,我不确定我是否会检索到确切的帧,这是没有任何信息插值的。
提前感谢
格式必须是可移植的吗?
如果没有,这里有一个想法:将一堆图片中的像素交错排列(数字可能会随着时间的推移而变化,具体取决于变化的大小(。
因此,在你的文件中有N张图片的区块将包含:
N: the number of pictures in the chunk
timestamp 1: from picture 1
timestamp 2: from picture 2
...
timestamp N: from picture N
pixel 1: from picture 1, pixel 0,0
pixel 2: from picture 2, pixel 0,0
...
pixel N: from picture N, pixel 0,0
pixel N+1: from picture 1, pixel 0,1
pixel N+2: from picture 2, pixel 0,1
...
pixel N*X*Y: from picture N, pixel X-1,Y-1
然后使用无损压缩库来压缩块(现在包含一个3D图像(,然后继续下一个块。
也许已经有小波/fft库能够实现类似的功能。
相关文章:
- 如何在c++中录制具有精确帧时间戳的视频
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 以天C++为单位的两个时间戳之间的差异
- 获取 QInputEvent 在 Qt 4.8 中被放入 QEventLoop 队列时的时间戳
- 如何从远程 SFTP 服务器获取 HH-MM-SS 时间戳格式的文件列表
- 将时间戳打印到流的最简单方法
- C++程序中多个位置的时间 (0) 时间戳
- 在 c++ 中获取 X 毫秒前的时间戳
- 如何将WSTRING中的Unix时间戳转换为char数组中格式的日期
- 如何在不使用Chrono的情况下在C 中获取纳米秒的当前时间戳
- C 将没有时区域区域区域的Postgres时间戳转换为Time_T
- 在unix/win32上高效计算用于日志记录的日期/时间戳
- 如何以毫秒为单位获取自 1970 年以来的当前时间戳,就像 Java 一样
- 编辑后保留文件的旧时间戳
- 在C++中可移植精度良好的双时间戳
- C++将修改后的MySQL时间戳存储为字符串
- 获取从epoch开始以微秒为单位的当前时间戳
- 获取带有C++的 Unix 时间戳
- 最接近地图的字符串/时间戳
- 如何在c++中获得1970年以来的当前时间戳