Ecriture d'un fichier vidéo en utilisant la compression H.264 dans OpenCV
Comment puis-je écrire une vidéo en utilisant H. 264 la compression avec l'VideoWriter classe dans OpenCV? En gros, je veux obtenir une vidéo de la webcam et de l'enregistrer après un personnage est pressé. La sortie du fichier vidéo est énorme lors de l'utilisation de MPEG-4 Partie 2 de compression.
source d'informationauteur Kausic Gunasekkar
Vous devez vous connecter pour publier un commentaire.
Vous pouvez certainement utiliser le
VideoWriter
classe, mais vous devez l'utiliser le bon code FourCC qui représente le standard H264. FourCC est synonyme de Code à Quatre Caractères, ce qui est un identificateur pour une vidéo codec, format de la compression, de la couleur ou des pixels format utilisé dans les fichiers multimédias.Plus précisément, lorsque vous créez un
VideoWriter
objet, vous spécifiez le code FourCC lors de la construction. Consulter le OpenCV documentation pour plus de détails: http://docs.opencv.org/trunk/modules/highgui/doc/reading_and_writing_images_and_video.html#videowriter-videowriterJe suis en supposant que vous êtes à l'aide de C++, et donc la définition de la
VideoWriter
constructeur:filename
est la sortie de la vidéo,fourcc
est le FourCC code pour le code que vous souhaitez utiliser,fps
est le taux de rafraîchissement,frameSize
est les dimensions de la vidéo, etisColor
spécifie si oui ou non vous voulez que la vidéo soit en couleur. Même si FourCC utilise quatre personnages, OpenCV est un utilitaire qui analyse le FourCC et les sorties d'un entier IDENTIFIANT qui est utilisé comme une recherche à être capable d'écrire de la bonne video de format de fichier. Vous utilisez leCV_FOURCC
fonction, et de spécifier les quatre personnages, chacun correspondant à un seul caractère dans le code FourCC de le codec que vous souhaitez.Plus précisément, vous serait-il appeler comme ceci:
Remplacer
X
avec chaque personnage qui appartient à la FourCC (dans l'ordre). Parce que vous voulez que le H264 standard, vous pouvez créer uneVideoWriter
objet:Alternativement, vous pouvez simplement le faire lors de la déclaration de votre
VideoWriter
objet:Si vous utilisez le ci-dessus, il n'est pas nécessaire que vous appelez
open
que cela va automatiquement ouvrir l'écrivain pour écrire des images dans un fichier.Si vous n'êtes pas sûr si le H. 264 est pris en charge sur votre ordinateur, spécifiez
-1
que le code FourCC, et une fenêtre pop-up lorsque vous exécutez le code qui affiche tous les codecs vidéo sur votre ordinateur. Je tiens à mentionner que cela ne fonctionne que pour Windows. Linux ou Mac OS n'ont pas cette fenêtre popping out lorsque vous spécifiez-1
. En d'autres termes:Vous pouvez choisir celui qui est le plus approprié devrait H. 264 ne pas exister sur votre ordinateur. Une fois que c'est fait, OpenCV va créer l'FourCC code à saisir dans l'
VideoWriter
constructeur de sorte que vous obtiendrez un VideoWriter instance qui représente unVideoWriter
qui vont écrire que le type de la vidéo vers un fichier.Une fois que vous avez une trame de prêt, stockées dans
frm
pour l'écriture du fichier, vous pouvez le faire soit:OU
Comme un bonus, voici un tutoriel sur la façon de lire/écrire des vidéos dans OpenCV: http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_video_display/py_video_display.html - Cependant, il est écrit en Python, mais ce qui est bon à savoir, c'est près du fond de la liaison, il y a une liste de codes FourCC qui sont connus pour travailler pour chaque système d'exploitation. BTW, le code FourCC ils précisent pour le H264 standard est en fait
'X','2','6','4'
donc si'H','2','6','4'
ne fonctionne pas, remplacezH
avecX
.Une autre petite remarque. Si vous utilisez Mac OS, vous devez utiliser est
'A','V','C','1'
ou'M','P','4','V'
. À partir de l'expérience,'H','2','6','4'
ou'X','2','6','4'
lorsque vous essayez de spécifier le FourCC code ne semble pas fonctionner.