【发布时间】:2014-02-11 07:43:36
【问题描述】:
我正在使用命令行中的 ffmpeg 从网络摄像头捕获到文件,使用以下内容:
ffmpeg -y -rtbufsize 702000k -f dshow -s 320x240 -r 25 -i video="<device name>" -t 10 -vcodec mjpeg -q:v 2 out.mp4
在执行命令和开始捕获之间有一点延迟(~0.5 秒)。 我正在尝试找到一种方法来准确确定捕获的开始时间 (UTC/GMT)。
我最初的想法是使用文件创建时间,因为这可能准确反映第一帧的编码时间(而不是执行命令的时间)。不幸的是,文件创建时间仅精确到秒,这不够精确(我不确定这是否会给出准确的结果)。
我的下一个想法是使用 ffmpegs 时间戳选项。根据文档(http://www.ffmpeg.org/ffmpeg.html):
'-timestamp时间(输出)'
Set the recording timestamp in the container. The syntax for time is: now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...])|(HHMMSS[.m...]))[Z|z])如果值为“现在”,则需要当前时间。时间为当地时间,除非“Z”或 附加了“z”,在这种情况下,它被解释为 UTC。如果年月日部分 未指定取当前年月日。
所以我添加了选项:
ffmpeg -y -rtbufsize 702000k -f dshow -s 320x240 -r 25 -i video="<device name>" -t 10 -vcodec mjpeg -q:v 2 -timestamp now out.mp4
不幸的是 ffmpeg 似乎不是这样的:
选项时间戳(设置录制时间戳('现在'设置 当前时间)) 不能应用于输出文件 out.mp4 - 你是 尝试将输入选项应用于输出文件,反之亦然。移动 这个选项在它所属的文件之前。
输出文件 out.mp4 的错误解析选项。
打开输出文件时出错:出现错误号 -22
文档说 -timestamp 是一个输出选项,它似乎应用于输出文件,所以我对这个错误感到困惑。
谁能提出一种准确确定捕获开始时间的方法?
有人知道为什么 -timestamp 选项会出错吗?
【问题讨论】:
-
所以你想计算出第一帧的挂钟时间?我想您可以将时间戳添加到帧中作为叠加层...stackoverflow.com/q/12293853/32453 可能是相关的
-
@rogerdpack '所以你想弄清楚第一帧的挂钟时间?' - 是的,准确的 - 精确到几帧。该命令是从一个脚本调用的,该脚本需要知道这个时间以进行后续处理。在图像上覆盖时间并没有帮助,因为脚本无法使用它。
-
没有太多的想法,尽管您可以添加“showinfo”过滤器,然后轮询以查看何时将第一帧添加到其输出文件中...我可能建议重新询问在 FFmpeg 邮件列表中...
-
当 FFmpeg 首次启动时,它会吐出诸如“开始时间”之类的流信息,可能会使用它...
-
嗨@Adam。我正在尝试实现类似的目标:我录制音频并希望有时间戳,至少在开始时。你成功了吗?
标签: ffmpeg