[英]Corrupt video duration after ffmpeg speeding up process
我正在使用这段代码来加速一些视频:
"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
...但它不适用于我的视频。
我认为问题在于时间戳:第一批视频没有时间戳,但这个有(“屏幕录制开始”等)。 加速视频后,时间戳保持不变(它们与现在更快的视频无关)。
有任何想法吗? 提前致谢!
这里有一些尝试:
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
并比较流的持续时间以及容器的持续时间。 如果您需要进一步的帮助,请发帖 output。
如果什么都没有跳出来,那么尝试一次只编码一个 stream(使用-an
output 选项来禁用声音和-vn
选项同样用于视频)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.