寻找一个知道检测对特定音频视频格式文件支持的库

Posted

技术标签:

【中文标题】寻找一个知道检测对特定音频视频格式文件支持的库【英文标题】:In search for a library that knows to detect support for specific Audio Video format files 【发布时间】:2013-08-02 21:53:01 【问题描述】:

我正在构建一个移动网络应用程序,并且我正在实施视频和音频标签。显然,并非所有设备都知道可以运行所有文件格式。 Modernizr 知道将编解码器返回给我,但我怎么知道我的文件是否有这个特定的编解码器?

我可以识别文件扩展名或 mim 类型,但我需要将编解码器与文件扩展名进行比较,并用这些数据维护一个数组,这似乎是一项孤注一掷的任务。

你们说什么?任何人都知道一个知道为我们提供这些信息的好图书馆吗?或者也许我的方法是错误的,有更好的方法来实现它。

请不要让 Firefox 操作系统例如向用户显示操作系统不支持特定文件格式的消息,但他在处理音频文件时不提供此消息。这意味着我需要向用户提供这种反馈,而且我也更喜欢以自定义的可视化方式为我的应用程序提供反馈。

一个例子: 我有video.mp4。 Modernizr 返回 H264 的编解码器。这两条信息不相关。 我无法为我的视频以所有可用的视频格式运行后备。该应用程序是云文件托管(如保管箱)的浏览器,如果用户上传了一个无法在 FirefoxOS 上运行的文件,那么他必须明白为什么它的文件无法运行,为此我需要这个库,而不是自己管理这种压缩。

一些参考资料:

Mozile - Supported media formats Dive Into html5 - detect video formats

谢谢。

【问题讨论】:

【参考方案1】:

如果您可以访问 mime 类型,您可以简单地使用 audiovideocanPlayType() 方法:

canPlay = (function()
  var a = document.createElement('audio'),
      v = document.createElement('video');

  function canPlayAudio(type)
    var mime = 'audio/';
    if (a && a.canPlayType) 
      if (type.indexOf(mime) === -1) type = mime+type;
      return !!a.canPlayType(type) || !!a.canPlayType(type.replace(/^audio\/(x-)?(.+)$/, mime+'x-$2'))
     return false
  

  function canPlayVideo(type)
    var mime = 'video/';
    if (v && v.canPlayType) 
      if (type.indexOf(mime) === -1) type = mime+type;
      return !!v.canPlayType(type) || !!v.canPlayType(type.replace(/^video\/(x-)?(.+)$/, mime+'x-$2'))
     return false
  

  return 
    audio: canPlayAudio,
    video: canPlayVideo
  
)();

然后您可以执行这样的测试(注意:包括"audio/""video/" 部分是可选的):

canPlay.audio('audio/mpeg')  // true
canPlay.audio('m4a')         // true
canPlay.audio('wav')         // true
canPlay.audio('flac')        // false
canPlay.audio('audio/ogg')   // true

canPlay.video('video/mpeg')  // false
canPlay.video('video/mp4')   // true
canPlay.video('m4v')         // true
canPlay.video('video/webm')  // true
canPlay.video('avi')         // false

【讨论】:

感谢@idbehold 的这个伟大方向。为了得到可能我必须通过编解码器。知道如何实现吗? 伙计——你有关于编解码器识别的答案吗?所以我真的能够用我的赏金完全奖励你吗? @NeoSwf 我不相信有一种程序化的方式来处理编解码器。如果您知道某些需要包含编解码器的 mime 类型,我可以尝试为它们添加特定检查。让我知道它们是什么。 我已经手动对扩展进行了检查,以便可能达到。谢谢你,兄弟。估计没有

以上是关于寻找一个知道检测对特定音频视频格式文件支持的库的主要内容,如果未能解决你的问题,请参考以下文章

音频文件元数据的最佳库? [关闭]

Bpm音频检测库[关闭]

声音分析库? [关闭]

用JavaScript检测音频格式支持

Python玩转各种多媒体,视频音频到图片

Python玩转各种多媒体,视频音频到图片