我正在尝试遍历一个文件列表,并返回那些媒体文件(图像、视频、gif、音频等)。
鉴于有很多媒体类型,是否有一个库或更好的方法来检查这一点,而不是列出所有类型,然后检查一个文件对该列表?
以下是我目前正在做的事情:
import os
types = [".mp3", ".mpeg", ".gif", ".jpg", ".jpeg"]
files = ["test.mp3", "test.tmp", "filename.mpg", ".AutoConfig"]
media_files = []
for file in files:
root, extention = os.path.splitext(file)
print(extention)
if extention in types:
media_files.append(file)
print("Found media files are:")
print(media_files)
但是请注意,它不包括filename.mpg
,因为我忘记将.mpg
放入我的types
列表中(或者,更有可能的是,我不期望该列表包括.mpg
文件,所以没有想到将其列出)。
4条答案
按热度按时间eimct9ow1#
为此,您需要获取文件的互联网媒体类型,按/字符拆分,并检查它是否以音频,视频,图像开头。
下面是一个示例代码:
创建模块
如果你想创建一个模块来检查文件是否是一个媒体文件,你需要在模块的开头调用init函数。
以下是如何创建模块的示例:
ismediafile.py
以及如何使用它:
main.py
wn9m85ua2#
还有另一种方法,它不是基于文件扩展名,而是基于使用介质类型库pypi.org/project/python-libmagic的文件内容:
下面是该库的示例代码:
**注意:**要使用此代码示例,您需要使用pip安装python-libmagic。
wrrgggsh3#
另一种选择是利用FFmpeg,它支持现有的大多数媒体格式,当想了解每个文件的媒体类型时,这一点特别有用。
使用ffprobe-python软件包(
pip install ffprobe-python
):这种方法可能比只阅读文件扩展名或MIME类型慢得多,因为它可能会摄取整个文件。另一方面,有可能获得更多关于所载媒体类型和元数据的信息。
仅选择包含音频的文件:
图像和视频类似:
或收集编解码器名称:
zqry0prt4#
您可以按如下方式列出媒体文件:
输出: