繁体   English   中英

针对Android的预编译FFmpeg与使用android NDK构建FFmpeg

[英]Precompiled FFmpeg for android versus building FFmpeg using android NDK

我正在构建一个进行视频处理的android应用。

我目前正在使用https://github.com/writingminds/ffmpeg-android的预编译FFmpeg。 另一个选择是下载FFmpeg源代码并使用Android NDK对其进行编译。 我考虑选项2的原因是为了提高性能。 我的问题是

  1. 上面提到的两个选项之间有区别吗?

  2. 如果是,那会有什么区别。 是否会提高性能(或)结果将完全相同(或)是否存在其他优点或缺点?

  3. 当他们声明预编译的FFmpeg时,是否表示它是使用Android NDK针对特定架构进行编译的?

请告诉我。

先感谢您!!!

性能可能会有很大差异

主要问题是链接到的二进制文件在x264配置中使用--disable-asm 此选项禁用特定于平台的程序集优化,并导致H.264编码速度显着降低(在ffmpeg中通过libx264编码时)。 我不确定二进制提供程序为什么使用此选项。

使用ffmpeg时,请参考控制台输出。 如果显示[libx264] using cpu capabilities: none! 则您的编码速度不是最佳的,并且会不必要地降低速度。 作为参考,Android用户通常应该看到类似NEON ARMv7或类似内容,而不是none

避免配置错误的二进制文件。 自己正确地编译它可以使您利用ASM优化,从而加快编码速度。

可以使用非常不同的选项来构建ffmpeg。 某些组件可能被禁用,这可能会大大减小二进制文件的大小。 https://github.com/writingminds中的预编译二进制文件包含GPL组件,例如x264编码器。 这意味着,除非它是开源的,否则在您的应用程序中使用它可能会有法律问题。 请注意,我不是雇主,所以请随时与专业人士协商。

在对使用预构建的二进制文件有疑问时要考虑的另一个问题是,这是一个整体式二进制文件。 如果您需要ffmpeg的某些特定功能,它可能会基于ffmpeg库(libavcodec,libavformat等)构建自定义库。 如果使用ffmpeg转换长视频文件,则此优势可以忽略不计,但如果必须处理许多小数据块,则开销可能会很大。 您也可以找到Android的预构建库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM