You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FFmpeg为剪辑视频添加原视频时间戳与总时长

解决方法

要实现显示原视频时间戳与总时长的需求,需要给剪辑后的视频时间加上起始偏移量,并提前获取原视频的总时长,具体步骤如下:

1. 获取原视频总时长

先用ffprobe提取原视频的总时长并格式化为HH:MM:SS格式:

in_file="你的原视频文件名.mp4"
# 获取原视频总时长,格式化为HH:MM:SS
total_duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$in_file" | awk '{printf "%02d:%02d:%02d", int($1/3600), int(($1%3600)/60), int($1%60)}')

2. 带原时间戳的FFmpeg剪辑命令

使用drawtext滤镜时,通过pts:hms:起始偏移秒数计算原视频的时间戳,再拼接总时长:

ffmpeg -i "$in_file" -ss 00:00:05 -t 5 -vf "drawtext=fontfile=font.ttf:text='%{pts\:hms\:5}/$total_duration':fontsize=24:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5:x=(w-text_w-10):y=(h-text_h-10)" -c:a copy -c:v libx264 out_file.mp4

参数说明

  • %{pts\:hms\:5}:pts是剪辑后视频的当前帧时间(从0开始),加上5秒的起始偏移后,格式化为HH:MM:SS,对应原视频的时间戳
  • /$total_duration:拼接原视频的总时长,实现00:00:05/00:00:30的显示效果
  • x=(w-text_w-10):y=(h-text_h-10):将时间戳定位在右下角,距离边缘10像素
  • -ss 00:00:05 -t 5:截取原视频5秒到10秒的片段(时长5秒)
  • -c:a copy:直接复制音频流,避免重新编码

注意:如果你的font.ttf路径不在当前目录,需要写完整路径(比如/usr/share/fonts/TTF/DejaVuSans.ttf)。

内容的提问来源于stack exchange,提问作者Kes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:40:32