资讯专栏INFORMATION COLUMN

amr 如何在网页上直接播放

王晗 / 2242人阅读

摘要:在线播放库禁止自动播放改用手动播放融云音频库使用融云的库示例代码在线播放代码只是基础的播放功能,多次点击会出现多个音频,也没有暂停功能。示例代码优化全局变量播放正在播放,先停止停止播放停止格式有三种文件格式也就是文件格式。

amr 在线播放 alex374/amr-player 库

github: https://github.com/alex374/am...




        arm play
    
    
    


amr play

融云IM音频库

使用融云的库 https://www.rongcloud.cn/docs...

示例代码:https://blog.csdn.net/hanglov...

amr-wb 在线播放

https://github.com/sblandford...

demo.html 代码只是基础的播放功能,多次点击会出现多个音频,也没有暂停功能。
示例代码优化:

// 全局变量
var gBufferSource;

// 播放 PCM
function playPcm(samples) {
    var ctx = getAudioContext(); 
    
    if (gBufferSource !== undefined) {
        // 正在播放,先停止
        gBufferSource.stop();
    }

    gBufferSource = ctx.createBufferSource();
    var buffer = ctx.createBuffer(1, samples.length, 16000);
    if (buffer.copyToChannel) {
        buffer.copyToChannel(samples, 0, 0)
    } else {
        var channelBuffer = buffer.getChannelData(0);
        channelBuffer.set(samples);
    }
    gBufferSource.buffer = buffer;
    gBufferSource.connect(ctx.destination);
    gBufferSource.start();
}

// 停止播放
function stopAmrBlob()
{
    if (gBufferSource !== undefined) {
        //停止
        gBufferSource.stop();
    }
}
格式

amr 有三种文件格式

amr-nb

amr-wb

amr-wb+

arm-nb

AMR
也就是 arm 文件格式。
语音带宽范围:300-3400Hz,8KHz采样,早期版本。

arm-wb

AMR WideBand
语音带宽范围: 50-7000Hz,16KHz采样,占用内存更大,话音更加自然、舒适和易于分辨。

arm-wb+

采样速率是在16~48 kHz之间。这使得它的语音带宽更宽(24 kHz)

如何查看 通过文件内容

文件头格式:

AMR 文件支持单声道和多声道。单声道和多声道的文件头是不同的。

单声道:

AMR-NB文件头: "#!AMRn" (or 0x2321414d520a in hexadecimal)(引号内的部分)

AMR-WB 文件头:"#!AMR-WBn" (or 0x2321414d522d57420a in hexadecimal).(引号内)

多声道:

多声道的文件头包含一个magic number和32bit channle description域。

AMR-NB 的magic number:"#!AMR_MC1.0n"

(or 0x2321414d525F4D43312E300a in hexadecimal).

AMR-WB的magic number:"#!AMR-WB_MC1.0n"

(or 0x2321414d522d57425F4D43312E300a in hexadecimal).

32bit的channel description域的定义如下:

其中 reserved bits必须为0, CHAN:表示当前文件中含有几个声道。

通过 ffprobe 查看
root@51e7052bc967:/var/www/# ffprobe ./1562327664267_1.amr

ffprobe version 4.0.2 Copyright (c) 2007-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 20160609
  configuration: --enable-shared --enable-libmp3lame --disable-x86asm
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
[amr @ 0xb19ac0] Estimating duration from bitrate, this may be inaccurate
Input #0, amr, from "./1562327664267_1.amr":
  Duration: 00:00:05.06, bitrate: 12 kb/s
    Stream #0:0: Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt
    
    
root@51e7052bc967:/var/www/# ffprobe ./18772355686_20190701164242.amr

ffprobe version 4.0.2 Copyright (c) 2007-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 20160609
  configuration: --enable-shared --enable-libmp3lame --disable-x86asm
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
[amr @ 0x17f9ac0] Estimating duration from bitrate, this may be inaccurate
Input #0, amr, from "./18772355686_20190701164242.amr":
  Duration: 00:04:44.34, bitrate: 13 kb/s
    Stream #0:0: Audio: amr_wb (sawb / 0x62776173), 16000 Hz, mono, flt

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/54182.html

相关文章

  • amr 如何网页直接播放

    摘要:在线播放库禁止自动播放改用手动播放融云音频库使用融云的库示例代码在线播放代码只是基础的播放功能,多次点击会出现多个音频,也没有暂停功能。示例代码优化全局变量播放正在播放,先停止停止播放停止格式有三种文件格式也就是文件格式。 amr 在线播放 alex374/amr-player 库 github: https://github.com/alex374/am... ...

    andot 评论0 收藏0
  • AJAX 的进阶使用(Blob、ArrayBuffer、FormData、Document、JSON

    摘要:让应用程序拥有异步读取存储在用户计算机上文件或原始数据缓冲区的能力,使用或对象指定要读取的文件或数据。对象用来表示通用的固定长度的原始二进制数据缓冲区。事实上,没有名为的全局对象,也没有一个名为的构造函数。 Ajax 即 Asynchronous Javascript And XML (异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。在无需重新加载整...

    wean 评论0 收藏0
  • 微信开发之微信jssdk录音功能开发

    项目需求简单描述 用户长按录音,松手后直接结束录音,结束录音后,用户可以选择重新录音、播放刚才的录音,上传录音(这里的上传录音指上传到自己服务器,上传步骤是,前端调用wx.uploadVoice,后台再到微信服务器下载音频文件,上传到自己的服务器)。注意,音频文件自上传时间算起在微信服务器的有效期为3天。由于后台从微信服务器下载的音频文件是amr格式的,需要后台先把amr文件转换成MP3,前端用a...

    bingchen 评论0 收藏0

发表评论

0条评论

王晗

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<