FFmpeg音视频合并:实现视频延迟2秒、音频延迟5秒的方法
FFmpeg音视频延迟合并实现
要给视频添加2秒延迟、音频添加5秒延迟,只需在FFmpeg命令中为对应的输入流添加-itsoffset参数即可,该参数需要放在目标输入文件的-i选项之前。
修改后的合并命令数组
将你原有的String[] c替换为以下内容:
String[] c = { "-itsoffset", "2", // 视频延迟2秒 "-i", videoPath, "-itsoffset", "5", // 音频延迟5秒 "-i", audioPath, "-c:v", "copy", "-c:a", "aac", "-map", "0:v:0", "-map", "1:a:0", "-shortest", videoOutPut };
参数说明
-itsoffset <seconds>:为紧随其后的输入流设置时间偏移,正数表示该流延迟指定秒数后开始播放。这里分别给视频流设置2秒延迟、音频流设置5秒延迟。- 其余参数保持你原有配置:视频流直接复制(
-c:v copy)、音频转码为AAC(-c:a aac)、映射视频和音频流、以较短的流长度作为输出时长(-shortest)。
完整的Merge方法代码
public void Merge() { String videoId = String.valueOf(Calendar.getInstance().getTimeInMillis()); String videoPath = Environment.getExternalStorageDirectory().getPath() + "/Download/silent_video.mp4"; String audioPath = Environment.getExternalStorageDirectory().getPath() + "/Download/wa_audio.wav"; String videoOutPut = Environment.getExternalStorageDirectory().getPath() + "/Download/" + "Merged Video " + videoId + ".mp4"; String[] c = { "-itsoffset", "2", "-i", videoPath, "-itsoffset", "5", "-i", audioPath, "-c:v", "copy", "-c:a", "aac", "-map", "0:v:0", "-map", "1:a:0", "-shortest", videoOutPut }; MergeVideo(c); } private void MergeVideo(String[] co){ FFmpeg.executeAsync(co, new ExecuteCallback() { @Override public void apply(long executionId, int returnCode) { Log.d("File Tag", "return " + returnCode); Log.d("File Tag", "executionID " + executionId); Log.d("File Tag", "FFMPEG " + new FFmpegExecution(executionId, co)); } }); }
内容的提问来源于stack exchange,提问作者Taki
相关产品推荐
相关产品推荐

