android - 循环播放的视频不会重复音频 FFMpeg

标签 android ffmpeg android-ffmpeg

我尝试叠加两个视频。第一个是带有音轨的背景视频。
为此,我使用以下命令

 command = arrayOf("-i", background, "-i", video,
       "-c:v", "libx264", "-preset", "ultrafast", "-filter_complex",
       "[1]crop=iw:ih/2:0:0[rgb];[1]crop=iw:ih/2:0:ih/2[alp];" +
        "[rgb][alp]alphamerge[va];[0]scale=$sw:$sh[bs];" +
        "[bs]loop=10:1000:0[bsl];[bsl][va]overlay=x=$startX:y=$startY:shortest=1",
        outPutPath)

但是视频在第一个循环中播放音频,接下来的所有循环都没有。如何使视频与音频循环播放?

以下命令允许我重复音频。
 arrayOf("-i", A.mp4, "-i", B.mp4,
     "-c:v", "libx264", "-preset", "ultrafast", "-filter_complex",
     "amovie=$A.mp4:loop=3,asetpts=N/SAMPLE_RATE/TB[a];" +
     [0]scale=$videoWidth:$videoHeight[bs];[bs]loop=10:1000:0,setpts=N/FRAME_RATE/TB[bsl];" +
     "[bsl][1]overlay=x=$startX:y=$startY:shortest=1[v]", "-map",
     "[v]", "-map", "[a]", "-shortest", outPutPath)

在这种情况下,视频会重复两次并卡住,但音频仍在播放。如何按视频长度修剪音频?

最佳答案

主要问题是您需要添加 aloop-map适当的过滤器输出:

command = arrayOf("-i", background, "-i", video,
       "-c:v", "libx264", "-preset", "ultrafast", "-filter_complex",
       "[1]crop=iw:ih/2:0:0[rgb];[1]crop=iw:ih/2:0:ih/2[alp];" +
        "[rgb][alp]alphamerge[va];[0]scale=$sw:$sh[bs];" +
        "[bs]loop=10:1000:0,setpts=N/FRAME_RATE/TB[bsl];[1:a]aloop=10:1000:0,asetpts=N/SAMPLE_RATE/TB[a];[bsl][va]overlay=x=$startX:y=$startY:shortest=1[v]",
        "-map", "[v]", "-map", "[a]",
        outPutPath)

您将需要调整循环过滤器中的大小参数。 1000 只是一个占位符。请参阅过滤器文档。

关于android - 循环播放的视频不会重复音频 FFMpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52780826/

相关文章:

android - 为 android x86 & x86_64 架构编译 ijkplayer x264,错误 : unknown type name 'v4si'

android - 使用新 key 在 Android Studio 中签署 Eclipse 应用程序?

linux - 在 MATLAB 中执行 .mex 文件时,如何诊断为什么无法加载 .so 文件?

安卓模拟器失败

android - 使用ffmpeg将图像编码为视频

video - 如何将两个 ffmpeg 命令组合在一起 - 添加 Intro Outro 和介于两者之间的图像

Android,使用ffmpeg将gif分割成帧

android - FFMPEG 命令执行在 android 中花费太多时间

android - 在 Android 中放置 facebook 墙

java - 在两个类之间传递数据