前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「Android音视频编码那点破事」第七章,在Linux下编译Android版X264

「Android音视频编码那点破事」第七章,在Linux下编译Android版X264

作者头像
阿利民
发布2022-05-16 12:42:49
3640
发布2022-05-16 12:42:49
举报
文章被收录于专栏:阿利民阿利民

封面出自:板栗懒得很

本章仅对部分代码进行讲解,以帮助读者更好的理解章节内容。 本系列文章涉及的项目HardwareVideoCodec已经开源到Github,支持软编和硬编。使用它你可以很容易的实现任何分辨率的视频编码,无需关心摄像头预览大小。一切都如此简单。目前已迭代多个稳定版本,欢迎查阅学习和使用,如有BUG或建议,欢迎Issue。

  关于x264的编译比较简单,网上的教程也挺多的,这里只是总结一下,多个资源,方便新人学习。系统建议使用linux,本教程使用的是ubuntu。

一、下载源码

  我们可以从官网下载,也可以使用git,这里我们使用git

代码语言:javascript
复制
git clone http://git.videolan.org/git/x264.git

二、编写编译脚本

  要编译源码,我们需要编写编译脚本。编译脚本主要是设置一写编译参数,以便编译出对应平台适用的so库。   这里以arm为例,首先新建build-android-arm.sh脚本文件。

代码语言:javascript
复制
vim build-android-arm.sh

  输入以下脚本代码。其中NDK替换成本系统NDK的路径,PLATFORM和TOOLCHAIN也可以替换成对应平台的工具链。ARM_IN和ARM_LIB不用管,PREFIX是so的输出路径,也可替换成自己的。最后保存退出:wq。   脚本参数有点多,都代表什么意思呢?

代码语言:javascript
复制
--prefix=$PREFIX 设置输出目录
--enable-pic 开启pic选项
--enable-static 生成静态库
--enable-shared 生成共享库
--disable-lavf 禁用lavf
--host=arm-linux 指定目标平台
--cross-prefix 指定交叉编译工具链
--sysroot 指定头文件
--extra-cflags 添加编译参数,听说这样对arm有优化?我是没看到效果
代码语言:javascript
复制
#!/bin/bash
NDK=/home/limingyi/android-ndk-r14b
PLATFORM=$NDK/platforms/android-19/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
ARM_INC=$PLATFORM/usr/include/
ARM_LIB=$PLATFORM/usr/lib/
PREFIX=./android/arm

function build_one
{
  ./configure \
  --prefix=$PREFIX \
  --enable-pic \
  --enable-static \
  --enable-shared \
  --disable-lavf \
  --host=arm-linux \
  --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
  --sysroot=$PLATFORM \
  --extra-cflags="-fPIC -marm -DX264_VERSION -DANDROID -DHAVE_PTHREAD -DNDEBUG -static -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -O3 -march=armv7-a -mfpu=neon -mtune=generic-armv7-a -mfloat-abi=softfp -ftree-vectorize -mvectorize-with-neon-quad -ffast-math" \

  make clean
  make -j4
  make install
}

build_one

三、编译源码

  我们首先授予脚本执行权限。

代码语言:javascript
复制
sudo chmod +x build-android-arm.sh

  接下来执行脚本进行编译。

代码语言:javascript
复制
./build-android-arm.sh

  不出意外的话会在x264/android/arm下生成so文件。上机测试发现,在骁龙630的Nokia 7上,720p 24fps尚可,cpu占用跟MediaCodec相比还是有点高。最后放出arm64和x86的编译脚本。

本章知识点:

  1. 在Linux下编译Android版X264。

本章相关源码·HardwareVideoCodec项目:

  • build-android-arm.sh
  • build-android-arm64.sh
  • build-android-x86.sh
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿利民 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、下载源码
  • 二、编写编译脚本
  • 三、编译源码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档