|
下面是用Python批量转码视频的完整脚本,已补充缺失的`mp4_files`和`cmd`部分:
- import os
- import subprocess
- # 获取当前目录下所有 mp4 文件
- mp4_files = [f for f in os.listdir('.') if f.endswith('.mp4')]
- for file in mp4_files:
- # 构建输出文件名
- name, ext = os.path.splitext(file)
- output_file = f"{name}_1080p{ext}"
-
- # 跳过已存在的输出文件
- if os.path.exists(output_file):
- print(f"已存在: {output_file},跳过。")
- continue
-
- # 构建 ffmpeg 命令
- cmd = [
- 'ffmpeg',
- '-i', file,
- '-vf', 'scale=1920:1080',
- '-c:v', 'libx264',
- '-crf', '18',
- '-c:a', 'copy',
- output_file
- ]
-
- print(f"正在转换: {file} -> {output_file}")
- # 执行命令
- result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-
- # 检查是否成功
- if result.returncode == 0:
- print(f"成功: {output_file}\n")
- else:
- print(f"失败: {output_file}\n错误信息: {result.stderr.decode('utf-8')}\n")
- print("全部处理完毕。")
复制代码
使用说明:
1. 保存为.py文件(如batch_convert.py)
2. 确保已安装FFmpeg并添加到系统PATH
3. 将需要转换的MP4文件放在同一目录
4. 运行脚本:在终端执行 python batch_convert.py
特性说明:
o 自动检测当前目录所有MP4文件
o 跳过已生成的1080p文件(文件名带_1080p后缀)
o 保留原始音频质量(不重新编码)
o 使用CRF18高画质预设
o 实时显示转换进度和错误信息
注意事项:
1. 视频缩放使用默认双线性插值,如需高质量缩放可修改参数:
- -vf 'scale=1920:1080:flags=lanczos'
复制代码
2. 需要调整画质时,修改 -crf 18 的值(18-28,值越小画质越好)
3. 处理HDR视频时需添加色彩映射参数防止色偏
- cmd = [
- 'ffmpeg',
- '-i', file,
- '-vf', 'scale=1920:1080,zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable:desat=0,zscale=t=bt709:m=bt709:r=tv,format=yuv420p',
- '-c:v', 'libx264',
- '-crf', '18',
- '-c:a', 'copy',
- output_file
- ]
复制代码
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|