用python检测音频文件完整性

用python检测音频文件完整性,python,audio,Python,Audio,如果我从网上下载一个音频文件,并且下载过程中发生了一些不好的事情,那么如何使用python有效地检测到音频文件不完整 有一些想法,例如: 文件audio.mp4 但它认识到这是mp4: audio.mp4:ISO媒体,MPEG v4系统,版本2 即使mplayer也会检测mp4音频类型,但在尝试播放时失败。不过,我不认为从python启动MPlayerF并检查它是否失败是一个可伸缩的解决方案 以下是一个断开文件的示例: 上述样本因诱变剂和mp4file失效,导致它们无限期悬挂。它与fileOb

如果我从网上下载一个音频文件,并且下载过程中发生了一些不好的事情,那么如何使用python有效地检测到音频文件不完整

有一些想法,例如:

文件audio.mp4

但它认识到这是mp4:

audio.mp4:ISO媒体,MPEG v4系统,版本2

即使mplayer也会检测mp4音频类型,但在尝试播放时失败。不过,我不认为从python启动MPlayerF并检查它是否失败是一个可伸缩的解决方案

以下是一个断开文件的示例:


上述样本因诱变剂和mp4file失效,导致它们无限期悬挂。它与fileObject.tell()有关。

有许多不同的音频文件格式和容器格式,这些格式可能是音频文件,也可能不是音频文件

幸运的是,有些库可以存储多种不同类型的文件。还有用于以下内容的Python包装器:

  • 可移植的命令行工具,如ffmpeg和mplayer
  • 可移植库,如libavcodec(ffmpeg使用的)
  • 特定于平台的库,如Core Audio、QuickTime或Windows Media
如果您愿意为不同的文件类型使用不同的包装器,那么还有更多的选择(例如,libmp4v2非常适合MP4文件,但对其他任何文件都没有用处)

当然,功能更强大的库通常会变得更复杂,或者有更多的先决条件,这是一个巨大的权衡。做一些搜索,看看会出现什么;你应该能够找到你想要的东西


对于一个非常简单的示例,将尝试解析任何MPEG4容器。如果它是不完整的,或者有任何无效的原子,你会得到一个异常。因此,检查只有一行,
mp4file.mp4file(path)
。如果成功了,就完成了;如果它抛出异常,则它是不完整或无效的。但当然,这将接受完整的MPEG4视频文件,或不包含音频或视频的MPEG4,并且它将拒绝完整的MP3,甚至拒绝包含一个损坏元数据标签的完整M4A。

您是否特别尝试查找不完整的MPEG4文件(无论是否为音频)或不完整的音频文件(无论它们采用何种格式),或者别的什么?现在只有mpeg4文件。谢谢,我试过了,它有点效果。问题是,对坏文件执行
mp4file.mp4file(path)
将使该行挂起。输出中没有抛出异常。在有效文件上,它会立即返回。问题在于file.tell()。在while循环中,它停留在32。当我使用诱变剂库时,同样的问题也存在。诱变剂挂起?认真地你能把测试文件上传到某个地方,然后把测试代码发布到pastebin或者其他任何地方吗?