原来FFmpeg这么有意思 (二)

本文介绍如何在Android设备上直接执行FFmpeg命令,以及如何编译FFmpeg静态库和Lib264库。通过shell脚本,将多个库合并为一个so文件,简化Android项目的集成。此外,还讨论了动态库的使用和不同架构的库编译。
摘要由CSDN通过智能技术生成

前提

文章耽搁了两星期了,可能不少老铁已经忘了,上一篇文章的内容了,不妨回顾一下,之前的文章里面就简单的提及了FFmpeg的一些简单命令的用法,官方下载不同平台的静态库,可以直接执行binary 文件来编辑一些音视频文件。我上次只是说了视频画面合成的用法,通过vstack和hstack,来进行合成。这次呢 我将教大家,如何在自己的Android手机上进行视频画面拼接的方法 以及如何通过官方库编译出Android平台的so库及静态库。这次内容可能会很多,也涉及到了很多shell脚本语言的的东西。希望老铁们耐心看看,绝对会有帮助。

这个是之前的系列

原来FFmpeg这么有意思 (一)

这里教大家一些骚操作,

  • 根本不需要通过JNI的方式来执行FFmpeg的方法,直接java语言就可以来玩FFmpeg,但是有些功能是有局限性的。(静态库)
  • 把编译出的所有so库打包成一个so来玩,省事。(动态库)

准备

这边主要是为了大家下载版本号相同,根据脚本可以编译成功,不然每个版本里面可能要修改一些参数 我这里就按照我的环境和大家说一下把

  • ubuntu ( Ubuntu 18.10 )
  • FFmpeg 官方库(4.0.2) x264 官方库(最新就行)
  • 这边已经上传到了github(编译脚本及编译库,脚本通用,但是不同平台库可能不同)

FFmpeg 官方

x264 官方

github下载地址

预热

我会把编译好的FFmpeg静态库传到github,大家可以直接拿来用。 github下载地址

App执行静态库脚本

在我们的app中如果说想执行二进制文件,必须放在我们的私有目录下,sdcard只是Android文件系统linker出来的一个文件夹,是没有权限执行二进制文件的,而我们App的私有目录是可以的。下面我会给出一下代码 仅供大家参考。

二进制的FFmpeg已经上传到了github ,如果有兴趣的同学可以下载下来,自己的App中跑起来,我们可以把这个文件放在assets文件夹下,然后App运行的时候把这个文件copy到App的私有目录下

boolean isFileCopied = FileUtils.copyBinaryFromAssetsToData(App.getInstance(),
                        cpuArchNameFromAssets + File.separator + FileUtils.ffmpegFileName,
                        FileUtils.ffmpegFileName);

                // make file executable
                if (isFileCopied) {
                    if (!ffmpegFile.canExecute()) {
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值