相关介绍
之前因为项目需要做一个安卓视频转码器,之后在网上搜了很多相关的资料,之后找到雷神的相关博客,里面有一篇博客上就实现了安卓视频转码器,因此就拿来用了,但是由于里面有些功能没符合项目需求,所以我在其基础上进行了修改,主要添加了两项功能:转换过程中可显示转码进度;视频转码加速;下面就这两项功能实现过程作具体描述,顺便说句题外话,在这里非常感谢雷神所做的贡献。
转码进度功能实现
在工程jni目录ffmpeg.h中添加添加typedef struct FFMFCContext {
long progress;
long media_duration;
long media_cur_time;
} FFMFCContext;结构体用来保存进度值,然后在jni下的ffmpeg_mod.c中的transcode_init函数中插入如下代码,计算转码估计总用时。
long progress;
long media_duration;
long media_cur_time;
} FFMFCContext;结构体用来保存进度值,然后在jni下的ffmpeg_mod.c中的transcode_init函数中插入如下代码,计算转码估计总用时。
再在print_report函数下插入如下红色代码,最后ffmfcctx.progress中保存的就是
然后写好相关jni调用接口函数将该参数在安卓进度条中显示出来,具体见附件源代码。
Neon加速
neon加速功能的实现其实就是一个编译ffmpeg库的过程,对于neon技术有疑问的同学可以自行在网上查找,有很多相关介绍。
编译环境说明
相关软件:Ubuntu 15.10 + android-ndk-r9d-linux-x86_64+ ffmpeg 2.6.9+libfaac-1.28 +libx264