ffmpeg 添加时间轴
时间: 2024-12-28 20:25:02 浏览: 8
### 使用 FFmpeg 添加视频时间轴
为了向视频中添加时间轴,可以使用 `drawtext` 滤镜来动态绘制当前播放的时间。以下是具体方法:
#### 安装 FFmpeg 并配置环境
确保已经正确安装并配置好支持 GPU 加速的 FFmpeg 版本[^1]。
#### 基础命令结构
基本命令如下所示:
```bash
ffmpeg -i input.mp4 \
-vf "drawtext=fontfile=/path/to/font.ttf: text='%{pts\:hms}': start_number=0: x=(w-tw)/2: y=h-(2*lh): fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5" \
-c:a copy output_with_timestamp.mp4
```
此命令解释:
- `-vf` 参数用于指定滤镜链;
- `drawtext` 是用来在画面上写字的一个过滤器;
- `fontfile` 设置字体路径;
- `text='%{pts\:hms}'` 表达式会自动替换为当前帧的时间戳(小时:分钟:秒格式);
- `start_number`, `x`, 和 `y` 控制文字位置;
- `fontcolor`, `fontsize`, `box`, `boxcolor` 等参数自定义样式;
对于更复杂的场景比如想要显示毫秒级精度或者调整其他外观属性,则可以根据需求进一步定制这些选项。
#### 实际应用案例
如果希望创建一个带有精确到百分之一秒计数器的效果,并且让文本始终位于屏幕右下角附近,那么可以用这样的设置:
```bash
ffmpeg -i source_video.mp4 \
-filter_complex "[0:v] drawtext=fontfile='/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf': timecode='00\\:00\\:00\\:00': r=30: tc24hmax=1: x=w-tw-10: y=h-th-10: fontcolor=yellow: fontsize=36: shadowx=2: shadowy=2 [v]" \
-map "[v]" -map 0:a? -c:v libx264 -crf 23 -preset veryfast -shortest final_output.mp4
```
这段代码不仅设置了更高的刷新率 (`r=30`) 来获得平滑变化的时间码,还增加了阴影效果使字幕更加清晰可见。
阅读全文