FFmpeg命令使用setpts和atempo选项使音频和视频不匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FFmpeg命令使用setpts和atempo选项使音频和视频不匹配相关的知识,希望对你有一定的参考价值。

我想准确加快音频和视频的速度。

执行此命令时,视频生成成功。但视频仍然与输入视频和音频正常加速,如何纠正这个问题。

我对这个场景的命令是:(我在android中实现了这个)

-i, /storage/emulated/0/MP4_20171222_191425.mp4, 
-i, /data/user/0/22122017_071452.png, 
-i, /data/user/0/22122017_0714550.png, 
-filter_complex, [1:v]scale=185:187[ovr1];
[2:v]scale=115:118[ovr2];
[0:v][ovr1] overlay=x=336.68634:y=5.8838935 [tmp];
[tmp][ovr2] overlay=x=110.51852:y=105.864914; 
[0:v]setpts=0.5*PTS[v];
[0:a]atempo=2.0[a], 
-map, [v], 
-map, [a], 
-c:v, libx264, 
-c:a, aac, 
-r, 60, 
-preset, ultrafast, 
/storage/emulated/0/Vid_22122017_071455.mp4

我做错了什么?谢谢。

答案

您必须将setpts应用于已处理的视频流,所以

...
[tmp][ovr2] overlay=x=110.51852:y=105.864914,setpts=0.5*PTS[v];
[0:a]atempo=2.0[a], 
-map, [v], 
...

以上是关于FFmpeg命令使用setpts和atempo选项使音频和视频不匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ffmpeg 可靠地同时改变音高和速度

在 Linux 中用 Java 代码执行 FFmpeg 命令的问题

ffmpeg # 画中画中的视频进行循环

ffmpeg命令行使用

黄聪:FFmpeg 使用指南

linux 平台 ffmpeg 屏幕录制+声音录制