[英]Precompiled FFmpeg for android versus building FFmpeg using android NDK
我正在构建一个进行视频处理的android应用。
我目前正在使用https://github.com/writingminds/ffmpeg-android的预编译FFmpeg。 另一个选择是下载FFmpeg源代码并使用Android NDK对其进行编译。 我考虑选项2的原因是为了提高性能。 我的问题是
上面提到的两个选项之间有区别吗?
如果是,那会有什么区别。 是否会提高性能(或)结果将完全相同(或)是否存在其他优点或缺点?
当他们声明预编译的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.