2017-04-20 293 views
1

我最近使用ffmpeg library for android压缩长度为10秒,大小近25 MB的视频。以下是我尝试使用以下命令:如何在android中快速压缩视频?

ffmpeg -i /video.mp4 -vcodec h264 -b:v 1000k -acodec mp2 /output.mp4 

OR

ffmpeg -i input.mp4 -vcodec h264 -crf 20 output.mp4 

这两个命令的太慢。我在完成任务之前取消了这项任务,因为它花费了太多时间。花了8分钟以上才能处理20%的视频。时间对我来说非常重要,所以我不能选择ffmpeg。我有以下问题:

  • 有没有命令错误或ffmpeg反正慢?
  • 如果其慢那么有没有任何其他有据可查和视频压缩,我可以在Android上使用可靠的方法/库?
+0

的MP4已经被压缩。 – CommonsWare

+0

我不能缩小尺寸吗? –

+0

您可以降低其分辨率。您可以降低帧频。你可以砍掉它的一部分(例如,修剪它的长度到X秒)。这些都不代表压缩,只不过从ZIP压缩文件中删除文件代表的是“压缩”ZIP压缩文件。对视频进行代码转换 - 您正在使用'ffmpeg'做什么,以及更改分辨率或帧速率会涉及什么 - 很慢。 – CommonsWare

回答

0

你的文件在MP4容器和已经拥有了流在一些预定义的编解码器。 现在任何容器(不是专门用于mp4)的大小将取决于使用什么样的压缩(松散编解码器)来压缩数据。这就是为什么你会看到不同格式的相同内容的不同大小。 有这可能会影响该文件即帧速率,分辨率,音频比特率的大小等等,如果减少他们,那么文件的大小变得不那么其它参数。例如在youtube中,您可以选择在带宽问题时以较低的速率播放视频。

但是,如果您选择这样做,您将不得不重新处理整个文件,并且需要花费大量的时间,因为您要拆分容器,解码编码解码器,应用滤镜(减少帧等) ),然后录制,然后再重新组合。这整个过程如果不值多少MB额外的保存,除非你有一些引人注目的用例。

一种解决方案是使用更强大的机器,但再次,这是通过应用程序的体系结构/约束不限于使用功能强大的机器。专门为ffmpeg回答它不会有太大的区别。