在我的应用程序中,我有视频录制功能。使用手机摄像头,我们可以录制大约10分钟的视频。由于10分钟的视频大小更多,我们希望先压缩它,然后上传到亚马逊S3。
整个过程我们使用了[LightCompressor](https://github.com/AbedElazizShe/LightCompressor),使用这个我们可以将视频压缩到5分钟。但是它需要太多的时间来压缩,几乎4-5分钟。甚至不同的手机也需要更多的时间。
根据我的理解,它使用MediaCodec来达到这个目的。我在这方面有几个问题:
1.压缩这些大型视频的最佳方法是什么?
1.有没有其他更有效率的图书馆?
- FFmpeg能帮上忙吗?
有人能帮忙吗?
1条答案
按热度按时间jfgube3f1#
对已经编码的视频文件进行操作是一项“高要求”的工作。你必须首先向编码器提供解码后的视频流,或者编码器必须使用一组更复杂的计算直接对文件进行操作。(见鬼,我甚至不知道这种操作是否可行。)桌面系统甚至专用服务器在对已经存在的文件进行转码时都会受到开销的影响。
因此,如果你必须处理未来的记录,通常不是一个好主意,先记录再转码。相反,我想建议你从一开始就以较低的比特率为目标(大概,这必须满足上传到你的Amazon示例)。
顺便说一句,由于文件大小与 * 比特率 * 乘以 * 持续时间 * 成正比,因此您不仅可以通过缩短持续时间,还可以通过降低质量来有效地减少文件大小。如果可以牺牲质量,请考虑降低最终比特率。
关于原来的分项问题,
1.我们不是在一开始就处理“大视频”,而是在视频的唯一用例需要更低的比特率时,在一开始就降低我们的预期比特率。
MediaCodec
已经处理了专用的媒体处理器来硬件加速转码,所以除非您使用的库中存在严重的缺陷,否则任何其他方法都不会有太大的希望。ffmpeg
既可以在软件模式(x264
)下运行,也可以在硬件模式(MediaCodec
)下运行。