Usando ffmpeg para cortar vídeo em vários pontos

Usando ffmpeg para cortar vídeo em vários pontos

Tenho um vídeo que é um jogo de futebol. Gostaria de reduzir o tempo e before the game, during half timefinalmente, o final do jogo.

Comprimento total do clipe 1h 51mou111m

O ideal é que os cortes e o tempo sejam os seguintes:

+------------+-------------+---------------------+
| Start Time | Finish Time |    Clip Duration    |
+------------+-------------+---------------------+
| 1:30       |   47:30     |  47:30              |
| 53:00      |   100:00    |  47                 |
+------------+-------------+---------------------+

No entanto, meu vídeo termina às

ffmpeg -ss 00:01:30 -i Tripod_Camera.mp4 -t 00:47:30 -ss 00:53:00 -t 00:47:00 -c copy VideoClip.mp4

Responder1

  1. Make input.txtcontendo os timestamps (em segundos) a serem cortados:

    file 'input.mp4'
    inpoint 90
    outpoint 2850
    file 'input.mp4'
    inpoint 3180
    outpoint 6000
    
  2. Execute ffmpegpara concatenar com odesmultiplicador concat:

    ffmpeg -f concat -i input.txt -c copy output.mp4
    
  • Isso vaicópia do fluxo, portanto, nenhuma recodificação ocorre, o que significa que todo o processo será rápido e a qualidade será preservada. No entanto, os cortes serão feitos em quadros-chave, portanto, podem não ser precisos o suficiente. Se for necessária maior precisão, você terá que usar um método muito mais lento, como usar os filtros (a)trim, (a)setpts e concat, que requerem recodificação.

  • Se você obtiver dessincronização A/V, entãoobter carimbos de data e hora de quadros-chave, use carimbos de data/hora de quadro-chave como seu inpoint, mas adicione 0,001 a cada inpointcarimbo de data/hora em input.txt.

Responder2

UsarCorte de vídeoque escrevi para esse propósito. Devido ao seu próprio muxer, é mais preciso que o ffmpeg e fornece uma interface gráfica.

Por ser baseado no ffmpeg (ou em suas bibliotecas), o corte é sem perdas. insira a descrição da imagem aqui

informação relacionada