O concat FFMPEG não inclui uma imagem em loop (usando pipes nomeados)

O concat FFMPEG não inclui uma imagem em loop (usando pipes nomeados)

Depois de muita pesquisa e testes, escrevi um comando que posso adaptar para múltiplas fontes serem concatenadas usando FFMPEG. Estou tendo um problema ao adicionar imagens em loop (como vídeos) à concatenação.

Aqui está o comando:

ffmpeg -y -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp1 2> /dev/null & \
ffmpeg -y -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp2 2> /dev/null & \
ffmpeg -y -f lavfi -i anullsrc  -loop 1 -f image2 -i input3.jpg -r 30 -t 3 -pix_fmt yuvj420p -map 0:a -map 1:v -f mpegts temp3 2> /dev/null & \
ffmpeg -y -f mpegts -i "concat:temp1|temp2|temp3" -bsf:a aac_adtstoasc out.mp4

O resultado final deve ser 2 vídeos, depois uma imagem repetida por 3 segundos (sem áudio), tudo concatenado em um vídeo longo. Em vez disso, tudo que obtenho é um único vídeo concatenado que contém os dois primeiros vídeos, mas não a imagem em loop.

Responder1

Parece que seu script coloca em segundo plano os três primeiros comandos, então seu script executa os comandos praticamente ao mesmo tempo. Não há garantia de que os comandos 1-3 serão concluídos antes que o 4º concatene sua saída. A remoção de "e" comercial e barras invertidas à direita fará com que o script aguarde a conclusão de cada comando antes de iniciar o próximo. Se cada comando usar a maior parte da largura de banda de E/S, essa alteração não retardará muito o seu script. Caso contrário, aqui está um método para executar os três primeiros comandos em segundo plano, mas esperar até que eles terminem para executar o quarto (não testado).

{ ./prog1 ; ./prog2 ; ./prog3 ; } && ./prog4

informação relacionada