搜索
首页后端开发Python教程使用Python访问各种音频和视频文件的元数据

使用Python访问各种音频和视频文件的元数据

Sep 05, 2023 am 11:41 AM
python视频音频元数据访问

使用Python访问各种音频和视频文件的元数据

我们可以使用 Mutagen 和 Python 中的 eyeD3 模块访问音频文件的元数据。对于视频元数据,我们可以使用电影和 Python 中的 OpenCV 库。元数据是提供有关其他数据(例如音频和视频数据)的信息的数据。音频和视频文件的元数据包括文件格式、文件分辨率、文件大小、持续时间、比特率等。通过访问这些元数据,我们可以更有效地管理媒体并分析元数据以获得一些有用的信息。在本文中,我们将了解 Python 提供的一些用于访问音频和视频文件元数据的库或模块。

访问音频元数据

一些用于访问音频文件元数据的库是 -

使用诱变剂库

Mutagen 是一个开源 Python 模块,用于处理音频元数据。它支持几乎所有类型的音频文件,如mp3、mp4、OGG、FLAC等。Mutagen用于访问音频文件的元数据,也用于操作音频数据。

在使用mutagen之前,我们可以使用Python中的pip命令安装mutagen。

pip install mutagen

Pip 是一个 Python 包管理器。 Pip install mutagen 会在您的本地文件中安装 mutagen 库。

语法

audio["TIT2"].text[0]

audio[“TIT2”] 属性以键值对的形式返回一个对象,其中包含有关音频文件的各种信息。使用对象中的文本键访问音频文件的标题。

audio.info.length

audio.info返回一个包含音频文件所有信息的对象。可以使用audio.info.length来访问音频文件的长度,它会返回以秒为单位的长度。

示例

下面是如何使用 mutagen 中的 mutagen.mp3 模块访问 mp3 文件的元数据的示例。

from mutagen.mp3 import MP3

audio = MP3("audio.mp3") # put your audio file in the place of audio.mp3
print(audio.info.length)  # Print the length of the audio file
print(audio["TIT2"].text[0])  # Print the title of the audio file

输出

222.17142857142858
Suhana Safar Par Prem Nagar Hai

使用eyeD3库

eyeD3 也是一个 Python 开源库,用于处理音频文件,特别是 mp3 音频文件。使用eyeD3,我们可以读取和写入音频文件的元数据,还可以操作或更新音频文件。

在使用 eyeD3 之前,我们可以使用 python 中的 pip 命令安装它 -

pip install eyeD3

Pip 是一个 Python 包管理器。 Pip install eyeD3 在本地文件中安装 eyeD3 库。

语法

eyed3.load(your_audio_file)

eyed3.load()函数加载音频文件并可以存储在变量中。参数your_audio_file是您需要加载的音频文件的路径。

算法

  • 使用eyed3.load函数加载任何音频文件

  • 使用audio.info.time_secs属性访问音频文件长度。

  • 使用 audio.tag.title 属性访问音频文件的标题。

示例

这里是使用eyeD3访问音频文件元数据的示例。

import eyed3

audio = eyed3.load("audio.mp3") # put your audio file in the place of audio.mp3
print(audio.info.time_secs)  # Print the length of the audio file
print(audio.tag.title)  # Print the title of the audio file

输出

223.33
Suhana Safar Par Prem Nagar Hai

访问视频元数据

Python 还有一些用于访问视频文件元数据的开源库,例如 -

方法1:使用Moviepy库

moviepy 是一个开源的 Python 库,用于视频编辑。它还可以用来访问视频文件的元数据。Moviepy 支持多种视频文件格式,如 mp4、AVI、MOV 等。Moviepy 可以帮助我们读取和写入视频文件的元数据,并对视频文件进行操作。

在使用 moviepy 之前,您必须使用 python 中的 pip 命令安装 moviepy 库: -

pip install moviepy

算法

要使用moviepy来访问视频文件的元数据,我们必须 -

  • 从moviepy.editor导入VideoFileClip模块

  • 使用VideoClipFile加载视频文件

  • 使用movipy的属性(如duration,size等)访问已加载的视频文件的元数据。

示例

我们将从moviepy.editor包中导入VideoFileClip模块,然后使用VideoFileClip模块加载我们的视频文件。 Video.durationvideo.size分别返回视频文件的持续时间和显示尺寸。

from moviepy.editor import VideoFileClip

video = VideoFileClip("video.mp4")
print(video.duration)  # Print the duration of the video
print(video.size)  # Print the size of the video

输出

50.74
[1920, 1080]

使用OpenCV库

OpenCV是一个在Python中使用的开源计算机视觉库,用于处理视频数据。它还可以用于访问各种视频文件格式(如MP4、AVI、MOV等)的元数据。可以使用OpenCV读取和写入视频文件的元数据,并进行视频处理。

在使用 cv2 模块之前,我们必须使用 Python 中的 pip 命令安装 opencv-python-headless -

pip install opencv-python-headless

Pip 是一个 Python 包管理器。Pip install opencv-python-headless 在您的本地文件中安装了 openCv 库。

语法

video.get(cv2.CAP_PROP_FPS)

Cv2 .CAP_PROP_FPS 返回视频文件的帧速率。使用 video.get() 函数返回特定视频的帧速率。

video.get(cv2.CAP_PROP_FRAME_WIDTH)

cv2.CAP_PROP_FRAME_WIDTH返回视频文件的帧宽度。使用video.get()函数可以返回特定视频的帧宽度。

video.get(cv2.CAP_PROP_FRAME_HEIGHT)

cv2.CAP_PROP_FRAME_HEIGHT 返回视频文件的帧高度。使用 video.get() 函数返回特定视频的帧高度。

