【问题标题】:Is there a way to play back the video有没有办法播放视频
【发布时间】:2023-03-16 21:42:01
【问题描述】:

我在 html 文件中有一个视频元素,但我想反向播放视频。有没有办法做到这一点?

<video src="images/1.mp4" id="video1" poster="images/1.jpg" muted preload playsinline -webkit-playsinline x5-playsinline></video>

顺便说一句,我可以通过将每一帧绘制到画布中然后播放画布来做到这一点,但这不是一个好方法,有没有更好的方法?

【问题讨论】:

  • 播放是指自动播放吗?如果是,您只需将自动播放属性添加到视频标签即可。如果您想随意播放或暂停视频,您可以使用 Javascript 来执行此操作。这是你需要的吗?
  • 不是自动播放,我需要从最后一帧到第一帧播放视频。
  • 这里有一个重复的问题 - stackoverflow.com/questions/18053261/… 但是,没有直接或直接的答案。

标签: javascript canvas video


【解决方案1】:

如果您可以提前在服务器端执行此操作,那么 ffmpeg 有一个反向视频过滤器,可以让您创建视频的反向副本。示例见此处:

还有一些自定义工具可以做到这一点,通常也是服务器端。

如果您必须在播放器上执行此操作,那么这并不容易,因为大多数视频编码方案都会进行编码,因此给定帧的编码取决于它之前的一个或多个帧,有时还取决于一个或更多帧。

换句话说,要正确创建帧,您可能需要参考一个或多个先前帧和一个或多个后续帧。

要向后播放,它仍然需要进行此解码,因此您需要一个可以隔离一组帧或“图片组”的播放器,它是自主的,即不依赖于任何其他先前或后续帧,并且然后以正确的顺序对其进行解码以向后播放视频。

播放器还需要从结尾而不是开头开始流式传输文件,如果它是流式传输而不是下载它,如果它要有效地流式传输。

一种可能适用于某些格式的粗略方法是:

  • 加载视频并检查帧速率和持续时间
  • 寻找结束时间
  • 在循环中:
  • 寻回大约一帧的时间(通过从帧速率计算)
  • 此时显示帧
  • 重复直到到达第一帧

不过,我怀疑这会很慢,并且会播放“生涩”的视频。

【讨论】:

    猜你喜欢
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 2020-08-07
    相关资源
    最近更新 更多