Java pcm/wav文件转mp3(流的方式)

这篇具有很好参考价值的文章主要介绍了Java pcm/wav文件转mp3(流的方式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

pcm与wav文件是无损音质,几分钟的文件就高达20几M,要求将pcm/wav文件转mp3文件,既完成文件的压缩,又不影响使用。


解决方案

网上找了很多例子,大都是Lame与FFmpeg,但前者的例子总是DOS命令控制lame.exe,后者好些,但是需要使用音频文件的绝对路径,这就需要频繁创建临时文件,不优雅,最后找到了流的操作方式,代码如下。

private byte[] encodeToMp3(MultipartFile file) throws IOException, UnsupportedAudioFileException {
        // Stream流的方式
        InputStream in = file.getInputStream();
        // import javax.sound.sampled.AudioSystem;
        AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(in);
        // import net.sourceforge.lame.mp3.Lame;
        // 官方样例
        // LameEncoder encoder = new LameEncoder(audioInputStream.getFormat(), 256, MPEGMode.STEREO, Lame.QUALITY_HIGHEST, false);
        LameEncoder encoder = new LameEncoder(audioInputStream.getFormat(), 128, MPEGMode.STEREO, Lame.QUALITY_HIGHEST, false);
        ByteArrayOutputStream mp3 = new ByteArrayOutputStream();
        byte[] inputBuffer = new byte[encoder.getPCMBufferSize()];
        byte[] outputBuffer = new byte[encoder.getPCMBufferSize()];
        int bytesRead;
        int bytesWritten;
        while(0 < (bytesRead = audioInputStream.read(inputBuffer))) {
            bytesWritten = encoder.encodeBuffer(inputBuffer, 0, bytesRead, outputBuffer);
            mp3.write(outputBuffer, 0, bytesWritten);
        }
        encoder.close();
        return mp3.toByteArray();
    }

项目引入:

提示:Maven引入或手动引入Jar。(这里Maven引入可能有问题,推荐大家使用Jar引入的方式)

Maven引入

<dependency>
    <groupId>net.sourceforge.lame</groupId>
    <artifactId>lame</artifactId>
    <version>3.98.4</version>
</dependency>

Jar引入
jar下载链接: https://github.com/nwaldispuehl/java-lame/releases文章来源地址https://www.toymoban.com/news/detail-623003.html


到了这里,关于Java pcm/wav文件转mp3(流的方式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ffmpeg批量转换wav为mp3

    1、新建一个txt文件,并复制如下代码进入,然后保存。 2、把文件后缀修改为bat 。 3、把后缀为bat的文件放到要批量处理的视频文件夹里面。 4、在确保安装了ffmpeg的情况下,双击bat文件执行即可。 5、参数说明: -i          输入文件,这里指的就是视频文件。 -y       

    2024年01月20日
    浏览(34)
  • 基于FFMpeg实现音频mp3/aac/wav解码

    编译环境:Ubuntu16.04 64位 交叉编译工具:arm-himix200-linux-gcc 我这里使用的是ffmpeg-5.1.2.tar.gz,下载地址点击下载地址。 这样,/root/ffmpeg-5.1.2/output下面就是咱们要的程序,bin目录下ffmpeg可以在开发板上运行,include下是需要的头文件,lib下是需要的静态库,share/ffmpeg/examples是一些

    2024年02月11日
    浏览(39)
  • 怎么把wav转换成mp3格式,5种方法值得收藏

           怎么把wav转换成mp3格式?wav格式相信很多小伙伴们不是很熟悉,这种文件格式通常用于录音室等一些专业音乐项目上,那么wav格式和mp3格式有什么区别呢?wav全名Waveform Audio File Format,是微软公司开发的一种声音文件格式,符合RIFF文件规范,用于保存Windows平台的音频

    2023年04月10日
    浏览(34)
  • mp3怎样才能转换成wav格式?音频互相转换的方法

    一,什么是WAV WAV,全称为波形音频文件(Waveform Audio File Format),是一种由微软公司和IBM公司联合开发的音频文件格式。自1991年问世以来,WAV格式因其无损的音频质量和广泛的兼容性,成为了多媒体应用中不可或缺的一部分。本文将从WAV格式的定义、特点、应用以及与其他音

    2024年04月14日
    浏览(34)
  • [Java]_[初级]_[使用SAX流的方式写入XML文件]

    文件的写入目前没有发现可以增量写入的,只能是完全重新写入。对于大量数据需要写入 XML 文件,还是和读 XML 文件一样,不需要生成 DOM 模型能节省不少的内存和指令。 在 java 标准库里,也是有相关的SAX类来写入数据流, StreamResult(OutputStream) 负责把数据写入输出流。 之后

    2024年02月10日
    浏览(43)
  • Linux音频处理:MP3解码、PCM、播放PCM、ALSA(Advanced Linux Sound Architecture)、MPEG(Moving Picture Experts Group)

    将MP3音频文件中的数字音频数据转换为可以播放或处理的音频信号的过程。MP3(MPEG-1 Audio Layer 3)是一种常见的音频压缩格式,用于将音频文件压缩到较小的文件大小,同时保持相对高的音质。 以下是MP3解码的一般步骤: 读取MP3文件 : 首先,需要读取存储在MP3文件中的音频

    2024年02月03日
    浏览(29)
  • vue3实现H5网页录音并上传(mp3、wav)兼容Android、iOS和PC端

    使用 Recorder插件 可以在HTML5网页中进行录音,录音完成后得到blob文件对象,然后将blob上传到服务器;项目使用的vue3.0版本(这个插件同时支持vue2.0、也支持uniapp,很强!!),录音过程中会显示可视化波形,同时能够做到兼容PC端、Android、和iOS,一次编码 到处运行,哈哈

    2024年02月08日
    浏览(38)
  • java获取一段音频/mp3的时长

    引言 在日常开发中,经常会遇到产品经理提出一个需求“上传音乐/音频”,而且还得显示出音频的播放时长。那我们直接世界上最简单的实现方案,必须是最简单,多一句啰嗦不准点赞。 How to do 1.提前引入包 2.逻辑实现

    2024年01月25日
    浏览(31)
  • Java使用ffmpeg实现视频剪切、mp3剪切

      直接运行代码即可:   剪切前      剪切后

    2024年02月16日
    浏览(26)
  • C# 将音频PCM数据封装成wav文件

    之前实现了《C++ 将音频PCM数据封装成wav文件》,最近将其改成了C#版本。使用C#实现录音功能时还是需要写wav文件的,直接用C#实现也是比较简单的,这样可以免去不必要的依赖。 首先需要构造wav头部,wav文件音频信息全部保存在头部,我们要做的就是在PCM数据的前面加入w

    2024年02月07日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包