概述
FFmpeg是一个开源的音视频解析库,包括如下类库:
libavutil: 简单编程的类库,会提供一些方法、数据结构以及核心的多媒体处理工具。
libavcodec: 音视频的编解码。
libavformat: FFmpeg支持的封装格式。
libavdevice: 定义了输入/输出设备,用来承载通用的软件框架输入/输出的多媒体。
libavfilter: FFmpeg支持的滤镜。
libswscale: 支持图片的高清缩放、颜色像素的转换。
libswresample: 支持音频的高质量采样、重写和样本格式转换。
环境配置
Mac下面ffmpeg的安装很简单,下面一条指令就行:
brew install ffmpeg
安转完成后,我们可以进行简单的测试,合成两个mp3的音频文件,指令如下:
ffmpeg -i first.mp3 -i second.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 third.mp3
指令集
1. 分离视频、音频流
ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流
2. 调低或者调高音量
ffmpeg -i skycity.wav -vol 128 output.wav //音量调低到原来的128/512 = 1/2
ffmpeg -i skycity.wav -vol 512 output.wav //音量调高到原来的512/256 = 2
3. 截取音频文件一段
//-ss:表示从某个时刻开始, -to:到某个时刻结束,-t:音频从某个时刻开始的时长。
//截取00:00:12到00:00:30时间段的音频
ffmpeg -i skycity.wav -ss 00:00:12 -to 00:00:30 -c copy skycity_crop.wav
//从00:00:12开始,截取10s长的音频
ffmpeg -i skycity.wav -ss 00:00:12 -t 00:00:10 -c copy skycity_crop.wav
查看JNI崩溃信息
1. 控制台输出崩溃信息
adb logcat | \android-ndk-r13b\ndk-stack -sym \libs\armeabi
2. 通过分析log日志
1)运行应用出现崩溃后,adb logcat -d > log.txt(将日志导出到文档)
2)ndk-stack -sym libs\armeabi -dump log.txt
小结
上面只是对FFmpeg的类库、指令集的使用做了简单介绍,后面关于FFmpeg的指令使用会陆续更新。
网友评论