Android Exoplayer 2:反向播放视频

Android Exoplayer 2:反向播放视频,android,video,exoplayer2.x,Android,Video,Exoplayer2.x,我的android应用程序在Exoplayer 2中播放视频,现在我想反向播放视频。 我搜索了很多地方,只找到了把它转换成gif格式的想法。 还有更直接的解决办法吗?另一个播放器或库为我实现这一点可能要求太多,但将其转换为反向gif会给我带来很多内存问题,我不知道如何处理WeiChungChang的想法。只玩mp4的反向将是足够的 视频经常被编码,使得给定帧的编码依赖于它之前的一个或多个帧,有时也依赖于它之后的一个或多个帧 换句话说,要正确创建帧,可能需要参考一个或多个先前帧和一个或多个后续帧

我的android应用程序在Exoplayer 2中播放视频,现在我想反向播放视频。 我搜索了很多地方,只找到了把它转换成gif格式的想法。
还有更直接的解决办法吗?另一个播放器或库为我实现这一点可能要求太多,但将其转换为反向gif会给我带来很多内存问题,我不知道如何处理WeiChungChang的想法。只玩mp4的反向将是足够的

视频经常被编码,使得给定帧的编码依赖于它之前的一个或多个帧,有时也依赖于它之后的一个或多个帧

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

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

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

您可以自己扩展ExoPlayer来实现这一点,但如果可能的话,首先在服务器端操作视频可能会更容易-存在可以反转视频的工具,然后您的播放器将能够正常播放视频,例如,等等

如果您需要在设备上为您的用例反转它,那么您可以在设备上使用ffmpeg来实现这一点-请参见此处的ffmpeg命令示例:

如果您使用的是ffmpeg,则通过Android上的包装器(如此包装器)通常最容易使用,该包装器还允许您在将命令添加到应用程序之前测试该命令:


请注意,视频操作需要花费大量的时间和处理器,因此如果视频很长,操作速度可能会很慢,并且在移动设备上消耗的电池会比您想要的多。

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

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

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

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

您可以自己扩展ExoPlayer来实现这一点,但如果可能的话,首先在服务器端操作视频可能会更容易-存在可以反转视频的工具,然后您的播放器将能够正常播放视频,例如,等等

如果您需要在设备上为您的用例反转它,那么您可以在设备上使用ffmpeg来实现这一点-请参见此处的ffmpeg命令示例:

如果您使用的是ffmpeg,则通过Android上的包装器(如此包装器)通常最容易使用,该包装器还允许您在将命令添加到应用程序之前测试该命令:

请注意,视频操作需要时间和处理器,因此如果视频较长,操作速度可能会较慢,并且会消耗比移动设备所需更多的电池