前端如何检测上传的音频是否能够播放?

新手上路,请多包涵

现在有一个这样的需求,就是没办法判断.mp3格式或者wav格式的音频到底能不能播放,因为有些人喜欢骚操作,比如用pdf文件转化成mp3给我传上来,还播放不了,有大佬晓得这个问题怎么弄吗?!

阅读 3.9k
4 个回答

你验证下mime type不就完了?虽然不是绝对准确,但基本上已经能阻挡绝大多数恶意文件了,扩展名+mime type双向验证不就哦了?

mediainfo对于这个需求有点杀鸡焉用宰牛刀的意味了,只是验证下mime type这种简单的需求不需要引入第三方依赖。

一个典型的参考范例可以参见 https://stackoverflow.com/que...

上传前验证文件的mime type,跟你的需求是完全一致的

常见的扩展名和mimetype对照表可以参见: https://developer.mozilla.org...

document.querySelector('input[type="file"]').onchange = function(e){
  var file=this.files[0];
  
  const urlObj = URL.createObjectURL(file);
  const aud=new Audio(urlObj)
  aud.onerror= (e) => {
    console.log(aud.error);
    //有错误的就是不能播放的
  }
}

1、根据文件头信息判断文件格式:每种音频文件格式通常都有其特定的文件头信息,可以根据文件头信息来判断文件格式。需要注意的是,文件头信息可能会被修改,因此这种方法并不完全可靠。
2、可以考虑使用第三方音频文件检测API,如Filestack、CloudConvert等。这些API可以将音频文件上传到云端进行检测,并返回音频文件的格式和元数据。
3、最好还是后端来做检测,后端可以通过FFmpeg库来检测音频文件的格式,以及将音频文件转换为支持的格式,还有一些专门用于解析音频文件的库,如getID3和PHP Audio File

纯前端实现的话,我提供一个思路
使用mediainfo.js去获取实际封装格式
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