FFmpeg每个库的作用
libavutil工具库,它包含函数简化编程,包括随机数生成器、数据结构、数学例程,核心多媒体工具等等。一个通用的小型函数库,该库中实现了CRC校验码的产生,128位整数数学,最大公约数,整数开方,整数取对数,内存分配,大端小端格式的转换等
libswscale 执行高度优化的图像缩放和颜色空间/像素格式转换操作的库
libswresample 用于音频采样采样数据(PCM)的转换
libavcodec 用于存放各个 encode/decode 模块一个包含了所有 FFmpeg 音视频编解码器的库.
libavformat 用于存放 视音频复用器(muxer)/demuxer 模块
一个包含了所有的普通音视格式的打包和解包的库
libavdevice 读取电脑(或者其他设备上)的多媒体设备的数据 或者输出数据到指定的多媒体设备上
libavfilter 包含媒体滤波器的一个库
资源
http://blog.csdn.net/jwzhangjie这个大神的三篇专栏
https://ffmpeg.org/doxygen/3.0/index.html官网api文档,虽然英语不好但是还是用得上的
http://blog.csdn.net/leixiaohua1020这个大神的专栏
jni的流程
写一个类声明native方法。private native int play_audio(String fileName);
javac FFmpegNative.java生成.class文件(通常IDE会为我们生成,拿Eclipse来说会在bin/classes下为我们生成class)
ps:提示没有这个命令的自行配置jdk环境
javah com.hsb.ffmpeg.FFmpegNative生成.h文件(进入项目的bin/classes目录下敲入这段命令,得到.h头文件复制到项目的jni目录下)
编写c代码
编写Android.mk
编译生成.so(我这里是libffmpeg.so)复制到lib目录下
回到FFmpegNative.java类把System.loadLibrary(“ffmpegjni”);写上
static {
System.loadLibrary("avcodec-57");
System.loadLibrary("avdevice-57");
System.loadLibrary("avfilter-6");
System.loadLibrary("avformat-57");
System.loadLibrary("avutil-55");
System.loadLibrary("swresample-2");
System.loadLibrary("swscale-4");
System.loadLibrary("ffmpegjni");
}