J'ai regardé autour pour cela, et je n'arrive pas à le trouver. J'ai un flux RTSP que je tire de l'utilisation de ffmpeg. Les objets à ma disposition incluent un AVPacket, un AVFrame, un AVCodecContext et un AVFormatContext. Je voudrais avoir l'heure absolue à laquelle un cadre a été pris. (idéalement avec une granularité aussi petite que quelques millisecondes, bien que ce ne soit pas complètement nécessaire).FFmpeg C++ comment obtenir l'horodatage, en secondes depuis l'époque où une image a été prise à
Y at-il un moyen facile de le faire en utilisant les bibliothèques ffmpeg? J'ai regardé av_frame_get_best_effort_timestamp
ainsi que codec_context->time_base
, mais cela semble donner les réponses en quelques secondes depuis le début de la vidéo, et je ne sais pas nécessairement quand la vidéo a commencé.
Supposons que vous serez en mesure d'obtenir l'horodatage du flux. Il serait lié à l'horloge de l'ordinateur distant - qui n'a rien à voir avec l'horloge locale. Alors pourquoi ne pas stocker l'heure à laquelle la première trame vidéo a été reçue et l'utiliser comme offset pour chaque av_frame_get_best_effort_timestamp que vous avez extraite? –
@Artemy Parce que j'ai besoin de synchroniser mon application avec le temps que la vidéo me donne. Il pourrait y avoir plusieurs applications qui utilisent toutes ce flux, et j'aimerais que mon programme soit synchronisé avec celles-ci. L'heure à laquelle j'ai reçu le premier paquet peut être retardée de 30 secondes à partir du moment où la trame a été prise pour mon application, et 10 secondes de retard pour une autre application. Et puis mon timing est de 20 secondes. Alors que le temps absolu à partir du flux est accessible à toutes les applications –