【问题标题】:Working with videos on a frame by frame basis逐帧处理视频
【发布时间】:2018-04-27 09:34:08
【问题描述】:

JavaFX 中有没有一种方法可以处理框架,例如从加载的视频中提取帧?

我所说的使用框架是什么意思?当某个帧出现时触发动作,例如使用画布在视频顶部显示字幕或弹出窗口。 或者到达视频中的某个帧,尽管这可能可以使用时间索引来完成(就像上面一样,在时间索引被命中时触发动作。)

另外,是否可以使用 JavaFX 创建以下 youtube 功能?

  • 字幕
  • 时间轴上的标记,将鼠标悬停在此类标记上并显示叠加内容
  • 叠加层(链接、cmets 等)
  • 质量等级调整
  • 速度调整

以及 youtube 中没有的功能:

  • 提取序列,丰富其他内容,添加到时间线中
  • 提取评论它们的帧,将它们重新添加到视频序列中(可能以这样的方式添加序列,即序列可以一个接一个地添加,将原始序列切割成更小的片段并插入一个像这样的序列 123 --> 12new3

【问题讨论】:

  • 这里的第一个问题是完全合理的(即使答案是否定的)——第二个问题完全不相关,并且对于目前的措辞完全没有意义。
  • 也许问题一和问题二之间缺少一点胶水,问题二是为了回答我是否可以实现与 youtube 使用 JavaFX 相同的功能集。也许我应该以这种方式重新表述问题 2。我的想法是,有些功能只有在我逐帧访问时才能实现。
  • 这很好,但是您需要重新表述,询问 Youtube 有哪些您想要实现的特定功能。只是询问您是否可以实现与 Youtube 相同的功能集仍然很广泛。

标签: video javafx frame video-processing


【解决方案1】:

JavaFX 中有没有一种方法可以处理框架,例如从加载的视频中提取帧?

不,没有 - JavaFX 媒体支持非常有限。如果您想以某种受支持的格式加载视频并在 JavaFX 场景中播放,那么您就可以开始了。您可以在视频播放器中执行您期望的“正常”操作,因此您可以暂停、停止、搜索、静音等,但仅此而已。

或者到达视频中的某个帧,尽管这可能可以使用时间索引来完成

是的,您可以使用时间索引(查看 MediaPlayer 上的 currentTimeProperty()。)这是您在 JFX 级别执行此操作的唯一明智方法。

如果你想更进一步,你将不得不直接使用 GStreamer 框架(或其他一些原生框架)。如果您想进行帧级视频提取,我以前会推荐 Xuggler,但现在几年来一直不受支持。

【讨论】:

    猜你喜欢
    • 2015-08-28
    • 2015-06-12
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2012-12-31
    相关资源
    最近更新 更多