2016-01-29 3 views
2

Je construis une vidéo à partir d'un contenu qui ne change pas à un débit constant (affichage virtuel de l'écran du téléphone), en fait je reçois encadrer seulement quand il y a un tel changement. Est-il légal selon les normes d'avoir un taux de trame incohérent dans une vidéo? Par exemple avoir des trames avec PTS de 0s, 0.066s, 0.1333s, 0.2s, puis la trame suivante à 20s, etc?Est-il légal d'avoir une fréquence d'images incohérente dans une vidéo mp4 (h.264/avc)

Il semble que certains lecteurs (Chrome) aient du mal à les lire correctement, mais lorsqu'ils rencontrent un tel décalage temporel, ils commencent parfois à afficher des images depuis le début de la vidéo. Devrais-je reproduire moi-même la dernière image pour maintenir une fréquence d'images constante? Existe-t-il un moyen d'indiquer à un codec (ffmpeg) d'injecter des «sauts de trames» à un débit constant lorsque de tels écarts sont détectés?

Merci

+0

Êtes-vous d'exécuter une commande ffmpeg ou est-ce via l'API? – Mulvya

+3

Et oui, il est légal pour les MP4 d'avoir une fréquence d'images variable. – Mulvya

+0

@Mulvya En plus d'être légal, y a-t-il des problèmes de compatibilité connus avec les joueurs? Comme je l'ai mentionné, je vois des problèmes avec Chrome intégré dans le lecteur. En ce qui concerne la ligne de commande ou l'API, s'il s'agit d'un prolem dans le monde réel, et doit être corrigé, les deux options sont sur la table: 1. Utiliser l'API ffmpeg pendant l'enregistrement pour générer des fps 2. enregistrer avec VFR, puis avoir backend serveur transcoder (avec ffmpeg?) pour injecter des trames manquantes. –

Répondre

1

Oui, comme il est déjà mentionné par Mulvya mp4 prend en charge la fréquence d'images variable.

Vous pouvez rechercher here pour vérifier si certains conteneurs, y compris mp4, prennent en charge la fréquence d'image variable. En ce qui concerne la duplication ou la suppression de trames, vous pouvez faire quelques expériences avec l'option -vsync.

Par exemple -vsync 1 permet de dupliquer/supprimer des trames pour obtenir exactement la fréquence d'image constante demandée.

0

Il est légal pour les MP4 d'avoir une fréquence d'images variable, mais comme vous l'avez expérimenté, des motifs PTS très irréguliers peuvent provoquer des problèmes de lecture.

transcoder au CRF MP4, qui est le mode par défaut pour muxing ffmeg, utilisez via CLI:

ffmpeg -i input.mp4 -crf 18 -c:a copy -fflags +genpts output.mp4