我需要创建视频的精确秒段
目前我正在使用此命令(Javascript 字符串),我从文件夹中读取多个视频
segmentLenght
通常是通过计算得到的,所以它的值是浮点数,如1.66666
或1.5
秒,甚至是整数,如2
ffmpeg -hide_banner -err_detect ignore_err -i "${inputFolder + '/' + video}" -r 24 -codec:v libx264 -vsync 1 -codec:a aac -ac 2 -ar 48k -f segment -preset fast -segment_format mpegts -segment_time ${segmentLenght} -force_key_frames "expr: gte(t, n_forced * ${segmentLenght})" "${outputFolder + '/' + video.split('.')[0] + '_%d.' + ext}"
这个命令几乎按预期工作,它生成的段与我给它的segmentLenght完全一致(有几毫秒的错误,我从浮点秒数猜测)
问题是处理这些片段需要很长时间。您知道获得相同结果的更快方法吗?
这将输出视频的帧号。
ffmpeg -i your_file.mp4 -map 0:v:0 -c copy -f null -y /dev/null 2>&1 | grep -Eo 'frame= *[0-9]+ *' | grep -Eo '[0-9]+' | tail -1
该视频为400帧。
这是如何将其合并到脚本中的示例。
for file in "${file_list2[@]}"; do
frame_count=$(ffmpeg -i $file -map 0:v:0 -c copy -f null -y /dev/null 2>&1 | grep -Eo 'frame= *[0-9]+ *' | grep -Eo '[0-9]+' | tail -1)
frame_start=$((frame_count - 30))
ffmpeg -i "$file" -y -vf fade=out:"$frame_start":30 -hide_banner -preset ultrafast "to_mux_$file"
done
这是一个脚本的摘录,它合并了目录中的所有视频并具有淡入/淡出效果。我必须使用框架才能使其正常工作,随后,我从哪里获取代码。