zoukankan      html  css  js  c++  java
  • 转换音频采样率

    对于采样率,相信很多人知道这个词却不知道是什么意思。

    官方解释:采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。通俗的讲采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。

    从实际效果简单来说,采样率会影响播放速度,采样率越高播放速度越快。如果你以44.1k的采样率去播一个只有8k采样率的音频,估计很快就播完了。所以,由于并不是所有音频的采样率都是统一的,就会涉及到一个采样率转换的问题,在这里给大家介绍一个库,JSSRC。

    这里是github地址:https://github.com/hutm/JSSRC

    里面的类也不是所有都需要用到,只需要SSRC,I0Bessel,SplitRadixFft这三个类就可以实现转换采样率的功能。

    然后用下面这个方法就可以转换采样率了:

    private void simpleDownSample() {
            File BeforeSampleChangedFile = new File(BeforeSampleChangedFilePath);
            File SampleChangedFile = new File(SampleChangedFilePath);
            try {
                FileInputStream fileInputStream = new FileInputStream(BeforeSampleChangedFile);
                FileOutputStream fileOutputStream = new FileOutputStream(SampleChangedFile);
                new SSRC(fileInputStream, fileOutputStream, 8000, 44100,
                        2,
                        2,
                        1, Integer.MAX_VALUE, 0, 0, true);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
    

      其中8000就是待转换的采样率,44100就是目标采样率,可以从低转到高,也可以高转低。

    转换采样率的方法还有很多,只是我觉得这个方法比较简单,希望会对大家有帮助

  • 相关阅读:
    【leetcode】236. 二叉树的最近公共祖先
    【leetcode】230. 二叉搜索树中第K小的元素
    【leetcode】309. 最佳买卖股票时机含冷冻期
    【leetcode】306. 累加数
    【leetcode】304. 二维区域和检索
    spring-framework源码编译及导入
    Java8-函数式接口理解及测试
    Mac编译RocketMQ 4.1.0
    首记
    JS表单验证
  • 原文地址:https://www.cnblogs.com/jifeng/p/10674365.html
Copyright © 2011-2022 走看看