ffmpeg: adicione 3 segundos de preto na cabeça e na cauda do vídeo


11

Digamos que eu tenho um vídeo, que pode ter qualquer dimensão ou codec (por exemplo, mp4), e quero adicionar 3 segundos de quadros pretos em sua cabeça.

Eu já vi outras variantes dessa pergunta que dizem respeito à adição de um único quadro e também respostas que especificam a largura e a altura do vídeo. No entanto, o vídeo pode ter qualquer largura e altura e não quero alterar esses valores. Basta adicionar o preto. Em um comando separado, eu também gostaria de adicionar os segundos de preto na cauda.

Não deve haver áudio na seção preta - o preto deve ser concatenado apenas para a frente e para o final. Além disso, eu gostaria de evitar a recodificação do vídeo, se possível, e copiar o resultado para um novo arquivo.

Qualquer ajuda seria apreciada.


O áudio está presente? E você deseja pular a recodificação do vídeo principal?
Gyan

@Mulvya, obrigado pela sua contribuição. Eu atualizei minha pergunta.
Matt C

@ MattC Você pode excluir o comentário acima agora. Isso precisará de vários comandos, a menos que você recodifique. Tudo bem?
Gyan

@Mulvya sim vários comandos é bom. Obrigado novamente.
Matt C

Respostas:


12

O método básico para ingressar em vídeos sem recodificar é usar o desmuxador concat. Este dispositivo requer que os arquivos que estão sendo unidos compartilhem determinadas propriedades, como codec, taxa de quadros, dimensões de vídeo, base de tempo ... etc.

O primeiro passo é criar o segmento em branco, que pode ser usado na cabeça e na cauda.

ffmpeg -i fullvideo.mp4 -vf trim=0:3,geq=0:128:128 -af atrim=0:3,volume=0 -video_track_timescale 600 3sec.mp4

É necessário executar uma etapa da contabilidade para o vídeo completo. Caso contrário, o vídeo combinado provavelmente será executado na velocidade errada.

ffmpeg -i fullvideo.mp4 -c copy -video_track_timescale 600 full600.mp4

Em seguida, crie um arquivo de texto.

file 3sec.mp4
file full600.mp4
file 3sec.mp4

Então corra

ffmpeg -f concat -i list.txt -c copy merged.mp4

Meu primeiro passo supõe que o fluxo de vídeo tenha o formato de pixel mais comum yuv420p. O que deve ser bom, já que este é o único formato de pixel suportado por players da Web e câmeras de smartphones, câmeras de vídeo para consumidores etc. Caso contrário, o geqfiltro pode falhar.

Suponho também, tacitamente, que o vídeo completo não usa mais quadros de referência do que o produzido pela predefinição mediumde x264. É uma suposição segura para 95% dos vídeos.

Por fim, presumo que o vídeo completo tenha o AAC-LC como codec de áudio. Espera-se que seja verdade na maioria dos vídeos por telefone / câmera / web.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.