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

0

Depois de muita pesquisa e teste, eu escrevi um comando que eu posso adaptar para múltiplas fontes a serem concatenadas usando o FFMPEG. Eu estou correndo em um problema embora com adicionar imagens em loop (como vídeos) na 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 em loop por 3 segundos (sem áudio), todos concatenados em um vídeo longo. Em vez disso, tudo que consigo é um único vídeo concatenado que contém os dois primeiros vídeos, mas não a imagem em loop.

    
por Daniel Jacob Archer 04.12.2015 / 21:02

1 resposta

0

Parece que o seu script origina os primeiros 3 comandos, por isso 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 do 4º concatenar sua saída. A remoção de "e" comercial à direita e barras invertidas fará com que o script aguarde até que cada comando seja concluído 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 diminuirá muito o seu script. Caso contrário, aqui está um método para executar os primeiros 3 comandos em segundo plano, mas esperar até que eles sejam feitos para executar o quarto (não testado).

{ ./prog1 ; ./prog2 ; ./prog3 ; } && ./prog4
    
por 05.12.2015 / 19:28