【问题标题】:How to control the duration of a VideoWriter function in MatLab? [duplicate]如何在 MatLab 中控制 VideoWriter 函数的持续时间? [复制]
【发布时间】:2014-07-15 14:51:14
【问题描述】:

我正在使用 Matlab 代码使用 VideoWriter 函数录制视频文件。我想更改代码以仅录制视频文件的某个部分而不是整个视频。我可以使用什么命令仅记录以正常速度记录的数据的前 40 秒?我也想知道有没有办法可以只记录中间记录的数据的一小部分。

【问题讨论】:

  • 您知道视频中连续帧之间的间隔吗?如果是这样,那么您可以轻松测量 40 秒视频中有多少帧,并为您的录制设置限制。
  • 我使用不同的数据集,每次使用不同的帧速率/计数。所以我无法通过更改帧速率来解决它。
  • 为什么这个问题与this one you made yesterday 如此相似...编辑您的问题,而不是复制粘贴,几乎没有差异。
  • 同一个项目,但我在流程的不同阶段遇到了问题。首先,程序将数据写入视频文件,然后读取并修改它。所以不是同一个问题。

标签: matlab video duration video-recording


【解决方案1】:

可以添加if等条件语句来控制视频文件的写入。

或者,您可以将视频编写器函数包装到一个包装器中,该包装器接受您的实际数据和一个控制布尔值。

如果您的意思是要为具有不同帧速率的每个数据集记录 40 秒,那么采用帧速率和时间长度并自行计算帧数的包装函数可能会起作用。

如果您的意思是您经常更改数据集,这将添加一段视频,并且您希望它是 40 秒长,那么一个“全局”变量存储您录制的秒数,以及一个需要计算时间增量的函数。


已编辑 -

根据您提供的详细信息,您可能会发现这些是必要的,并且希望对您有所帮助。

  • 每个数据集的准确帧速率。
  • 要存储的变量(应该在您的控制函数/脚本中) 你已经有多少毫秒。
  • 执行以下工作的包装函数(并接受参数 相应地):

    1. 检查当前时间是否已经超过40,000毫秒(如果是,什么都不做并返回);
    2. 计算要添加的数据的时间周期(以毫秒为单位)=(要记录的帧数)/(每秒帧速率)* 1000;
    3. 调用视频编写器来记录您的数据集,可以逐帧记录,也可以一起记录;
    4. 将时间段添加到当前时间。

您可以通过使其能够在中间某处剪切一段数据系列来使其更精彩,例如,如果您已经有 34 秒的存档,则 10 秒的数据不会增加额外的 4 秒。

【讨论】:

  • 我的意思是每个数据集都有不同的帧速率。包装函数和 if 语句可以使用什么语法?
  • 您需要这些:a) 每个数据集的准确帧速率; b)一个变量(应该在您的控制函数/脚本中)来存储您已经拥有的秒数; c) 执行以下工作的包装函数(并相应地采用 arguments) - 1) 检查 current time 是否已经超过 40,000 毫秒(如果是,则返回); 2) 计算要添加的数据的时间周期(以毫秒为单位),要记录的帧数 / 帧速率 * 1000; 3) 调用视频编写器逐帧记录您的数据集; 4) 将时间段添加到当前时间
猜你喜欢
  • 2012-10-07
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 2014-01-24
  • 2020-12-30
相关资源
最近更新 更多