温馨提示:阅读时长约2分钟;
前言
公司是资讯类产品,因此后台采用了开源的编辑器供运营原创文章、上传图片、视频等,这不,运营上传完视频发布文章后,发现文章里面的音频播放不了;
而这,就是故事的开端;
跟进
抓包,获取音频链接;
尝试在PC的Chrome上打开,发现不能打开;
心里寻思了一下:
- 这功能之前运营就在使用,如果有问题,应该早就反馈了,为啥现在才反馈?
- 之前运营大多数是上传mp4,这次mp3,会不会有关系?
- 这次的文件大小稍微大点,10M,之前1、2M都没问题的;
因此有了几个怀疑点:
- 研发最近是不是有改动过这块代码?
- 验证下mp3、mp4是否都正常;
- 文件大小是否也会有影响;
经过确认,上面说的3点都没关系;
比如同是mp3且都是10M,一个可以正常播放,而有问题的还是有问题:
没问题(10M)
https://img.51hjgt.com/attachment/pagemanage/20190522/1558490847849240.mp3
有问题(10M)
https://img.51hjgt.com/attachment/pagemanage/20190522/1558490919310761.mp3
复制代码
心里郁闷啊!
既然跟文件大小、格式都没关系,那有没可能上传到服务器后导致音频损坏之类的?又或者,跟nginx配置有没关系?
然后去服务器下载该音频,然后用Windows本地打开,发现能正常打开;
那就是说,上传后文件也没损坏,一切都很正常;
继续尝试,在手机上是否正常?
首先试试收集某克浏览器,能获取到音频长度,能正常播放:
那在微信上点击试试,却无法正常播放;
首先说明,视频是正常的,但是同时,百思不得其解,想不懂问题出在哪里,根据上面的分析,感觉都没错。。
如果非要说,感觉就是这个音频有问题,因为其他mp3都正常,就这个有问题,但是,毫无证据。。
高人指点
寻思半天,实在没辙,只能寻找高人,此处手动感谢@老罗,不然真搞不定;
老罗听完之后,过段时间说,这Mp3格式有问题,然后就给了个截图:
原来这音频是wma格式,后面可能被改后缀,就一直以为是mp3了,同时网上搜索chrome不能播放wma,发现大家都遇到这问题;
既然如此,那就把格式转mp3试试看正常不,直接选择格式工厂,转换mp3,然后发现可以正常播放了;
看吧,事情就完美解决了;
怎么发现
问题虽然解决了,但是反思,为啥Jb不会?然后就去问老罗大佬,大佬就说用FFmpeg
看,并且丢了一个链接过来;
既然内容有了,就自己研究吧;
FFmpeg
第一次听这玩意,只能Google了,FFmpeg官网链接;
官网的描述是这样的:
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
复制代码
打开官网后,会有大写的download
,各平台都支持,感觉还可以;
Windows
对于Windows来说,不需要安装,直接下载就是一个zip包,解压后,在bin
目录下执行ffprobe.exe 音频文件
即可:
ffprobe.exe test.mp3
复制代码
这样就能看到这个文件的格式就是wma
:
通过gs工厂转成mp3
后,再查看,发现是真的改成mp3
,怪不得可以播放了;
Linux
打开官网,直接选择最新的下载,然后上传服务器;
tar -xjvf ffmpeg-4.1.3.tar.bz2
cd ffmpeg-4.1.3
./configure
复制代码
此时会提示yasm
未安装的提示,yasm
是一款汇编器,并且是完全重写了nasm
的汇编环境,接收nasm
和gas
语法,支持x86
和amd64
指令集,那就安装一波;
yum install yasm
复制代码
然后继续安装ffmpeg
:
./configure
make
make install
复制代码
时间比较久,安装完后,输入ffmpeg
,没报错就说明安装成功了;
这时候,再把有wma
视频上传去看看;
一样的用法,没问题;
小结
行吧,这里只是简单介绍下ffmpeg
,如果感兴趣,可以点击这里去了解;
这件事情不难,只要是对音频有了解过的,可能就很快发现问题了,所以,知识广度还是有需要的,不一定需要精通,能解决问题就可以了;
最后,谢谢大家~