簡體   English   中英

循環播放視頻不會重復音頻FFMpeg

[英]Looping video doesn't repeat audio 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)

您將需要在aloop過濾器中調整size參數。 1000只是一個占位符。 請參閱過濾器文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM