zoukankan      html  css  js  c++  java
  • 微信公众号开发——通过ffmpeg解决amr文件无法播放问题

    今天刚好碰到个需求,要在微信浏览器中实现录音,并在其他页面上播放。录音功能本身是JS SDK的功能,倒没啥问题,然而录音的文件保存下来是amr格式,而IOS的浏览器没法播放amr(据说微信浏览器的video标签可以播放,但没试成功),只能考虑在上传后自动将amr转换成mp3。问题本身不大,但是根据搜索的文章操作时却遇到不少问题,故记录下来。

    服务端系统是CentOS,语言是PHP,实现这个过程主要就两步:

    1. 安装ffmpeg(确保ffmpegffprobe命令可用)
    2. PHP通过php-ffmpeg实现amr转换成mp3;

    安装ffmpeg

    CentOS上,最简单的办法是去官网(http://www.ffmpeg.com/)上下载最新的静态版本(Linux Static Builds),解压后即可使用。

    如果通过yum安装会发现版本过低,转换不成功;而自己编译那就有得折腾了。

    不论通过什么方式,安装成功后,都应该找个amr文件,测试下是否能转换成功:

    $ffmpeg -i test.amr test.mp3
    

    实现amr转换成mp3

    需求比较简单,可以自己调用exec命令实现转换,也可以使用第三方库完成转换,我使用的是PHP-FFMpeg(https://github.com/PHP-FFMpeg/PHP-FFMpeg)这个库。

    安装与引用包是Composer的基础知识,也是现代WEB开发的基础,这里就不展开了。

    一切就绪后,通过以下的例子代码就能完成amrmp3的转换:

    $ffmpeg = FFMpegFFMpeg::create();
    $amr = $ffmpeg->open("test.amr");
    $audio_format = new FFMpegFormatAudioMp3();
    $amr->save($audio_format, "test.mp3");
    

    参考

    CentOS下yum安装ffmpeg(安装的版本过低,没法转换)

  • 相关阅读:
    [bzoj3999] [TJOI2015]旅游
    [bzoj3143] [HNOI2013]游走
    [bzoj3140] [Hnoi2013]消毒
    [bzoj3142] [HNOI2013]数列
    [bzoj4860] [BeiJing2017]树的难题
    [bzoj2599] [IOI2011]Race
    [bzoj1558] [JSOI2009]等差数列
    [bzoj3626] [LNOI2014]LCA
    [bzoj4011] [HNOI2015]落忆枫音
    JQuery
  • 原文地址:https://www.cnblogs.com/pheye/p/6876279.html
Copyright © 2011-2022 走看看