zoukankan      html  css  js  c++  java
  • 无音频头音频数组,转写成可播放音频文件

    前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i

    需求:将一段没有音频头的byte数组,转写成可播放的WAV文件

    功能实现:

    1.获取不包含音频头的音频数组

    2.设置所需音频格式信息(.WAV)

    2.设置文件存储路径,获取File对象

    3.传入音频数组、音频格式、File对象参数生成文件

    设置音频格式信息:AudioFormat 对象介绍:

    对象可以包括属性的集合。属性是一个键值对:键属于 String 类型,相关属性值可为任意对象。属性指定其他格式规范,如压缩格式的比特率。属性主要用作传送往返于服务提供程序的其他音频格式信息的方法。

     1    /**
     2      * 音频数组生成WAV音频文件
     3      * @param byteAudio 无音频头音频数组
     4      */
     5     public void outAudioFile(byte[] byteAudio){
     6         //设置音频格式
     7         AudioFormat audioFormat = new AudioFormat(
     8                 AudioFormat.Encoding.PCM_SIGNED,//音频编码方式
     9                 8000,//音频采样率
    10                 16,//音频采样位数
    11                 1,//音频通道数
    12                 2 * 2,//字节为单位的帧大小
    13                 8000,//每秒为单位的帧速率
    14                 false);
    15         try {
    16             //生成临时文件
    17             File srcFile = File.createTempFile("E:\audionfile" + System.currentTimeMillis(), ".wav");
    18             //调用生成音频文件方法
    19             encodeDstFile(srcFile, byteAudio, audioFormat);
    20         }catch (IOException e){
    21             log.debug("文件生成失败");
    22         }
    23 
    24     }

    将文件转写到磁盘:AudioSystem介绍:

    AudioSystem 类充当取样音频系统资源的入口点。此类允许查询和访问安装在系统上的混频器。AudioSystem 包括许多在不同格式间转换音频数据的方法,以及在音频文件和流之间进行转换的方法。

     /**
         * .
         * 将文件转写到磁盘中
         *
         * @param dstFile  目标文件
         * @param pcmBytes 字符数组
         * @param format   文件格式
         * @throws IOException IO异常
         */
        public static void encodeDstFile(
                final File dstFile,
                final byte[] pcmBytes,
                final AudioFormat format)
                throws IOException {
            AudioInputStream audioInputStream = new AudioInputStream(
                    new ByteArrayInputStream(pcmBytes),
                    format,
                    pcmBytes.length / format.getFrameSize());
            AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, dstFile);
        }

     效果展示:

    本人亲测!!!按照步骤完成以上代码即可生成WAV音频文件,音频文件正常播放!

    个人总结:

    我是南国以南i记录点滴每天成长一点点,学习是永无止境的!转载请附原文链接!!!

  • 相关阅读:
    Apple http live streaming 不支持windows?
    CDN设计:[笔记]Analysis of Enterprise Media Server Workloads
    牛项目 Harvest
    一些校园招聘的题目和分析
    关于pdf转doc (word) 的工具 Solid Converter PDF
    A CAP Solution (Proving Brewer Wrong)
    6"电纸书/电子书 PaperCrop pdf重排使用心得
    CDN设计 层级化的cache_A
    Berkeley DB Hash、Btree、Queue、Recno 选择
    PowerDesigner 学习系列 简单操作
  • 原文地址:https://www.cnblogs.com/bgyb/p/13640349.html
Copyright © 2011-2022 走看看