如何使 ffmpeg 片段文件名具有创建时间

如何使 ffmpeg 片段文件名具有创建时间

我正在使用ffmpeg分段视频流,我想ffmpeg用创建日期/时间戳来命名分段文件。

这可能吗?

假设我有 30 秒的视频片段:0000.flv,,,等等0001.flv0002.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 的速度拍摄 :)

相关内容