Ignorando um quadro sem recodificar o vídeo H.264

1

Eu tenho um vídeo mp4 / h.264 que contém apenas I-Frames. Eu quero pular um desses I-frame sem re-codificar o vídeo inteiro. Eu tentei isso:

ffmpeg -i "file.mp4" -vf select='not(eq(n\,10))' "out.mp4"

Mas é claro que isso realmente faz uma re-codificação.

Eu preferiria que a solução usasse o ffmpeg, mas qualquer programa que roda no Linux é bom.

Só para ficar claro: o vídeo não contém quadros P ou B.

    
por jellyjoe 22.02.2015 / 12:37

1 resposta

2

Se você deseja remover um único quadro I, é necessário extrair o fluxo de bits para o formato do Anexo B (por exemplo, ffmpeg -i input.mp4 -c:v copy -an output.h264 e, em seguida, localize os bytes que representam a (s) unidade (s) NAL contendo o (s) quadro (s) que você deseja remover. Remova os bytes até o próximo código inicial e salve o fluxo.

Ou você pode emendar o vídeo usando a opção -frames:v para extrair os primeiros quadros n :

ffmpeg -i input.h264 -c:v copy -frames:v n output.h264

Em seguida, usando o parâmetro -ss , você pode procurar a posição em que deseja recomeçar e cortar a partir daí da mesma maneira. Você pode descobrir a posição multiplicando n + 1 vezes a taxa de quadros.

Não há uma maneira mais simples de saber se você não deseja recodificar.

    
por 22.02.2015 / 14:47