算法

要使用OpenCV访问视频文件的元数据,我们必须执行以下操作−

  • 导入opencv

  • 使用 cv2.VideoCapture 属性加载视频文件

  • 使用 CAP_PROP_FRAME_WIDTH、FRAME_HEIGHT 等属性访问文件的各种元数据。

示例

使用 cv2.VideoCapture 模块将视频文件导入变量中。现在,这个存储的视频文件可用于使用 cv2 模块中的 CAP_PROP_FPS、CAP_PROP_FRAME_WIDTH 等属性获取元数据。

import cv2

video = cv2.VideoCapture("video.mp4")
fps = video.get(cv2.CAP_PROP_FPS)  # Get the frame rate of the video
width = video.get(cv2.CAP_PROP_FRAME_WIDTH)  # Get the width of the video
height = video.get(cv2.CAP_PROP_FRAME_HEIGHT)  # Get the height of the video

print(fps, width, height)  # Print the frame rate, width, and height of the video

输出

60.0 1920.0 1080.0

结论

在本文中,我们讨论了 Python 提供的一些用于访问音频和视频文件元数据的库。对于音频文件,我们探索了 mutagen 和 eyeD3 库;对于视频文件,我们探索了 moviepy 和 openCV 库。 Python 中还有许多其他库可用于访问音频和视频文件的元数据。最好浏览这些库的文档,以便更好地了解这些库提供的功能。

以上是使用Python访问各种音频和视频文件的元数据的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:tutorialspoint。如有侵权,请联系admin@php.cn删除
在Python阵列上可以执行哪些常见操作?在Python阵列上可以执行哪些常见操作?Apr 26, 2025 am 12:22 AM

Pythonarrayssupportvariousoperations:1)Slicingextractssubsets,2)Appending/Extendingaddselements,3)Insertingplaceselementsatspecificpositions,4)Removingdeleteselements,5)Sorting/Reversingchangesorder,and6)Listcomprehensionscreatenewlistsbasedonexistin

在哪些类型的应用程序中,Numpy数组常用?在哪些类型的应用程序中,Numpy数组常用?Apr 26, 2025 am 12:13 AM

NumPyarraysareessentialforapplicationsrequiringefficientnumericalcomputationsanddatamanipulation.Theyarecrucialindatascience,machinelearning,physics,engineering,andfinanceduetotheirabilitytohandlelarge-scaledataefficiently.Forexample,infinancialanaly

您什么时候选择在Python中的列表上使用数组?您什么时候选择在Python中的列表上使用数组?Apr 26, 2025 am 12:12 AM

useanArray.ArarayoveralistinpythonwhendeAlingwithHomeSdata,performance-Caliticalcode,orinterFacingWithCcccode.1)同质性data:arrayssavememorywithtypedelements.2)绩效code-performance-clitionalcode-clitadialcode-critical-clitical-clitical-clitical-clitaine code:araysofferferbetterperperperformenterperformanceformanceformancefornalumericalicalialical.3)

所有列表操作是否由数组支持,反之亦然?为什么或为什么不呢?所有列表操作是否由数组支持,反之亦然?为什么或为什么不呢?Apr 26, 2025 am 12:05 AM

不,notalllistoperationsareSupportedByArrays,andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorinsertwithoutresizing,wheremactssperformance.2)listssdonotguaranteeconeeconeconstanttanttanttanttanttanttanttanttimecomplecomecomecomplecomecomecomecomecomecomplecomectaccesslikearrikearraysodo。

您如何在python列表中访问元素?您如何在python列表中访问元素?Apr 26, 2025 am 12:03 AM

toAccesselementsInapythonlist,useIndIndexing,负索引,切片,口头化。1)indexingStartSat0.2)否定indexingAccessesessessessesfomtheend.3)slicingextractsportions.4)iterationerationUsistorationUsisturessoreTionsforloopsoreNumeratorseforeporloopsorenumerate.alwaysCheckListListListListlentePtotoVoidToavoIndexIndexIndexIndexIndexIndExerror。

Python的科学计算中如何使用阵列?Python的科学计算中如何使用阵列?Apr 25, 2025 am 12:28 AM

Arraysinpython,尤其是Vianumpy,ArecrucialInsCientificComputingfortheireftheireffertheireffertheirefferthe.1)Heasuedfornumerericalicerationalation,dataAnalysis和Machinelearning.2)Numpy'Simpy'Simpy'simplementIncressionSressirestrionsfasteroperoperoperationspasterationspasterationspasterationspasterationspasterationsthanpythonlists.3)inthanypythonlists.3)andAreseNableAblequick

您如何处理同一系统上的不同Python版本?您如何处理同一系统上的不同Python版本?Apr 25, 2025 am 12:24 AM

你可以通过使用pyenv、venv和Anaconda来管理不同的Python版本。1)使用pyenv管理多个Python版本:安装pyenv,设置全局和本地版本。2)使用venv创建虚拟环境以隔离项目依赖。3)使用Anaconda管理数据科学项目中的Python版本。4)保留系统Python用于系统级任务。通过这些工具和策略,你可以有效地管理不同版本的Python,确保项目顺利运行。

与标准Python阵列相比,使用Numpy数组的一些优点是什么?与标准Python阵列相比,使用Numpy数组的一些优点是什么?Apr 25, 2025 am 12:21 AM

numpyarrayshaveseveraladagesoverandastardandpythonarrays:1)基于基于duetoc的iMplation,2)2)他们的aremoremoremorymorymoremorymoremorymoremorymoremoremory,尤其是WithlargedAtasets和3)效率化,效率化,矢量化函数函数函数函数构成和稳定性构成和稳定性的操作,制造

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具