【问题标题】:What is a good audio library for validating files in Python?什么是用于在 Python 中验证文件的好音频库?
【发布时间】:2011-09-26 08:46:07
【问题描述】:

我已经在检查内容类型、大小和扩展名 (Django (audio) File Validation),但我需要一个库来读取文件并确认它确实是我希望的内容(主要是 mp3 和 mp4) .

我来过这里:http://wiki.python.org/moin/Audio/ 但没有运气。在这家住了一段时间,我有点迷失在树林里。依靠如此大的时间来结束这一切......

提前致谢。

编辑: 我已经(在 Django 中)使用 UploadedFile.content_type() :

“随文件上传的内容类型标头(例如 text/plain 或 application/pdf)。与用户提供的任何数据一样,您不应相信上传的文件实际上是这种类型。您' 仍然需要验证文件是否包含 content-type 标头声明的内容 -- “信任但验证”。

所以,我已经在阅读标题了。但是如何验证文件的实际内容呢?

【问题讨论】:

  • 也许只使用file 命令?
  • 据我所知,文件只使用标题

标签: python validation audio mp3


【解决方案1】:

您可以像这样在 python 中调用 unix 子 shell:

>>> filename = 'Giant Steps.mp3'
>>> import os
>>> type = os.system('file %s' % filename)
Giant Steps.mp3: ISO Media, MPEG v4 system, iTunes AAC-LC

** 如果您想走这条路线,请参阅手册页以获取有关“文件”命令的更多详细信息。

See this post for other options


【讨论】:

  • 这似乎不是一个可靠的跨平台解决方案,但我可能错了。
  • 这个方法只检查文件头,据我所知。我正在寻找一个确认该文件是音频文件的实际库。
  • 正如 Daenyth 所说,Mutagen 是一个很棒的音频库。我认为为 django 验证音频的恐惧在于,如果有人上传了恶意文件,他们可能会执行任意代码。例如,当/如果有人通过您的网站音频播放器播放恶意文件时,您的音频播放器应该足够安全,不会崩溃或执行任意代码。
【解决方案2】:

如果仅检查标题还不够好,我建议使用mutagen 来加载文件。如果不正确,它应该抛出异常。

仅供参考,我不认为您的方法具有很强的可扩展性。 真的需要读取文件的每个字节吗?你不信任文件头的原因是什么?

【讨论】:

  • 我不确定是否有必要说实话。我是一个新手,我只是想遵循 django 文档的强烈建议。该网站将可供任何人和所有人使用,因此安全是可能是一个问题(不知道用户是谁),也就是说,如果有更好/其他方法来解决这个问题,或者它只是不必要的,我肯定会重视任何超出我明确问题的意见。
【解决方案3】:

使用sndhdr

它比内容类型做得更多。读取文件并获取它的标题..当然这仍然不是万无一失的..使用 ffmpeg 可能是唯一的选择。

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2011-09-05
    • 2013-01-27
    • 2011-07-26
    • 2012-12-25
    相关资源
    最近更新 更多