我正在使用ffmpeg
分段视频流,我想ffmpeg
用创建日期/时间戳来命名分段文件。
这可能吗?
假设我有 30 秒的视频片段:0000.flv
,,,等等0001.flv
0002.flv
当我ffprobe
对每个视频片段进行操作时,我“正确地”得到了 30 秒,这很好。
然而,每个文件都有一个我可以读取的“最后修改时间”/“创建时间”,当我减去0001.flv
(修改时间) - 0000.flv
(修改时间)时,我得到的结果为 29 秒。
视频时长为 30 秒,但创建日期和最后修改日期之间的时间间隔为 29 秒!
如果片段时间为 600 秒,则创建日期或上次修改日期之间的时间为 591 秒!因此,根据文件系统,它缺少 9 秒,但视频确实是 600 秒。
这是一个大问题——有人可以帮忙吗?
这是我的命令行:
ffmpeg = spawn('ffmpeg', [
'-loglevel', 'quiet',
'-r', '20',
'-i', 'pipe:0',
'-vcodec', 'copy',
'-f', 'segment',
'-segment_time', '30',
dataDir + '/' + '%04d.flv'
]);
此外,当 ffmpeg 写入片段时,文件没有“出生时间”,并且“创建”和“修改”时间始终相同...所以我永远无法知道文件的实际创建时间,除非我使用“debugfs”(在 sudo 模式下)深入挖掘......
我想要的是 ffmpeg 在创建片段时在文件名中添加时间戳,为什么这看起来没什么用?我认为从实时源捕获时间时它非常有用...
我没有编码 - 请不要再认为这是编码...我知道转码需要更长的时间并导致时间延迟...
根据我的观察,进行编解码器复制时,当我的视频时长为 600 秒时,片段之间的“最后修改时间”仅为 591 秒......所以我实际上是在浪费时间......
但我知道这不是一个可靠的时间戳 - 所以我要求一种从 ffmpeg 获取更可靠时间戳的方法,而不是使用无法给我可靠时间戳的“stat”命令......
是的 - 我的相机以 20 fps 的速度拍摄 :)