2010-12-11 59 views
4

En supposant que j'ai un flux vidéo qui a très très peu de changements de scène pendant de très longues périodes (minutes à heures), et j'utilise quelque chose comme FFmpeg pour transcoder la vidéo brute en h.264, avec quels paramètres puis-je jouer pour profiter de la redondance méga?Paramètres de compression agressifs h.264 spécifiquement pour les scènes très longues avec très peu de changements de scène

Est-ce aussi simple que de régler l'intervalle entre les images clés au maximum (quel qu'il soit)?

Y a-t-il de la place dans la spécification h.264 pour améliorer FFmpeg afin de profiter de très longues périodes de temps sans changement de scène?

+0

Est-il pour le flux vidéo ou pour les fichiers vidéo? – osgx

+0

C'est un flux vidéo. Je veux transcoder un flux MJPEG qui change très rarement (imaginez une caméra vidéo fixant une salle qui n'a presque jamais de mouvement, et quand c'est le cas, elle est isolée sur de petites zones de l'écran). Les MJPEGs sont de bonne qualité seulement une fois toutes les 1 ~ 5 min (caméra à très faible bande passante) et il y a très peu de bruit de compression. – michael

+0

Je suis en train de transcoder en h.264 à cause d'autres contraintes. – michael

Répondre

4

Tout d'abord, notez que FFmpeg ne code pas lui-même le h264 mais plutôt x264.

Oui, définir un keyframe inhabituellement long devrait réduire considérablement la taille des vidéos avec de longues périodes de peu ou pas de mouvement. Pourquoi? Parce qu'une "image clé" est une image avec toutes les données vidéo - un instantané, si vous voulez. Toutes les autres images seront différentielles par rapport à l'image clé. Un inconvénient à cela est que s'il y a une corruption à une image intermédiaire, la vidéo sera corrompue jusqu'à ce que l'image clé suivante apparaisse.

Pour définir explicitement l'intervalle d'images clés lors de l'encodage avec FFmpeg, utilisez le commutateur -g. Si votre vidéo comporte 25 images par seconde et que vous souhaitez que l'image clé s'affiche une fois par minute, ajoutez -g 1500 à votre ligne de commande FFmpeg. (25 f/sx 60 s = 1500 f)

Il y a d'autres aspects intéressants que vous pouvez contrôler en ce qui concerne les images clés qui peuvent être d'intérêt pour vous, dont beaucoup sont documentés ici: x264 ffmpeg mapping and options guide

+0

Vous devez être très prudent avec les intervalles d'images clés. Si vous avez des durées trop longues entre les images clés, la recherche ou l'écriture rapide sera difficile et longue (puisque toutes les images entre le cadre que vous voulez rechercher et l'image clé précédente devront être décodées). – Serafeim