ffmpeg mesclar traço cam mp4 vídeos com o último segundo aparado?

2

Eu tenho um dashcam (feito em Taiwan), ele gera vídeos em exatamente 5 minutos e 1 segundo, o último 1 segundo é duplicado do próximo vídeo primeiro 1 segundo.

Eu quero cortar o último segundo de cada vídeo, depois mesclá-los todos e diminuir a resolução de 1080p para 720p com compactação otimizada.

Como posso fazer isso com o ffmpeg? obrigado antecipadamente!

    
por est 01.01.2016 / 04:53

2 respostas

3

Etapa 1 :

Corte o último segundo de um arquivo com exatamente 5m 1s de comprimento.

ffmpeg -i "input.mp4" -t 300 -c copy "input-5m.mp4"

Etapa 2 :

Mesclar arquivos e reduzir a escala para 720p

1) Crie um arquivo de texto contendo a lista de todos os arquivos aparados, em sequência, como este

file 'input1-5m.mp4'
file 'input2-5m.mp4'
file 'input3-5m.mp4'
...
file 'inputn-5m.mp4'

2) Mesclar e compactar

ffmpeg -f concat -i "list.txt" -vf scale=1280x720,setsar=1 -sws_flags lanczos -c:v libx264 -crf 23 -c:a aac "merged-720p.mp4"

Se você tem uma versão mais antiga do ffmpeg, pode ser necessário inserir -strict -2 para pular o codificador inferior do VisualOn AAC.

Se você quiser pular o Passo 1 , use o comando abaixo para a parte 2 do Passo 2 :

ffmpeg -f concat -i "list.txt" -vf "select='(gte(mod((t\),301),0)*lt(mod((t\),301),300))',scale=1280x720,setsar=1,setpts=N/TB/FRAME_RATE" -af "aselect='(gte(mod((t\),301),0)*lt(mod((t\),301),300))',asetpts=N/SR/TB" -sws_flags lanczos -c:v libx264 -crf 23 -c:a aac "merged-720p.mp4"

Mas isso não funcionará bem se algum dos timestamps dos arquivos de entrada tiver um padrão irregular.

Com o novo concatdec_select flag, isso também pode ser feito da seguinte forma

1) Gere o arquivo de texto, como acima, mas com pontos de entrada / saída especificados:

file 'input1.mp4'
outpoint 300
file 'input2.mp4'
outpoint 300
file 'input3.mp4'
outpoint 300
...
file 'inputn.mp4'
outpoint 300   

2) Mesclar e compactar

ffmpeg -f concat -i "list.txt" -vf "select=concatdec_select,scale=1280x720,setsar=1,setpts=N/TB/FRAME_RATE" -af "aselect=concatdec_select,asetpts=N/SR/TB" -sws_flags lanczos -c:v libx264 -crf 23 -c:a aac "merged-720p.mp4"

O curinga com este método é que os cortes de seleção podem não ser precisos, exceto em fluxos intra-codificados.

    
por 01.01.2016 / 09:38
1

O script de Jeff Geerling automatiza a maior parte da resposta de Mulvya. Desative a compactação de tempo do script configurando SPEEDUP="1.0" e pule exatamente 1 segundo de sobreposição entre clipes definindo TRIM_AMOUNT="01.00" . Adicione opções como -vf scale=1280x720 ao comando ffmpeg na última linha.

    
por 20.09.2016 / 19:43