当前位置: 首页 > 知识库问答 >
问题:

有什么方法可以让图像压缩和保存更快的Android?

郎飞航
2023-03-14

情况

我应该显示200-350帧动画在我的应用程序。图像有500x300ish分辨率。如果用户想分享动画,我必须转换成视频。对于转换,我使用ffmpeg命令。

ffmpeg -y -r 1 -i /sdcard/videokit/pic00%d.jpg -i /sdcard/videokit/in.mp3 -strict experimental -ar 44100 -ac 2 -ab 256k -b 2097152 -ar 22050 -vcodec mpeg4 -b 2097152 -s 320x240 /sdcard/videokit/out.mp4
    null

问题

  1. 有什么方法(库(甚至是本机))可以使保存过程更快。
  2. 有没有办法将Byte[]或位图对象(我指的是解压缩为Android位图类对象的png文件)传递给ffmpeg库视频创建方法
  3. 是否有其他工作库可以在大约30秒内(对于200帧)从Byte[]或Bitmap对象创建mp4(或任何支持的格式(主要社交网络支持))。

共有1个答案

程和蔼
2023-03-14

您可以使用renderscript(参见https://stackoverflow.com/a/39877029/192373)将位图(或Byte[])快速转换为YUV格式。您可以将这些YUV帧传递到ffmpeg库(如halfelf所建议的),或者使用内置的本地MediaCodec在modt设备上使用专用硬件(但是压缩选项不如全软件ffmpeg灵活)。

 类似资料:
  • 我想保存图像而不压缩它,并希望以其原始形式保存它,即当图像被压缩时,图像大小减小,图像变小。我使用原生相机为此目的。我在Android Studio工作。我正在制作一个应用程序,其中我使用相机来保存图像。但是图像被压缩,非常小,质量非常低。 下面是我保存图像的代码 更新1 为了更好地理解,我将我的方法 我搜索了解决方案,发现我可以使用AndroidBitmapUtil类,所以我复制并粘贴了这个类到

  • 我们正在使用Flyway来迁移数据库模式,并且我们已经有了100多个迁移脚本。 一旦我们将多个迁移“压扁”为一个单一的第一版本迁移,在开发过程中,当我们删除并重新创建模式时,这就可以了。但在生产中,这是行不通的,因为Flyway无法验证迁移。 在这种情况下,我找不到任何文档或最佳实践。问题是文件数量不断增加,我不想每次都看到数千个迁移文件,本质上是如果生产已经在最新版本。我的意思是,那些版本号低于

  • 我们正在使用Flyway迁移数据库模式,我们已经有100多个迁移脚本。 一旦我们将多个迁移“挤压”成一个单一的第一版本迁移,在开发过程中就可以了,因为我们删除并重新创建了模式。但在生产中,这是行不通的,因为Flyway无法验证迁移。 在这种情况下,我找不到任何文档或最佳实践。问题是,文件数量不断增加,我不希望每次都看到数千个迁移文件,基本上是在产品已经是最新版本的情况下。我的意思是,版本号低于生产

  • 如果不向新的ArrayList中添加值,而只是更新原始列表,如何对此进行优化?

  • 我在Android上工作。我需要保存一个没有质量损失的位图。 我使用位图的方法进行了尝试,将质量设置为100。这对我不起作用,位图失去了太多的质量。我已经测试了JPEG和PNG格式。 我已经测试过将位图复制到,然后提取,并使用保存它。在这种情况下,我无法显示用这种方式保存的图像,我只看到一个空白页。 我的问题是,有没有办法在不压缩的情况下将位图保存在SD卡中? 编辑:这里我的代码的一部分 我检测到

  • 问题内容: 我正在用Python建立照片库,希望能够快速为高分辨率图像生成缩略图。 为各种图像源生成高质量缩略图的最快方法是什么? 我应该使用像imagemagick这样的外部库,还是有一种有效的内部方法来做到这一点? 调整大小后的图像的尺寸为(最大尺寸): 质量是一个问题,因为我想保留尽可能多的原始颜色并最大程度地减少压缩伪影。 谢谢。 问题答案: 您想要PIL轻松做到这一点 如果您迫切需要速度