用FFmpeg修改视频帧率
🎞️ 帧率对视频风格的影响

帧率的选择直接影响视频的视觉风格和观感:

  • 24fps 电影感:这是电影的经典帧率,每帧带有轻微的动态模糊,营造出独特的"电影质感"。适合叙事性内容、微电影、剧情片。
  • 30fps 通用标准:网络视频、直播、新闻节目的主流帧率。它在流畅度和文件大小之间取得了良好平衡,适合Vlog、教程、采访等大多数内容类型。
  • 60fps 高帧率:游戏录屏、体育赛事、动作场景的首选。极其丝滑流畅,能清晰捕捉快速运动的每一个细节。但文件体积较大,且可能让部分观众感觉'过于真实'。
  • 帧率转换:从24fps提升到60fps需要插帧补偿运动模糊;从60fps降到24fps需要丢帧并添加模糊效果,否则会出现画面抖动感
FFmpeg帧率知识详解

帧率(Frame Rate) 指视频每秒显示的图像数量,单位为 fps(frames per second,帧/秒)。帧率直接决定视频的流畅度和观感。

1. 使用 -r 选项进行帧率转换

-r 是 FFmpeg 中最直接的帧率设置方式。当目标帧率低于源帧率时,FFmpeg 会丢弃多余的帧;当目标帧率高于源帧率时,FFmpeg 会复制已有帧来补足。注意:降帧率不会提升画质,升帧率也不会增加真实细节。

$ ffmpeg -i input.mp4 -r 30 output.mp4
2. 使用 setpts 滤镜调整 PTS

setpts 滤镜通过修改视频帧的显示时间戳(PTS, Presentation TimeStamp)来改变播放速度,同时也会影响帧率表现。例如 setpts=0.5*PTS 使播放速度加倍,相当于帧率翻倍(从 30fps 变为 60fps)。但注意:此操作会改变视频时长。

$ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -r 60 output.mp4
3. 使用 -video_track_timescale 修改时间基

-video_track_timescale 用于修改视频流的时间基(timebase),它定义了每个时间单位内包含多少时间刻度。增大 time scale 可提高时间精度,常用于解决音画不同步问题。例如 -video_track_timescale 30k 将时间基设为 30000,适合 30fps 或 60fps 的视频。

$ ffmpeg -i input.mp4 -c:v copy -video_track_timescale 30k output.mp4
4. 常见帧率标准
  • 24 fps:电影标准帧率,营造"电影感",每帧曝光时间约 1/24 秒,轻微动态模糊符合人眼视觉习惯。
  • 25 fps:PAL 电视制式标准,常用于欧洲、中国等地区。
  • 29.97 fps:NTSC 电视制式标准,常用于北美、日本等地区。
  • 30 fps:通用数字视频标准,直播、短视频、网络视频的常见帧率,流畅度与文件大小的良好平衡。
  • 60 fps:高帧率标准,常见于游戏录屏、体育赛事转播,画面极其丝滑流畅,但文件体积较大。
5. 帧率与流畅度的关系

帧率越高,每秒钟显示的图像越多,运动画面越流畅。但人眼视觉暂留效应(约 1/16 秒)意味着帧率超过 60fps 后感知提升逐渐变弱。选择帧率时需根据内容类型权衡:电影用 24fps 维持艺术感,普通视频用 30fps 兼顾流畅度和体积,游戏内容用 60fps 提供极致顺滑体验。

广告
{{v.name}}
使用 -r 选项进行简单帧率转换,代码如下
$ ffmpeg -i input.mp4 -r 30 output.mp4
使用 -video_track_timescale 修改时间基,代码如下
$ ffmpeg -i input.mp4 -c:v copy -video_track_timescale 30k output.mp4
使用 setpts 滤镜调整播放速度,代码如下
$ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -r 60 output.mp4
使用 fps 滤镜进行恒定帧率转换,代码如下
$ ffmpeg -i input.mp4 -vf "fps=30" output.mp4
输出可变帧率(VFR)视频,代码如下
$ ffmpeg -i input.mp4 -vsync 0 output_vfr.mp44
或者,代码如下
$ ffmpeg -i input.mp4 -fps_mode vfr output_vfr.mp4
使当使用 setpts 滤镜改变视频播放速度(从而改变视频时长)时,音频会不同步,需要使用 atempo 音频滤镜以相同的因子调整音频速度,代码如下
$ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -af "atempo=2.0" -r 60 output_double_speed.mp4
友链