背景是公司有一个业务需求是用到了科大讯飞的文字语音转换,需要对科大讯飞转换出来的语音文件做合成。
在linux下现有的音频合成软件用的最多的应该也就是ffmpeg了,所以选择了ffmpeg。
虽然在开发前就对ffmpeg的php拓展N年没更新有所了解,所以也没打算用,就想直接通过exec()执行shell调用就好了,可是开发完之后领导说这个函数他不安全,把exec(), system()都给禁用了。
无奈之下只能死磕下ffmpeg-php extension,在git中找个几个,发现了个还算靠谱的
https://github.com/PHP-FFMpeg/PHP-FFMpeg
可以不用安装拓展,纯php把ffmpeg跑起来(还没能细拆代码,不知道最后是不是也是调用的exec())……
不过composer下来之后跑起来倒是异常的顺利,各个功能的接口都很好用
看文档上面是有MP4文件的合成的,那我的MP3文件合成应该也没有大问题。
试了下合成MP4没有问题,开始写了个demo合成MP3,不是不知道,试了这坑吓我一大跳。
首先是Audio.php这个类没有concat方法,这个还算小问题,自己加一下,丢去Concat类就好了(好歹是2000多star的项目,咋这么不走心!!(╯' - ')╯︵ ┻━┻ )
/**
* Concatenates a list of audio into one unique audio.
*