Получить PTS из исходного H264 mdat, сгенерированного iOS AVAssetWriter

Я пытаюсь одновременно прочитать и записать файл MOV H.264, написанный AVAssetWriter. Мне удалось извлечь отдельные блоки NAL, упаковать их в AV-пакеты ffmpeg и записать их в другой видеоформат, используя ffmpeg. Это работает, и результирующий файл воспроизводится хорошо, кроме скорости воспроизведения не правильно. Как рассчитать правильные значения PTS / DTS из необработанных данных H.264? Или, может быть, существует какой-то другой способ их получить?

Вот что я пробовал:

Limit capture min/max frame rate to 30 and assume that the output file will be 30 fps. In fact its fps is always less than values that I set. And also, I think the fps is not constant from packet to packet.

Remember each written sample's presentation timestamp and assume that samples map one-to-one to NALUs and apply saved timestamp to output packet. This doesn't work.

Setting PTS to 0 or AV_NOPTS_VALUE. Doesn't work.

По поиску, я понимаю, что необработанные данные H.264 обычно не содержат никакой информации о времени. Иногда в SEI может быть некоторая информация о времени, но у файлов, которые я использую, ее нет. С другой стороны, есть некоторые приложения, которые делают именно то, что я пытаюсь сделать, поэтому я полагаю, что это как-то возможно.

Ответы на вопрос(1)

Ваш ответ на вопрос