我用这个代码来加速一些视频:
"C:\Program Files (x86)\ffmpeg\bin\ffmpeg.exe" -i "C:\Users\Agustín\Downloads\Presentación.mp4" -vf "setpts=(PTS-STARTPTS)/1.5" -crf 18 -af atempo=1.5 "C:\Users\Agustín\Downloads\Comercio\Presentación.mp4"
第一批视频结果很好,但第二组没有:每个视频的描述仍然有原始的长度,在播放视频时,时间条显示了原始的长度。例如,当您播放一个被缩短为40分钟的视频时,条形显示的长度为1小时;在40分钟之后,视频结束(没有静音播放,它只是停止并转到00:00)。
建议的解决方案是将视频和音频复制到一个新的容器中,以便重新设置长度.
ffmpeg -i input -c:v copy -c:a copy output
..。但这和我的视频不一样。
我认为问题在于时间戳:第一批视频没有,但这个有(“屏幕录音开始”等)。在加速视频后,时间戳保持不变(它们与现在速度更快的视频不相关)。
有什么想法吗?提前感谢!
发布于 2022-04-04 07:37:55
以下是一些值得尝试的东西:
ffmpeg -i input.mp4 -vf setpts=N/FR/1.5/TB -crf 18 -af atempo=1.5 output.mp4
如果存在导致上述行为的视频时间戳问题,则使用(PTS-STARTPTS)/1.5
将不会纠正该问题。但是,如果这是问题所在,它可能会破坏音频同步。所以,去找找。
如果问题仍然存在,请探测输入/输出文件,如:
ffprobe -hide_banner -of default -show_format -show_streams input.mp4
并比较流和容器的持续时间。如果您需要进一步的帮助,张贴输出。
如果什么都没有跳出,那么一次只对一个流进行编码(使用-an
输出选项禁用声音和视频的-vn
选项)。
https://stackoverflow.com/questions/71730926
复制相似问题