0
点赞
收藏
分享

微信扫一扫

java音频之ffmpeg

Spinach菠菜 2022-04-14 阅读 64

系列文章目录

第一章 语音处理——转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都有迹可寻。

举报

相关推荐

0 条评论