音频之ffmpeg"/>
java音频之ffmpeg
系列文章目录
第一章 语音处理——转wav类型
第二章 java wav音頻文件播放
文章目录
- 系列文章目录
- 前言
- 一、引入javacv-platform包都包含什么
- 二、如何获取本地ffmpeg执行器
- 总结
前言
如第一章 语音处理——转wav类型 所写,可以有效实现语音文件转换,但在打包后发现,包很大;所以该章就记录下我自己处理过程;
一、引入javacv-platform包都包含什么
在maven中引入
<dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.5</version></dependency>
依赖下载完毕,会发现,这个jar包包含opencv、linux、windows、mac等系统的jar,所以在引入的时候有两种方案:
方案一:只取需要的jar,如下引入
<dependency><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId><version>1.5.5</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>4.3.2-1.5.5</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>4.3.2-1.5.5</version><classifier>windows-x86_64</classifier><scope>provided</scope><exclusions><exclusion><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId></exclusion></exclusions>
</dependency>
但这种方案你会发现,打包成功后,ffmpeg功能并不能使用;
方案二就是下面文章中记录的;
二、如何获取本地ffmpeg执行器
在第一章中有这么一段
// 获取本地ffmpeg执行器String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
那这段看注解,也就是获取本地ffmpeg,但是稍微详细的说,在load ffmpeg.class时,ffmpeg会在本地加载缓存文件夹,包含了ffmpeg运行中的exe程序,在这个地方获取的执行器正是该ffmpeg.exe路径,如此你会想到什么,在我的处理过程中,开始为了缩减包的大小,单纯的引入所需要的jar,这样导致打包后功能并不能使用,但本地可以,所以就发现,打包后无法获取执行器地址;
那么,直接拿缓存文件使用呢?结果是成功的;那我就采用这种方案,将本地运行时生成的缓存文件夹,直接使用,放置在jar指定的位置,获取ffmpeg就获取该地址;
总结
在做音频文件处理中发现很多可以使用的都是c++,这也就说明java在引用的时候,大多数都是load 然后获取exe,那么直接的方案我们直接指定exe路径试试,也是一种好方法。柯南说过,每条bug都有迹可寻。
更多推荐
java音频之ffmpeg
发布评论