Como dividir, inserir e juntar arquivos de vídeo juntos ffmpeg

1

Eu tenho um vídeo com 20 segundos de duração (00.20.00).
Eu quero dividir em 20 partes (parte 1, parte 2, pat 3, ... parte 20), então eu quero inserir entre essas seções um efeito de vídeo (parte 1, efeito de vídeo 1, parte 2, vídeo efeito 1, parte 3, efeito de vídeo 1, .... par20) .

Eu não imaginei o comando para executá-lo, como posso fazer isso?

========================= Eu tentativa e erro @Mulvya

ffmpeg -i inputvideo.mp4 -i effect.mp4 -filter_complex
   "[0]split=20[v1][v2][v3][v4][v5][v6][v7][v8][v9][v10][v11][v12][v13][v14][v15][v16][v17][v18][v19][v20];
    [v1]trim=0:1,setpts=PTS-STARTPTS[v1t];
    [v2]trim=1:2,setpts=PTS-STARTPTS[v2t];
    [v3]trim=2:3,setpts=PTS-STARTPTS[v3t];
    [v4]trim=3:4,setpts=PTS-STARTPTS[v4t];
    [v5]trim=4:5,setpts=PTS-STARTPTS[v5t];
    [v6]trim=5:6,setpts=PTS-STARTPTS[v6t];
    [v7]trim=6:7,setpts=PTS-STARTPTS[v7t];
    [v8]trim=7:8,setpts=PTS-STARTPTS[v8t];
    [v9]trim=8:9,setpts=PTS-STARTPTS[v9t];
    [v10]trim=9:10,setpts=PTS-STARTPTS[v10t];
    [v11]trim=10:11,setpts=PTS-STARTPTS[v11t];
    [v12]trim=11:12,setpts=PTS-STARTPTS[v12t];
    [v13]trim=12:13,setpts=PTS-STARTPTS[v13t];
    [v14]trim=13:14,setpts=PTS-STARTPTS[v14t];
    [v15]trim=14:15,setpts=PTS-STARTPTS[v15t];
    [v16]trim=15:16,setpts=PTS-STARTPTS[v16t];
    [v17]trim=16:17,setpts=PTS-STARTPTS[v17t];
    [v18]trim=17:18,setpts=PTS-STARTPTS[v18t];
    [v19]trim=18:19,setpts=PTS-STARTPTS[v19t];      
    [v20]trim=19:20,setpts=PTS-STARTPTS[v20t];
    [v1t][1][v2t][1][v3t][1][v3t][1][v4t][1][v5t][1][v6t][1][v7t][1][v8t][1][v9t][1][v10t][1][v11t][1][v12t][1][v13t][1][v14t][1][v15t][1][v16t][1][v17t][1][v18t][1][v19t][1][v20t]concat=n=39:v=1:a=0[v]" -map [v] processed.mp4

. . [AVFilterGraph @ 03e5dae0] Excesso de entradas especificadas para o filtro "concat". Erro ao inicializar filtros complexos. Argumento inválido

    
por M Join 01.07.2016 / 19:18

2 respostas

0

ffmpeg -i myVideo.avi -acodec copy -f segment -segment_time 1 -vcodec copy -reset_timestamps 1 -map 0 -an video%d.avi

Extraído de unix.stackexchange.com

Divide um vídeo em 20 segmentos, chamado video1.avi - video20.avi; Então precisamos nos preocupar com os vídeos juntos, com o videoEffect1.avi entre:

ffmpeg -f concat -i <(for f in ./video*.avi; do echo "file '$PWD/$f'" && echo "file '$PWD/videoEffect1.avi'"; done) -c copy output.avi

Mais informações no wiki do ffmpeg

Ou como um comando enorme:

ffmpeg -i myVideo.avi -acodec copy -f segment -segment_time 1 -vcodec copy -reset_timestamps 1 -map 0 -an video%d.avi && ffmpeg -f concat -i <(for f in ./video*.avi; do echo "file '$PWD/$f'" && echo "file '$PWD/videoEffect1.avi'"; done) -c copy output.avi && rm -rf ./video[0-9]*.avi
    
por 01.07.2016 / 19:47
1

Para fazer isso em um comando, use

ffmpeg -i video.avi -i effect.avi -filter_complex
       "[0]split=20[v1][v2][v3]...[v20];
        [v1]trim=0:1,setpts=PTS-STARTPTS[v1t];
        [v2]trim=1:2,setpts=PTS-STARTPTS[v2t];
        [v3]trim=2:3,setpts=PTS-STARTPTS[v3t];
        ...
        [v20]trim=19:20,setpts=PTS-STARTPTS[v20t];
        [v1t][1][v2t][1][v3t][1]...[v19t][1][v20t]concat=n=39:v=1:a=0[v]"
-map [v] processed.mp4

Eu assumi que não há áudio.

No caso, não está claro, deixei de escrever todas as operações de ajuste e todas as entradas para o filtro de concat. Todos devem ser especificados.

    
por 02.07.2016 / 12:24

Tags