zoukankan      html  css  js  c++  java
  • 完美解决:Java微信语音amr格式转mp3格式,兼容Linux/Mac/Windows,支持Maven

    首先感谢 :dadiyang   找了好久才找到可以兼容Linux/Windows的amr格式转mp3

    本文链接:https://blog.csdn.net/dadiyang/article/details/85003240

    直接上代码

    1.首先引入maven依赖(使用maven这点我很喜欢)

     <dependency>
        <groupId>com.github.dadiyang</groupId>
        <artifactId>jave</artifactId>
        <version>1.0.4</version>
     </dependency>

    2.调用 AudioUtils.amrToMp3 方法

    public void amrToMp3()  {
        File source = new File("target/test-classes/material/testAudio.amr");
        File target = new File("testAudio.mp3");
        it.sauronsoftware.jave.AudioUtils.amrToMp3(source, target);
    }

    结束:三行代码搞定格式转换

    探索过程

    最近接到基于微信公众号开发的需求,在处理微信消息的时候,发现语音类型的消息微信推送过来的是 amr 格式的文件,而在网页 HTML5的audio标签不支持amr格式,很是麻烦。

    于是到处查资料,发现了 JAVE 这个项目,它封装了 ffmpeg 的命令,让开发者可以通过 Java 转换文件格式。

    不幸的是,这个项目可谓年久失修,存在以下几个问题

    JAVE 项目的问题

    1. 项目老旧没再维护。官网最近版本是2009年发布的,其依赖的ffmpeg早已过时,很多情况下用不了。
    2. 转码一直报异常 EncoderException: Stream mapping
    3. 没有发布maven仓库,而且 JAVE 本身也不是一个maven项目
    4. 不支持Mac OS

    解决

    本项目为解决上述问题,根据网上的资料进行整理和修改,我创建了一个 JAVE开源项目 并且发布到 maven中央仓库,让整个解决方案变得更加简单。

    项目特点

    • 这是一个maven项目,而且已发布到中央仓库。
    • 项目依赖的 ffmpeg 可执行文件经过验证可以使用(单元测试中提供了一个简单的检验方法)
    • 解决了amr转mp3出现的 EncoderException: Stream mapping
    • 支持 Linux/Windows/Mac 平台

    JAVE原理

    1. 初始化时判断当前运行环境,将bin目录中对应的 ffmpeg 可执行文件拷贝到临时目录中
    2. 根据文件类型及配置通过 Runtime.getRuntime().exec(cmd) 执行 ffmpeg 对应的转码命令


    自定义 ffmpeg 路径
    如果程序无法通过拷贝资源文件的方式获取到 ffmpeg 的可执行文件或者内置的 ffmpeg 不支持你所使用的操作系统

    你可以通过环境变量或者在 java 中设置 System.setProperty("ffmpeg.home", "ffmpeg可执行文件所在的目录") 的方式指定你的系统中安装的可用的 ffmpeg 文件的目录,如 System.setProperty("ffmpeg.home", "/usr/local/bin/")

    项目GitHub地址
    https://github.com/dadiyang/jave

    参考

    JAVE官网:http://www.sauronsoftware.it/projects/jave/index.php

    《解決linux AMR轉MP3出現轉碼成功卻無法播放的問題》:

    https://hk.saowen.com/a/2ec2a73ec73091967c3ebdb5697832006cb255a7183377b6e8fae1c13f5e54bc
    xiaoymin: https://github.com/xiaoymin/jave

      有问题可加微信联系我一起学习探讨 : 18237185359

  • 相关阅读:
    第十天python3 函数的销毁
    第九天python3 闭包
    第八天pyhton3 函数的返回值、作用域
    第七天python3 函数、参数及参数解构(二)
    音视频不同步排查方法
    第六天python3 函数、参数及参数解构(一)
    第五天python3 内建函数总结
    第四天python3 python解析式-生成器-迭代器

    [转载]基于Java反序列化
  • 原文地址:https://www.cnblogs.com/livedian/p/11981232.html
Copyright © 2011-2022 走看看