系列文章目录
第一章 语音处理——转wav类型
第二章 java wav音頻文件播放
文章目录
前言
如第一章 语音处理——转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都有迹可寻。