Obtenha PTS a partir de H264 mdat bruto gerado pelo iOS AVAssetWriter

Eu estou tentando ler e escrever simultaneamente mov arquivo H.264 escrito por AVAssetWriter. Eu consegui extrair unidades NAL individuais, empacotá-las em AVPackets do ffmpeg e gravá-las em outro formato de vídeo usando o ffmpeg. Ele funciona e o arquivo resultante é reproduzido bem, exceto que a velocidade de reprodução não está correta. Como faço para calcular os valores corretos de PTS / DTS a partir de dados brutos do H.264? Ou talvez exista alguma outra maneira de obtê-los?

Aqui está o que eu tentei:

Limitar a captura mínima / máxima da taxa de quadros a 30 e assumir que o arquivo de saída será 30 fps. Na verdade, seus fps são sempre menores que os valores que eu configurei. E também, eu acho que o fps não é constante do pacote para o pacote.

Lembre-se de cada timestamp de apresentação de amostra escrita e assuma que as amostras mapeiam uma a uma para as NALUs e apliquem o registro de data e hora salvo ao pacote de saída. Isso não funciona.

Definindo PTS como 0 ou AV_NOPTS_VALUE. Não funciona.

Do googling sobre isso eu entendo que os dados brutos H.264 geralmente não contêm informações de tempo. Às vezes, pode ter alguma informação de tempo dentro do SEI, mas os arquivos que eu uso não o possuem. Por outro lado, existem algumas aplicações que fazem exatamente o que eu estou tentando fazer, então eu suponho que seja possível de alguma forma.

questionAnswers(1)

yourAnswerToTheQuestion