Python3 脚本使用 Pymediainfo 和 AV 库统计视频元数据并写入 Excel
以下是一个可以实现你所需功能的 Python3 脚本,需要安装 pymediainfo 和 av 库:
import os
import csv
import datetime
import pymediainfo
import av
def get_video_metadata(filename):
media_info = pymediainfo.MediaInfo.parse(filename)
video_track = media_info.tracks[0] # 获取视频轨道
metadata = {
'filename': os.path.basename(filename),
'filesize': os.path.getsize(filename),
'duration': datetime.timedelta(milliseconds=int(float(video_track.duration))),
'width': video_track.width,
'height': video_track.height,
'codec': video_track.codec,
'bitrate': video_track.bit_rate,
'framerate': video_track.frame_rate,
'audio_codec': '',
'audio_bitrate': 0,
'audio_sample_rate': 0,
'audio_channels': 0
}
for track in media_info.tracks:
if track.track_type == 'Audio':
metadata['audio_codec'] = track.codec
metadata['audio_bitrate'] = track.bit_rate
metadata['audio_sample_rate'] = track.sample_rate
metadata['audio_channels'] = track.channel_s
return metadata
def write_to_excel(metadata_list, output_file):
with open(output_file, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Filename', 'File size', 'Duration', 'Width', 'Height', 'Codec', 'Bitrate', 'Framerate', 'Audio codec', 'Audio bitrate', 'Audio sample rate', 'Audio channels'])
for metadata in metadata_list:
writer.writerow([metadata['filename'], metadata['filesize'], metadata['duration'], metadata['width'], metadata['height'], metadata['codec'], metadata['bitrate'], metadata['framerate'], metadata['audio_codec'], metadata['audio_bitrate'], metadata['audio_sample_rate'], metadata['audio_channels']])
def main():
input_dir = '/path/to/video/folder'
output_file = 'video_metadata.csv'
metadata_list = []
for filename in os.listdir(input_dir):
if filename.endswith('.mp4') or filename.endswith('.avi'):
try:
metadata = get_video_metadata(os.path.join(input_dir, filename))
metadata_list.append(metadata)
except Exception as e:
print(f'Error processing {filename}: {e}')
write_to_excel(metadata_list, output_file)
if __name__ == '__main__':
main()
该脚本会读取指定文件夹中的所有 mp4 和 avi 视频文件,利用 pymediainfo 和 av 库获取视频元数据,然后将元数据写入一个 CSV 文件中。你可以通过修改 input_dir 和 output_file 变量来指定输入目录和输出文件名。
原文地址: http://www.cveoy.top/t/topic/mzYR 著作权归作者所有。请勿转载和采集!