Como remover alguns segundos do arquivo .mp4 usando o ffmpeg?

2

Como remover alguns segundos do arquivo .mp4 usando o ffmpeg? Eu tenho o arquivo test.mp4 e quero remover 10s das 11:00 às 11:10

    
por Demo Django 16.11.2017 / 20:08

2 respostas

1

Você pode tentar fazer isso sem recodificar, mas, como só pode cortar em quadros-chave, ele possivelmente não se alinhará aos tempos de corte desejados. Portanto, se precisar de precisão, será necessário codificar novamente:

ffmpeg -i input.mp4 -filter_complex \
  "[0:v]trim=end=660,setpts=N/FRAME_RATE/TB[v0]; \
   [0:a]atrim=end=660,asetpts=N/SR/TB[a0]; \
   [0:v]trim=start=670,setpts=N/FRAME_RATE/TB[v1]; \
   [0:a]atrim=start=670,asetpts=N/SR/TB[a1]; \
   [v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" \
  -map "[v]" -map "[a]" output.mp4
  • (a) trim permitirá que você escolha seus clipes.
  • (a) os setpts redefinem os carimbos de hora.
  • concat concatena os clipes.

Veja Documentação do filtro FFmpeg para detalhes sobre cada filtro.

    
por LordNeckbeard 17.11.2017 / 21:27
0

Eu acho que você tem que cortar o vídeo para 2 partes e depois juntá-las. primeiro 'valor do tempo' é o ponto de partida, o segundo 'valor do tempo' é o tamanho do vídeo que você deseja cortar. Por exemplo, abaixo, o primeiro corte começa às 00:00:00 e o comprimento é 11 minutos, o segundo corte começa aos 11 minutos e 10 segundos e o comprimento é 10 minutos.

corte:

ffmpeg -i test.mp4 -ss 00:00:00 -t 00:11:00 -acodec copy -vcodec copy test1.mp4

ffmpeg -i test.mp4 -ss 00:11:10 -t 00:10:00 -acodec copy -vcodec copy test2.mp4

mesclagem:

cat test1.mp4 test2.mp4 >> test3.mp4

Eu não tentei, deixe-me saber se funciona.

    
por JerQ 16.11.2017 / 21:29