Adicione áudio mais curto ao vídeo com loop com controle de volume de áudio e vídeo e apenas por uma duração específica usando FFMpeg

Adicione áudio mais curto ao vídeo com loop com controle de volume de áudio e vídeo e apenas por uma duração específica usando FFMpeg

Adicione áudio mais curto ao vídeo com loop com controle de volume de áudio e vídeo e apenas por uma duração específica ((quero adicionar áudio e manter o som do áudio e do vídeo em ambos os casos))

Eu tenho duas partes de um problema

1) o áudio tem 27 segundos de duração 2) O vídeo tem 2 minutos e 24 segundos de duração

a) Quero fazer um loop do áudio e adicioná-lo ao vídeo, por exemplo (adicionar apenas áudio) de 50 segundos a 1 minuto e 30 segundos (não o vídeo inteiro, mas ainda assim obter o vídeo inteiro como saída) dentro do vídeo, com o loop áudio

b) crie um clipe de vídeo de 50 segundos a 1 minuto e 30 segundos (não o vídeo inteiro como saída) dentro do vídeo, com o áudio em loop

Eu usei o seguinte comando do ffmpeg para adicionar áudio ao vídeo, que adiciona todo o vídeo, como podemos i) especificar apenas uma parte do vídeo para ter o áudio em loop ii) criar um novo clipe para a duração selecionada com o áudio em loop

até agora consegui fazer um loop e alterar o volume do áudio e do vídeo e mixá-los com o seguinte comando para todo o vídeo

"-y","-i",videofile, "-filter_complex",
                        "amovie=audiofile:loop=1000,asetpts=N/SR/TB,aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=1.5[a1];" +
                        "[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a2];" +
                        " [a1][a2]amerge,pan=stereo:c0<c0+c2:c1<c1+c3[out]",
                        "-map","0:v","-map","[out]","-c:v","copy","-c:a","aac","-shortest","-preset", "ultrafast", outputfile

Estou preso em gerenciar o tempo em ambos os casos

Responder1

Usar

amovie=audiofile:loop=1000,asetpts=N/SR/TB,atrim=0:40,adelay=50000|50000,apad,aformat=...

O trim mantém os primeiros 40 segundos do áudio em loop, o adelay muda seu tempo de início para 50.000 milissegundos, ou seja, 50 segundos.

Responder2

este é um código para adicionar áudio ao vídeo com 1) loop de áudio 2) alterar o volume do áudio e do vídeo 3) criar um novo arquivo com duração definida apenas 4) criar um arquivo com duração de vídeo original e áudio em uma determinada parte do vídeo

A) apenas para novo arquivo com duração definida

"-y","-i",j,
                        "-filter_complex",
                        "amovie="+audio+":loop=999,asetpts=N/SR/TB," +
                                "atrim=0:40,adelay=50000|50000,aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=1.5[a1];" +
                                "[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=2.0[a2];" +
                                " [a1][a2]amerge,pan=stereo:c0<c0+c2:c1<c1+c3[out]",
                        "-ss","50", "-t","40","-map","0:v","-map","[out]","-c:v","copy","-c:a","aac","-preset", "ultrafast", out

o que fazemos é adicionar"-ss","50", "-t","40"

b) para um arquivo com duração de vídeo e áudio originais em uma determinada parte do vídeo

"-y","-i",j,
                            "-filter_complex",
                            "amovie="+audio+":loop=999,asetpts=N/SR/TB," +
                                    "atrim=0:40,adelay=50000|50000,aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=1.5[a1];" +
                                    "[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=2.0[a2];" +
                                    " [a1][a2]amerge,pan=stereo:c0<c0+c2:c1<c1+c3[out]",
                            "-ss","50", "-map","0:v","-map","[out]","-c:v","copy","-c:a","aac","-preset", "ultrafast", out

o que fazemos é adicionar"-ss","50" mas não adicione"-t","40"`

informação relacionada