我正在使用 FFmpeg 处理具有负开始时间的视频:
$ ffmpeg -i test.mp4 -ss 0 out.mp4
...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp41mp42isom
creation_time : 2018-01-03 11:35:13
Duration: 00:00:06.16, start: -1.238906, bitrate: 1425 kb/s
...
Output #0, mp4, to 'out.mp4':
...
frame= 222 fps=0.0 q=-1.0 Lsize= 166kB time=00:00:07.44 bitrate= 182.9kbits/s
有没有办法在时间 0 处剪切视频?即输出的持续时间应为 6.16 而不是 7.74。我尝试过设置-avoid_negative_ts
为所有不同的值。显然,我可以手动读取负值并使用正确的偏移量再次运行它-ss
,但我正在寻找一种自动解决方案。
答案1
通常,-ss
输入选项用作相对于文件开头的相对偏移量。由于您的开始时间为负数且事先未知,因此您可以启用seek_timestamp
以查找绝对时间戳值。
ffmpeg -seek_timestamp 1 -ss 0 -i test.mp4 out.mp4