Como posso configurar o ffmpeg para codificar vídeo h.264 com um valor específico de log2_max_frame_num_minus4?

1

Estou trabalhando em um projeto onde estamos unindo segmentos de vídeo HLS. O padrão HLS inclui convenientemente uma diretiva # EXT-X-DISCONTINUITY para sinalizar que o player deve estar pronto para vídeo que tenha um SPS ou PPS diferente (uma alteração na resolução codificada garantiria a necessidade de tal coisa).

Em um iPad da Apple, as transmissões mistas são reproduzidas bem.

Infelizmente, o equipamento que estamos segmentando não implementa essa parte da especificação do HLS. Determinamos que ambos os clipes podem ser reproduzidos no dispositivo de forma independente, mas quando eles fazem parte do mesmo fluxo HLS, o dispositivo não funciona (se recusa a renderizar qualquer clipe secundário e retoma a renderização depois de voltar para a mídia do primário clip).

Neste momento, estamos considerando recodificar um dos clipes para corresponder ao que temos menos controle. Eu já consegui ajustar o perfil e o nível usando a resposta em Como posso definir um nível de perfil h.264 com o ffmpeg?

Agora preciso harmonizar o log2_max_frame_num_minus4. Como eu digo ao ffmpeg para usar 5 para esse valor?

    
por Mutant Bob 17.03.2015 / 18:41

1 resposta

1

Você não pode. Você teria que reprogramar x264 (o codificador H.264) para fazer isso.

Você realmente precisa ir para a fonte ( encoder/set.c ) e codificar, pois não acredito que tenha sido destinado a alguém definir esse valor.

Ou você corrige manualmente os bytes no SPS correspondente a esse valor, correndo o risco de quebrar a sintaxe H.264 (porque outros parâmetros dependem desse valor, é claro).

    
por 17.03.2015 / 21:16