Uzyskaj PTS z surowego mdat H264 wygenerowanego przez iOS AVAssetWriter

Próbuję jednocześnie odczytać i zapisać plik H.264 mov napisany przez AVAssetWriter. Udało mi się wyodrębnić poszczególne jednostki NAL, spakować je w pakiety AVP ffmpeg i zapisać je w innym formacie wideo za pomocą ffmpeg. Działa, a wynikowy plik jest odtwarzany dobrze, z wyjątkiem tego, że szybkość odtwarzania nie jest właściwa. Jak obliczyć prawidłowe wartości PTS / DTS z surowych danych H.264? A może istnieje jakiś inny sposób na ich uzyskanie?

Oto, co próbowałem:

Limit przechwytywania min / max klatek do 30 i załóżmy, że plik wyjściowy będzie miał 30 klatek na sekundę. W rzeczywistości jego fps jest zawsze mniejsze niż ustawione przeze mnie wartości. I myślę, że fps nie jest stały od pakietu do pakietu.

Zapamiętaj znacznik czasu każdej zapisanej próbki i załóż, że próbki mapują jeden do jednego na NALU i zastosuj zapisany znacznik czasu do pakietu wyjściowego. To nie działa.

Ustawienie PTS na 0 lub AV_NOPTS_VALUE. Nie działa

Z tego co wiem, rozumiem, że surowe dane H.264 zwykle nie zawierają żadnych informacji o taktowaniu. Może czasami mieć pewne informacje o czasie w SEI, ale pliki, których używam, nie mają. Z drugiej strony istnieją aplikacje, które robią dokładnie to, co próbuję zrobić, więc przypuszczam, że jest to możliwe.

questionAnswers(1)

yourAnswerToTheQuestion