FFmpeg介绍
多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
在我们实际应用中,对视频格式转换、音视频合并、截图、加水印等功能用的很多,我在里面就使用了音频与视频的合并功能。
下面介绍下具体的使用
FFmpeg的安装
下载
官网下载: http://ffmpeg.org/download.html
安装yasm
官网下载:http://yasm.tortall.net/Download.html
安装yasm
上传至Linux准备安装,解压、安装
tar -xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install
安装ffmpeg
上传至Linux准备安装,解压、安装
tar -xvzf ffmpeg-4.2.2.tar.gz
cd ffmpeg-4.2.2/
./configure --enable-shared --prefix=/opt/ffmpeg
make (编译过程会有点长)
make install (会把ffmpeg相关执行程序、头文件、lib库安装在/opt/ffmpeg/下)
创建一个文件并写入lib路径
即可执行命令:vim /etc/ld.so.conf.d/ffmpeg.conf
然后添加一行内容:/opt/ffmpeg/lib
之后保存并退出(esc : wq) 然后执行 ldconfig 使配置生效,
现在再次执行./ffmpeg -version 显示就正常了
配置软链接 (ln -s 源文件 目标文件)
ln -s /opt/ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg
执行ffmpeg出现:
到此就安装好了,通过 ffmpeg的命令使用,感受他的强大吧
在项目中怎么去使用???
/**
*
* @param videoSouce 视频地址
* @param audioPath 音频地址
* @param targetPath 合成的文件地址
*/
public static boolean mergeAudioAndVideo(String videoSouce,String audioPath,String targetPath){
Process process = null;
// 这个是获取ffmpegpath 目标机的安装路径
String ffmpegPath = new DefaultFFMPEGLocator().getFFMPEGExecutablePath();
try {
String command =ffmpegPath + " -i " + videoSouce + " -i " + audioPath
+ " -y " + targetPath;
process = Runtime.getRuntime().exec(command);
//process = Runtime.getRuntime().exec(new String[]{"sh","-c",command});
process.waitFor();
// 使用这种方式会在瞬间大量消耗CPU和内存等系统资源,所以这里我们需要对流进行处理
InputStream errorStream = process.getErrorStream();
InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
BufferedReader br = new BufferedReader(inputStreamReader);
String line = "";
while ((line = br.readLine()) != null) {
}
if (br != null) {
br.close();
}
if (inputStreamReader != null) {
inputStreamReader.close();
}
if (errorStream != null) {
errorStream.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}catch (Exception e){
e.printStackTrace();
return false;
}
return true;
}
上面代码 就能在项目里面操作FFmpeg了,本质上海是操作ffmpeg命令
上面的命令模式为:
ffmpeg -i 5.webm -i 56.wav -y kb.mp4
合并音视频文件同时转码为mp4格式
ffmpeg命令参考:https://blog.csdn.net/wenmingzheng/article/details/88373192