使用FFMPEG进行视频转码
使用FFMPEG进行视频转码比如我们要将 4k 的视频压缩为 1080p,其它参数保持不变,命令如下:
ffmpeg -i input4k.mp4 -vf scale=1920:1080 -c:v libx264 -crf 18 -c:a copy output1080p.mp4
在这个命令中:
[*]ffmpeg 是调用 FFmpeg 程序的命令。
[*]-i input.mp4 指定输入文件,input4k.mp4 是你想要转换的 4k 视频文件。
[*]-vf scale=1920:1080 使用视频过滤器(Video Filter),将分辨率缩放到 1920x1080
[*]-c:v libx264 指定视频编码器为 H.264(x264),即输出视频采用 H.264 编码
[*]-crf 18 设置恒定质量系数(Constant Rate Factor),值越小质量越高(18为高画质,常用范围18-28)
[*]-c:a copy 音频流直接拷贝,不重新编码音频,保留原音频质量
[*]output1080p.mp4 输出文件名为 output1080p.mp4
批量处理
有时候,我们可能需要让计算机批量处理,那么大家可以直接使用这个 Python 脚本:
import os
import subprocess
# 获取当前目录下所有 mp4 文件
mp4_files =
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("全部处理完毕。")
下面是用Python批量转码视频的完整脚本,已补充缺失的`mp4_files`和`cmd`部分:
import os
import subprocess
# 获取当前目录下所有 mp4 文件
mp4_files =
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 小助理,如未能正确解答您的问题,请继续追问。 {:10_256:} {:10_257:} 操作挺好~!我看的到是碎片,没有理解,没有思维架构·····{:10_266:} 学习了
页:
[1]