Python 3 脚本:使用 pymediainfo 库提取视频元数据并写入 Excel
以下是一个使用 pymediainfo 库统计视频元数据并将其写入 Excel 的 Python 3 脚本示例:
import os
import csv
import sys
from pymediainfo import MediaInfo
def get_metadata(filename):
media_info = MediaInfo.parse(filename)
metadata = {}
for track in media_info.tracks:
if track.track_type == 'General':
metadata['duration'] = track.duration
metadata['format'] = track.format
metadata['bitrate'] = track.overall_bit_rate
metadata['filesize'] = track.file_size
elif track.track_type == 'Video':
metadata['video_codec'] = track.codec_id
metadata['width'] = track.width
metadata['height'] = track.height
metadata['framerate'] = track.frame_rate
elif track.track_type == 'Audio':
metadata['audio_codec'] = track.codec_id
metadata['channels'] = track.channel_s
metadata['sampling_rate'] = track.sampling_rate
metadata['language'] = track.language
return metadata
def write_to_csv(metadata, output_file):
with open(output_file, 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow(metadata.values())
def main():
if len(sys.argv) < 3:
print('Usage: python3 metadata.py input_directory output_file.csv')
sys.exit(1)
input_directory = sys.argv[1]
output_file = sys.argv[2]
with open(output_file, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Filename', 'Duration', 'Format', 'Bitrate', 'Filesize', 'Video Codec', 'Width', 'Height', 'Framerate', 'Audio Codec', 'Channels', 'Sampling Rate', 'Language'])
for root, dirs, files in os.walk(input_directory):
for filename in files:
if filename.endswith('.mp4') or filename.endswith('.mkv'):
filepath = os.path.join(root, filename)
metadata = get_metadata(filepath)
metadata['filename'] = filename
write_to_csv(metadata, output_file)
if __name__ == '__main__':
main()
该脚本接受两个命令行参数:输入目录和输出文件名。它会遍历输入目录中的所有.mp4和.mkv文件,并使用pymediainfo库获取视频元数据。然后,它将元数据写入一个CSV文件,每一行代表一个视频文件的元数据。输出文件的第一行是标题行。
原文地址: https://www.cveoy.top/t/topic/mz0K 著作权归作者所有。请勿转载和采集!