有没有一个Python库可以提取视频元数据,例如[标题,描述,说明文字/副标题]?

问题描述 投票:0回答:2

我目前正在尝试寻找可以帮助我从视频文件中提取元数据或信息的 python 库,例如 [mp4、Mkv、Avi、WebM、mpg] 格式。

我重点从视频文件中提取的主要数据主要是[标题、描述、评论、字幕/副标题]。

我尝试按照本指南使用 FFmpeg-python:https://www.thepythoncode.com/article/extract-media-metadata-in-python

和 Tinytag,https://www.geeksforgeeks.org/access-metadata-of-various-audio-and-video-file-formats-using-python-tinytag-library/

根据我的理解,FFmpeg-python 提供了来自 probe() 函数的大部分数据,但输出不包含 [Title, Description, Comment] 和 lined_captions 只是“0”,我认为这是源轨道。

感谢您提供的任何帮助。

python ffmpeg html5-video data-extraction pyffmpeg
2个回答
2
投票

您可以使用

ffprobe
获取元数据:

import subprocess as sp
import json
import pprint

out = sp.run(['ffprobe','-of','json','-show_entries', 'format:stream', videofile],\
             stdout=sp.PIPE, stderr=sp.PIPE, universal_newlines=True)
results = json.loads(out.stdout)
metadata_format = results['format']['tags']
metadata_streams = [res['tags'] for res in results['streams']]

pprint(metadata_format) # "main" metadata: Title & Description found here
pprint(metadata_streams) # per-stream metadata

对于字幕/隐藏式字幕,您需要使用

ffmpeg
:

读取字幕流
# get subtitle in webvtt format
out = sp.run(['ffmpeg','-i',videofile, '-map', 's:0', '-f','webvtt','-'],\
             stdout=sp.PIPE, stderr=sp.PIPE, universal_newlines=True)
subtitle = out.stdout

然后你可以使用像

webvtt-py
这样的库来解析字幕数据。 (我没有第一手经验,所以自己尝试一下。)

但有一点需要注意。如果您的视频是 DVD rip,则其字幕流 (dvd_subtitle) 是位图而不是文本,并且 FFmpeg 无法将其转换为文本数据。


0
投票

是否有真正的Python库来提取视频元数据,例如[标题、描述、标题/副标题]? ffprobe 或 ffmpeg 是需要从 python 调用的外部工具。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.