gpt4 book ai didi

ffmpeg - 如何将 -ss 行为从位置前的最近搜索点更改为位置后最近的搜索点

转载 作者:行者123 更新时间:2023-12-04 23:11:05 26 4
gpt4 key购买 nike

有什么方法可以将 -ss 行为从位置前的最近搜索点更改为位置后的最近搜索点?
例子:
ffmpeg 能够从 中选择查找点98 秒或 102 秒 in.mp4
如果我使用以下命令,ffmpeg 将选择 98 秒作为搜索点。ffmpeg -ss 100 -i in.mp4 -c copy out.mp4有没有办法添加一些选项,但保留 -ss 100使 ffmpeg 选择 102 作为搜索点?

最佳答案

最后,我使用了带有 ffprobe 的 shell 脚本。实现我的目标。
正因为如此 ffmpeg -ss T将在时间 之前选择最近的关键帧电话 ,所以我需要使用 ffprobe获取时间后的下一个关键帧电话 .ffprobe引用命令:ffprobe -skip_frame nokey -select_streams v -show_frames -show_entries frame=pkt_pts_time -of csv -read_intervals T+30上面的命令将显示从开始到 T+30 的关键帧时间戳。
所以我只需要对 bash 使用一些字符串处理获取大于时间 的最小时间戳的脚本电话 .
并且不要忘记将 1 添加到下一个关键帧作为 -ss ffmpeg 的参数
我的详细bash脚本:

option="-skip_frame nokey -select_streams v -show_frames -show_entries frame=pkt_pts_time -of csv -read_intervals"
tg_file="test.mp4"
st_time=$1
probe_time=`expr $st_time + 20`
kf_arr=(`ffprobe ${option} %${probe_time} ${tg_file} | sed 's/.\+,//g'`)

for i in ${kf_arr[@]}
do
if (( $(echo "$i > ${st_time}" | tr -d $'\r' | bc -l) )); then
kf=${i%.*}
st=`expr $kf + 1`
break
fi
done
$1 : 预计开始时间 tr -d $'\r' : 删除 Windows 系统中的换行符。 (如果你使用 Linux 可以忽略它) $st : 新时间戳(下一个关键帧时间戳 + 1 在预期开始时间之后)
如果有人有更方便的方法,请告诉我,谢谢!

关于ffmpeg - 如何将 -ss 行为从位置前的最近搜索点更改为位置后最近的搜索点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68464667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com