相关疑难解决方法(0)

ffmpeg可以刻录时间码吗?

我需要将时间代码刻录到视频中,并且想知道这是否是ffmpeg能够做到的事情?

c# ffmpeg video-processing timecodes

16
推荐指数
3
解决办法
2万
查看次数

准确的FFmpeg捕获开始时间

我从命令行使用 ffmpeg 使用以下命令从网络摄像头捕获到文件:

ffmpeg -y -rtbufsize 702000k -f dshow -s 320x240 -r 25 -i video="<device name>" -t 10 -vcodec mjpeg -q:v 2 out.mp4
Run Code Online (Sandbox Code Playgroud)

执行命令和开始捕获之间有轻微的延迟(~0.5 秒)。我试图找到一种方法来准确确定捕获的开始时间 (UTC/GMT)。

我最初的想法是使用文件创建时间,因为这可能会准确反映第一帧的编码时间(而不是执行命令的时间)。不幸的是,文件创建时间只精确到秒,这不够精确(而且我不确定这是否会给出准确的结果)。

我的下一个想法是使用 ffmpegs 时间戳选项。根据文档(http://www.ffmpeg.org/ffmpeg.html):

'-时间戳时间(输出)'

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])
Run Code Online (Sandbox Code Playgroud)

如果值为“now”,则表示当前时间。时间是本地时间,除非附加了“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
Run Code Online (Sandbox Code Playgroud)

不幸的是 ffmpeg 似乎不喜欢这样:

选项时间戳(设置录制时间戳(“现在”以设置当前时间))不能应用于输出文件 out.mp4 - 您正在尝试将输入选项应用于输出文件,反之亦然。将此选项移动到它所属的文件之前。

解析输出文件 …

ffmpeg

7
推荐指数
1
解决办法
3462
查看次数

标签 统计

ffmpeg ×2

c# ×1

timecodes ×1

video-processing ×1