对下面的python3代码进行修改将FrameRate转换为数字import osimport reimport subprocessimport math# 视频格式supported_formats = mp4 avi mkv wmv mov flv m2ts ts rm rmvb vob 3gp webm hdmov mp4v mpv4 divx xv
修改 FrameRate 为数字
import os import re import subprocess import math
视频格式
supported_formats = ['.mp4', '.avi', '.mkv', '.wmv', '.mov', '.flv', '.m2ts', '.ts', '.rm', '.rmvb', '.vob', '.3gp', '.webm', '.hdmov', '.mp4v', '.mpv4', '.divx', '.xvid', '.f4v', '.mpeg', '.asf', '.asx', '.m2t']
视频文件夹
video_folder = '/home/115/up'
正则表达式匹配码率数据中的空格
pattern = re.compile(r'(\d+)\s+(\d+)')
获取视频文件列表(包括子目录)
video_files = [] for root, dirs, files in os.walk(video_folder): for file in files: for format in supported_formats: if file.endswith(format): video_files.append(os.path.join(root, file)) break
遍历所有视频文件
for video_file in video_files: # 获取文件名 file_name = os.path.basename(video_file)
# 获取文件大小并进行单位换算
size = os.path.getsize(video_file)
if size < 1024:
size_str = f'{size} B'
elif size < 1024 * 1024:
size_str = f'{size / 1024:.2f} KiB'
elif size < 1024 * 1024 * 1024:
size_str = f'{size / 1024 / 1024:.2f} MiB'
else:
size_str = f'{size / 1024 / 1024 / 1024:.2f} GiB'
# 使用mediainfo获取视频信息 / 音频信息
video_result = subprocess.run(['mediainfo', '--Inform=Video;%Format%|%Width%x%Height%|%BitRate/String%|%FrameRate%', video_file], stdout=subprocess.PIPE)
video_output = video_result.stdout.decode().strip()
audio_result = subprocess.run(['mediainfo', '--Inform=Audio;%BitRate/String%|%SamplingRate/String%|%Language/String%', video_file], stdout=subprocess.PIPE)
audio_output = audio_result.stdout.decode().strip()
# 解析输出结果
video_info = video_output.split('|')
audio_info = audio_output.split('|')
# 处理多音轨情况
audio_bitrate = []
audio_sampling_rate = []
audio_lang = []
for i in range(len(audio_info) // 3):
audio_bitrate.append(audio_info[i * 3])
audio_sampling_rate.append(audio_info[i * 3 + 1])
audio_lang.append(audio_info[i * 3 + 2])
# 使用正则表达式替换码率数据中第一个数字和第二个数字之间的空格
bitrate = re.sub(pattern, r'\1\2', video_info[2])
# 获取帧率
try:
framerate = float(video_info[3])
except ValueError:
framerate = None
# 打印文件信息
print(f'{file_name}, {size_str}, {video_info[1]}, {bitrate}, {framerate}, {" / ".join(audio_lang)}')
原文地址: https://www.cveoy.top/t/topic/bfVE 著作权归作者所有。请勿转载和采集!