2012-05-13 2 views
1

J'ai remarqué qu'avec certains fichiers vidéo, les horodatages PTS retournés dans la structure AVPacket ne commencent pas à 0, mais quelque temps plus tard. Par exemple. à 3.128 ou quelque chose. 99% des fichiers vidéo que j'ai testés ont des horodateurs PTS commençant à 0 mais très peu de fichiers ont des horodateurs étranges qui commencent à 3.128 ou 1.2 ou quelque chose. Comment suis-je censé gérer ces cas? Devrais-je simplement enregistrer l'horodatage PTS du tout premier paquet, puis soustraire ce PTS de toutes les valeurs d'horodatage suivantes pour obtenir une valeur PTS de 0? Ou que dois-je faire avec ces horodatages non basés sur 0? Merci de votre aide!Les horodateurs AVCodec PTS ne démarrent pas à 0

Répondre

0

Libavcodec/avformat vous donne seulement les données qui sont dans le fichier. Malheureusement (ou peut-être heureusement, selon votre perspective), de nombreux formats de fichiers ne nécessitent pas de timestamps pour commencer à 0. En fait, il peut être important de les faire démarrer à d'autres valeurs si plusieurs fichiers font partie d'un flux plus long vouloir être capable de les remettre ensemble de façon non destructive. Si vous voulez des horodatages à base de 0, alors comme vous l'avez dit, vous devez enregistrer l'horodatage le plus bas/premier et soustraire cette valeur de tous les horodatages. Notez cependant que pour certains formats vraiment moche (comme la vidéo DVD), il est courant que les horodatages se réinitialisent au milieu du contenu, ce qui peut même entraîner des horodatages négatifs avec votre approche. Si vous pensez que vous pourriez avoir affaire à un tel contenu, vous devrez détecter les discontinuités et les corriger. Dernièrement j'ai travaillé avec avcodec/avformat, ils n'avaient pas de fonctionnalité pour le faire automatiquement pour vous, mais ils pourraient le faire maintenant. Je regarderais dans si vous pensez que vous pourriez avoir besoin de cela.

Questions connexes