本文目录导读:

使用 FFmpeg 命令行脚本
FFmpeg 是最强大的视频处理工具,通过脚本可以灵活转换帧率。
Linux/Mac 脚本:
#!/bin/bash # convert_fps.sh INPUT=$1 OUTPUT=$2 FPS=$3 # 基础帧率转换 ffmpeg -i "$INPUT" -vf "fps=$FPS" "$OUTPUT" # 高级选项:保持质量 ffmpeg -i "$INPUT" -vf "fps=$FPS" -c:v libx264 -crf 18 -preset slow "$OUTPUT" # 音频同步处理 ffmpeg -i "$INPUT" -vf "fps=$FPS" -c:v libx264 -crf 18 -c:a copy "$OUTPUT"
Windows 批处理脚本:
@echo off REM convert_fps.bat set INPUT=%1 set OUTPUT=%2 set FPS=%3 ffmpeg -i "%INPUT%" -vf "fps=%FPS%" "%OUTPUT%" echo 转换完成!
批量转换脚本
Python 批量处理脚本:
#!/usr/bin/env python3
# batch_fps_convert.py
import os
import subprocess
def convert_fps(input_file, output_file, fps):
"""转换单个视频帧率"""
cmd = [
'ffmpeg',
'-i', input_file,
'-vf', f'fps={fps}',
'-c:v', 'libx264',
'-crf', '18',
'-c:a', 'copy',
'-y', # 覆盖已有文件
output_file
]
subprocess.run(cmd, check=True)
def batch_convert(directory, output_fps):
"""批量转换目录中所有视频"""
for filename in os.listdir(directory):
if filename.lower().endswith(('.mp4', '.avi', '.mov', '.mkv')):
input_path = os.path.join(directory, filename)
output_path = os.path.join(directory, f'{os.path.splitext(filename)[0]}_{output_fps}fps.mp4')
print(f"正在转换: {filename}")
try:
convert_fps(input_path, output_path, output_fps)
print(f"完成: {output_path}")
except Exception as e:
print(f"转换失败 {filename}: {e}")
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description='批量转换视频帧率')
parser.add_argument('directory', help='视频所在目录')
parser.add_argument('fps', type=int, help='目标帧率')
args = parser.parse_args()
batch_convert(args.directory, args.fps)
高级帧率控制
智能帧率转换脚本:
#!/bin/bash
# smart_fps_convert.sh
input_file=$1
target_fps=$2
mode=${3:-"standard"} # standard, motion_blend, minterpolate
echo "输入文件: $input_file"
echo "目标帧率: $target_fps"
case $mode in
"standard")
# 标准帧率转换(丢帧或复制帧)
ffmpeg -i "$input_file" -vf "fps=$target_fps" -c:v libx264 -crf 18 "output_${target_fps}fps.mp4"
;;
"motion_blend")
# 运动模糊帧率转换
ffmpeg -i "$input_file" -vf "fps=$target_fps,blend=all_mode=addition" -c:v libx264 -crf 18 "output_blended_${target_fps}fps.mp4"
;;
"minterpolate")
# 智能插帧(平滑运动)
ffmpeg -i "$input_file" -vf "minterpolate=fps=$target_fps:mi_mode=mci:mc_mode=aobmc:me_mode=bidir" -c:v libx264 -crf 18 "output_interpolated_${target_fps}fps.mp4"
;;
*)
echo "错误模式"
exit 1
;;
esac
echo "转换完成!"
配置化转换工具
Python 配置文件方式:
# fps_converter.py
import subprocess
import json
class VideoConverter:
def __init__(self, config_file):
with open(config_file, 'r') as f:
self.config = json.load(f)
def convert(self):
for video in self.config['videos']:
input_file = video['input']
output_file = video['output']
fps = video['fps']
# 检查是否使用高质量模式
if self.config.get('high_quality', False):
cmd = f'ffmpeg -i {input_file} -vf fps={fps} -c:v libx264 -crf 18 -preset slow {output_file}'
else:
cmd = f'ffmpeg -i {input_file} -vf fps={fps} {output_file}'
subprocess.run(cmd, shell=True)
print(f"转换完成: {output_file}")
# 使用示例
if __name__ == "__main__":
converter = VideoConverter('config.json')
converter.convert()
配置文件 config.json:
{
"high_quality": true,
"videos": [
{
"input": "input1.mp4",
"output": "output1_30fps.mp4",
"fps": 30
},
{
"input": "input2.mp4",
"output": "output2_60fps.mp4",
"fps": 60
}
]
}
使用步骤:
-
安装 FFmpeg(必需):
# macOS brew install ffmpeg # Ubuntu/Debian sudo apt install ffmpeg # Windows # 下载 ffmpeg.exe 并添加到 PATH
-
赋予脚本执行权限:
chmod +x convert_fps.sh ./convert_fps.sh input.mp4 output.mp4 30
-
常见帧率转换需求:
# 30fps → 60fps ffmpeg -i input.mp4 -vf "fps=60" output_60fps.mp4 # 60fps → 30fps ffmpeg -i input.mp4 -vf "fps=30" output_30fps.mp4 # 24fps → 30fps(运动插值) ffmpeg -i input.mp4 -vf "minterpolate=fps=30:mi_mode=blend" output_30fps.mp4
这些脚本可以根据你的具体需求进行修改和扩展,支持批量处理、不同编码质量设置等,需要我解释某个特定部分吗?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播