像whatsapp一样压缩视频

时间:2014-08-29 15:27:58

标签: android video ffmpeg

我不是视频编辑方面的专家,但我想了解Whatsapp视频处理的逻辑。

首先我注意到无论文件是什么,Whatsapp都将上传的视频限制设置为16MB,之后whatsapp将视频裁剪为不超过限制。这是一个会议还是个人选择?

其次,当使用相机拍摄视频时,默认情况下不会对其进行压缩,因此whatsapp会使用FFMPEG对其进行压缩,我猜,这需要时间。 (尝试播放1分钟1920x1080的视频,大小为125MB,立即变为640x360,大小为5MB,上传自动启动)..他们怎么可能这样做?为什么选择 640x360 ,对我来说,两个异步任务的速度非常快:压缩+上传。

当我运行压缩命令ffmpeg -y -i in.mp4 -codec:v libx264 -crf 23 -preset medium -codec:a libfdk_aac -vbr 4 -vf scale=-1:640,format=yuv420p out.mp4时,大约需要1分钟,视频正在旋转!! :d

最后,当我们从Youtube下载视频时,它已经被压缩(我猜)并且whatsapp甚至没有尝试压缩它。所以我认为它会自动检测视频是否被压缩。我们怎么能发现这个?

谢谢。

2 个答案:

答案 0 :(得分:10)

以下是您的问题的可能答案:

任务。 1:这是个人选择。 whatsapp团队正在努力为他们的应用用户提供最好的用户体验(UX),这就是为什么他们为视频文件保留了16MB的限制。想象一下,上传大约125MB的文件需要多长时间。因此,该应用程序压缩文件,以便更快地上传和无缝体验。

任务。 2:我猜你自己已经回答了这个问题 - 异步编程。您提供的大型视频文件将根据他们为应用程序编写的算法编码为压缩格式。作为Devs。,我们都知道算法,我们都知道你可以做些什么来加快执行速度。我猜他们使用异步编程实现了他们自己的算法,加速了这个过程。我猜你提到的ffmpeg库是用C语言编写的,我认为它不支持异步调用(尽管不太确定)。在此之后,上传接管。

任务。 3&最后:编解码器是标准。如果您将视频文件编码为MPEG4,然后尝试再次将其重新编码为MPEG4,即使使用其他程序,只要两个程序使用相同的编码标准,即使它们没有实现,也会得到相同的结果。他们的程序的特定算法(这需要多年的工作)。因此,当您的Whatsapp尝试对文件进行编码时,它会产生相同的结果。

希望我能够回答你的问题。

MichVeline

答案 1 :(得分:0)

使用媒体编解码器代替 ffmpeg 以获得更好的性能。如果您的用例只是压缩视频,MediaCodec 将是 android 的最佳选择。它可以帮助您异步编写代码,并为您提供大量优化算法的自由。