Exoplayer 2:反向播放视频

Exoplayer 2: Play video in reverse

我的 android 应用程序在 Exoplayer 2 中播放视频,现在我想反向播放视频。 我搜索了很多,只找到将其转换为 gif 和 this from WeiChungChang 的想法。 有没有更直接的解决方案?为我实现这个的另一个播放器或库可能要求太多,但是将它转换为反向 gif 给了我很多记忆问题,我不知道如何处理 WeiChungChang 的想法。仅反向播放 mp4 就足够了。

视频经常被编码,因此给定帧的编码取决于它之前的一帧或多帧,有时也取决于它之后的一帧或多帧。

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

这允许视频编码器通过完全编码每个参考帧(有时称为 I 帧)的信息来减少文件或传输大小,但对于参考帧之后 and/or 之前的帧,仅将增量存储到参考框架。

向后播放视频不是常见的播放器功能,播放器通常必须像往常一样解码视频(即向前)以获取帧,然后以相反的顺序播放它们。

您可以扩展 ExoPlayer 来自己执行此操作,但如果可能的话,首先在服务器端操作视频可能更容易 - 存在可以反转视频的工具,然后您的播放器将能够正常播放, 例如 https://www.videoreverser.com, https://www.kapwing.com/tools/reverse-video

如果您需要在设备上为您的用例反转它,那么您可以在设备上使用 ffmpeg 来实现此目的 - 请在此处查看示例 ffmpeg 命令来执行此操作:

如果您使用的是 ffmpeg,通常最容易通过 Android 上的包装器使用,例如这个包装器,它还允许您在将命令添加到您的应用程序之前对其进行测试:

请注意,视频处理需要时间和处理器,因此如果视频很长,这可能会很慢并且会消耗比您希望的移动设备更多的电池。