在最近的H5项目中,遇到了个棘手的问题。

项目中需要使用微信录音的JSSDK接口,录完音后上传到自己的服务器上。流程如图:

整个流程非常清晰,也十分顺利。但下载到网站服务器上的文件时amr格式的音频文件。这种文件前端页面无法直接播放,无论时audio标签,还是各类JS播放音频文件的库都不支持直接播放amr文件。

查了很多资料,总共有以下三种解决方案:

1、上传时通过阿里云OOS、七牛云等云存储系统的API接口直接转码保存

这里以阿里云OOS为例,文档地址:传送门

但是!!!!!

阿里云OOS云存储系统跟媒体对象处理的功能是分别收费的!媒体对象转码功能需要额外付费。。。公司只购买了OOS云存储系统,没有购买媒体对象的功能,申请又不批,只能另寻他策。

2、前端页面转码

主要流程是,将amr文件下载到客户端设备,然后在本地进行转码成MP3播放。该方案主要使用benz-amr-recorder的库(其他转码库的原理基本一致),基于amr.js与recorder.js的库。文档地址:传送门

但是这种库的转码十分麻烦,而且用户体验非常糟糕。

3、服务器转码

在前面两种方案行不通的情况下只能将文件下载到服务器的同时进行转码。主要使用的技术是ffmpeg转码。本人使用的就是这种方案,主要是方案一不给钱,不然的话方案一是最优解。

因为网站服务器是centOS系统,所以我是参考的这个文章进行的安装与操作:linux下使用ffmpeg将amr转成mp3

虽然是2018年的文章,但亲测可用。

最后采用了一种比较迂回的方案解决这个问题

总算解决的当前需求。

总结:

在前端是无法直接播放amr文件的,需要将其转码成通用的Mp3格式。转码可以从三个方面考虑。按友好度跟效率分别为:云存储转码、服务器转码、前端页面转码。

网页上播放微信录音amr文件方案相关推荐

  1. 微信录音amr音频文件转mp3格式

    直到现在,仍然不存在一项旨在网页上播放音频的标准.HTML5 规定了一种通过 audio 元素来包含音频的标准方法.audio 元素能够播放声音文件或者音频流.当前,audio 元素支持三种音频格式: ...

  2. 在网页上播放多种后缀的视频文件的临时解决方案

    公司有一个项目,要在网页上播放各种视频文件.HTML5的video标签可以支持:1)带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件:2)带有 H.264 视频编码和 AAC 音 ...

  3. html网页播放flac,教你如何无损录制网页上播放的声音

    要对网页上的声音进行无损录制其实很简单,不管是网页上所播放视频上的声音,还是网页上的动画里发出的声音,或者是网页的背景音乐,都是可以进行无损录制的. 1,首先打开浏览器,并在百度上搜索下载支持无损内录 ...

  4. HTML5网页上播放mp4失败的原因

    HTML5网页上播放mp4失败的原因 这个不错: https://blog.csdn.net/jacke121/article/details/84568802 解决方法1: FFMPEG  -i   ...

  5. 网页上播放视频的免费的播放器_CKPlayer

    今天在工作的过程中遇到一个功能:在网页中加入视频播放器,类似于我们经常看到的优酷,爱奇艺等视频网站的功能. ckplayer(官网:http://www.ckplayer.com/)是一款在网页上播放 ...

  6. 微信录音amr解码问题

    微信录音amr格式在php后端进行转码只有两种办法 1.ffmpeg工具实现,需要安装拓展,比较繁琐 参考地址: https://blog.csdn.net/bq_cui/article/detail ...

  7. 微信录音amr转mp3

    /** 微信录音amr转mp3* @param filePath 需要转换的文件*/ public static String transWxformMp3(String filePath, Stri ...

  8. xbox one 越狱_如何在Xbox One上播放视频和音乐文件

    xbox one 越狱 The Xbox One has integrated TV features and support for streaming media apps like Netfli ...

  9. java 将微信录音amr转换为mp3格式

    2020年更新,这是4前写的了文章了,今天找东西,登录账号发现一堆几年前的评论,真抱歉,我没回复你们 如果有需要,尽量参考评论中的解决办法吧. https://blog.csdn.net/dadiya ...

最新文章

  1. Subversion存储库中“分支”,“标记”和“主干”的含义是什么?
  2. Vue 子组件调用父组件的方法
  3. 在使用代理的服务器上“curl: (6) Could not resolve host:“问题的解决方案
  4. mysql存储过程的正确描述_MySQL存储过程中的基本函数描述
  5. Servlet+MyBatis项目转Spring Cloud微服务,多数据源配置修改建议
  6. 持续提高安卓应用安全性与性能
  7. Mirth Connect 第三章 创建通道
  8. 洛谷p3764签到题3
  9. automation服务器不能创建对象
  10. Matlab水果识别——基于形态学处理的水果识别
  11. javaer的目标,是星辰大海!
  12. C语言中printf格式详解
  13. 人工智能数学课高等数学线性微积分数学教程笔记(7. 最优化)
  14. EMS 项目练习(Employee Manager System 员工管理系统)
  15. matlab求函数在x0的值,MATLAB和C++数据交类实例---求任意函数y=f(x)的n阶导数,并计算在x=x0处的值...
  16. 如何做好项目风险管理
  17. CLRS 2.2分析算法
  18. AWS认证是什么?怎么报考?
  19. 替换window.showModalDialog 已解决!!!
  20. C# 接收邮件之QQ邮箱

热门文章

  1. 对多个Word文件批量添加页码,自由分页。Word精灵V5.0
  2. QQ空间点赞Jquery代码
  3. Turing GPU将如何彻底改变沉浸式AI
  4. 向下取整数学符号_向上取整与向下取整
  5. python报错系列(9)--SyntaxError: Missing parentheses in call to ‘print‘. Did you mean print()
  6. MATLAB 全景图切割及盒图显示
  7. 如何实现ASP.NET中网站访问量的统计
  8. 二十分(java更新至2021年)
  9. 某国企 测试工程师 面试记录 2021-11-04
  10. java给朋友发微信_微信api接口,给微信好友收发消息