Adicionar quadro-chave ao meio do vídeo sem reencodificar o vídeo inteiro

1

Eu preciso adicionar quadros I ao meio do mp4s nos intervalos de anúncio para segmentar para o HLS e ter quadros I quando o vídeo retornar. Eu sei como fazer isso enquanto reencoco todo o vídeo e forço a chave quadros em pontos específicos, mas eu prefiro cortar o ponto (talvez 1 segundo de vídeo) onde o quadro-chave é necessário, adicionar o quadro-chave e costurar o vídeo novamente. Isso deve reduzir muito o tempo de codificação, já que posso copiar codecs com a maior parte, exceto pelo segundo de vídeo em que o quadro-I está sendo adicionado.

O único problema é que o perfil de vídeo e as configurações mudam onde estou adicionando o quadro "I" e não recebo um ponto limpo ao colocar tudo de volta. Eu entendo que posso fazer um reencode com o concat , mas estou tentando evitar esse tempo de processamento.

Alguns exemplos simples do que estou tentando fazer com o ffmpeg:

ffmpeg -i input.mp4 -ss 30 -t 1 -c:a copy -y -copyts clipped2.mp4

ffmpeg -i input.mp4 -t 30 -c copy -y -copyts clipped1.mp4

ffmpeg -i "concat:clipped1.mp4|clipped2.mp4" -c copy -y newOutput.mp4

Eu posso ter que usar ffprobe e especificar taxa de bits, perfil e outras configurações para o clipe de 1 segundo para que ele não seja padronizado para algumas coisas aleatórias, mas eu ainda não consigo fazer isso funcionar direito. / p>

Alguém conseguiu isso? Isso está sendo feito especificamente para a inserção de anúncios no servidor.

    
por pgm 12.04.2018 / 21:37

1 resposta

0

Eu estou copiando esta resposta :

Você pode usar o ffmpeg para inserir quadros-chave onde desejar usando a opção -force_key_frames .

por exemplo:

./ffmpeg -i input.mp4 -c:a copy -c:v copy -force_key_frames 0:05:00,0:10:00 out.mp4

colocará um quadro-chave o mais próximo possível da marca 5 e 10s. Os valores de hora podem estar no formato hh: mm: ss ou apenas segundos (valores únicos, sem dois pontos).

Você pode verificar se há quadros inseridos onde deseja usá-los:

./ffprobe -select_streams v:0 -skip_frame nokey -show_entries frame=pkt_pts_time out.mp4
    
por 27.08.2018 / 19:12