文档章节

h5直接播放amr文件

o
 opdjava
发布于 2016/12/01 16:34
字数 243
阅读 293
收藏 0

调微信的录音接口,生成的是amr文件,在h5中不能直接播放
github上有个用js写的amr解码器https://github.com/mykmelez/opencore-amr-js
具体自己去看代码,有demo

然后

android可以正常播放amr文件,ios的不支持
微信的amr文件的采样频路是8000,在ios中不支持,ios支持到20000多,具体没测
如果用超过8000的频率播放,语音速度会很快,ios的解决办法是加频率的同时加帧数

看代码

function playPcm(samples) {
    var ctx = getAudioContext();
    if (!ctx) {
        return $.toast('你的设备暂不支持播放语音');
    }
    var src = ctx.createBufferSource();
    var buffer;
    try{
      buffer = ctx.createBuffer(1, samples.length, 8000);
    }catch(e){
      buffer = ctx.createBuffer(1, samples.length * 3, 24000);
      var samples3 = new Float32Array(samples.length * 3);
      var ij = 0;
      for (var i = 0; i < samples.length; i++) {
        for (var j = 1; j <= 3; j++) {
          samples3[ij++] = samples[i];
        }
      }
      samples = samples3;
    }
    if (buffer.copyToChannel) {
        buffer.copyToChannel(samples, 0, 0)
    } else {
        var channelBuffer = buffer.getChannelData(0);
        channelBuffer.set(samples);
    }      
    src.buffer = buffer;
    src.connect(ctx.destination);
    //src.start();
    if (src.start) {
      src.start(0);
    } else if (src.play) {
      src.play(0);
    } else if (src.noteOn) {
      src.noteOn(0);
    }
}

 

© 著作权归作者所有

共有 人打赏支持
o
粉丝 0
博文 4
码字总数 558
作品 0
通州
私信 提问
AMR是什么类型文件 amr用什么播放器打开?

今天从网上下载了一个AMR格式的文件,经查找发现AMR是一种音频格式。主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的 AMR(...

播放器
2014/07/12
0
0
微信JS SDK录音功能的使用

根据公众号JS-SDK的官网文档(链接),可以比较方便的集成录音和播放功能。但录音保存的文件至多在他们服务器上保存3天,所有如果要长期保存,得下载到自己的服务器上(下载的方法),但下载...

swingcoder
2016/05/07
2.3K
0
iOS开发amr音频转化成wav错误

@Jeans 你好,想跟你请教个问题: 最近在做安卓的amr音频转化成wav 用来播放。但是安卓录制的我下载下来在电脑上播放不了,用opencore库判断都不是amr文件, 没法转化。。 但是我在网上下载的...

韩学鹏
2016/01/14
72
1
android支持的音频格式

oschina的各位朋友: 我用android2.2.1系统,利用系统自带的播放器播放aac,AMR-NB,AMR-WB,WMA格式音频文件,结果提示:此文件未知的mime-type; 请问下,android2.2.1系统支持这些音频格式么?...

ChenQi
2012/03/21
4K
2
转: ios与android语音互通方案,类微信

Ios实现amr编解码 Feb 5th, 2012 介绍 学习ios第一个练手功能就是给已有产品加上语音通信功能,能够互通ios与android。这里给出自己的一些心得,希望能给他人一些参考。 资料搜集与参考 类似...

天下杰论
2014/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 动态代理的实现

在Java中可以实现动态代理的方式有很多种:JDK方式、ASM字节码操控框架、开源的分析、编辑和创建Java字节码的类库Javassist、基于ASM框架实现的CGLIB JDK方式:通过Java反射的方式生成动态代...

我爱春天的毛毛雨
7分钟前
1
0
css 总结2

1、背景有关 (1)background-origin:border-box、padding-box、content-box //默认是padding-box(2)background-image: url(img_flwr.gif), url(paper.gif);(3)background-posi......

tianyawhl
8分钟前
1
0
java 每秒钟只允许十个线程同时并发

package com.qimh.thread.concurrent;import java.util.Date;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurren......

qimh
23分钟前
3
0
学习Hadoop大数据基础框架

什么是大数据?进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的...

本宫没空2
24分钟前
2
0
redis

1,安装 sudo apt-get install redis-server 2,登录本地的 redis-cli 3,修改 .bashrc文件,连接其他线下数据库 vi .bashrc在最后增加alias redisa="redis-cli -h 10.15.100.134 -p 666...

鹏灬
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部