Ubuntu下android端视频编解码实现

最近在忙活Ubuntu上Android端实现用ffmpeg和x264编解码的事情,自己一步步摸索,现在简单记录一下目前的进展和解决的难题,给自己留个备份,以防将来忘了,又要重来一遍。

首先,是配置环境。先安装jdk,再安装eclipse(包括ADT、SDK),最后还需要安装NDK用来交叉编译。(具体这里就不展开了,网上有很多教程)

然后,在eclipse上编写代码(界面的显示,选择输入输出文件路径,并传递参数),在android项目下的jni目录下的jni.c文件中调用ffmpeg的主函数(将之重命名为Encmain,并将ffmpeg.c等文件复制到android项目下的jni目录下)

接下来就需要编译连接ffmpeg和x264了。在网上找到编译连接用的脚本文件,稍作修改之后便可以用了,先编译x264,再编译ffmpeg,最后将生成的静态库和相关头文件复制到jni目录下的forsu/arm下对应文件夹中。每次对ffmpeg或x264中的代码进行修改之后,都需要对ffmpeg或x264重新编译,并更新jni目录下的forsu/arm下对应文件夹,再在终端jni目录下运行ndk-build命令,最后才能真机调试。


遇到的问题:

1、添加的代码中很多全局变量是在主程序中定义的,但需要在静态库libx264.a中使用,extern后编译会报错:xxx变量未定义。

这主要是由于主程序中定义的变量无法在静态库中引用(网上查的是这样说的),按网上的说法,静态库中的全局变量在主程序中是可以extern的,于是改变变量定义的位置,再编译连接,通过!

2、x264中有很多信息输出,在真机调试时,信息都输出在logcat上,由于太多,无法仔细查看(还未学会怎么直接将信息输出到相应文件中去)。上网搜索之后找到解决方案:

在真机调试时,运行程序之后,在终端运行adb logcat > …/…/xxx.txt命令即可将logcat上的信息输出到对应文件下。


今天暂时先这样吧,还在摸索中,很多东西都还不太懂,小白一枚,之后有什么需要总结的再写。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值