以下是一个可以实现你所需功能的 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_diroutput_file 变量来指定输入目录和输出文件名。

Python3 脚本使用 Pymediainfo 和 AV 库统计视频元数据并写入 Excel

原文地址: http://www.cveoy.top/t/topic/mzYR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录