Écriture de x264 à partir d'OpenCV 3 avec FFmpeg sous Linux
Je vais avoir de la difficulté à écrire de la vidéo h264 avec OpenCV 3 via FFmpeg ("'X','2','6','4'" FOURCC). J'ai vu tous les messages à ce jour, mais rien n'y fait. Code:
cv::VideoWriter writer(output_path.string(), CV_FOURCC('X','2','6','4'), 60, frame_size);
De sortie:
OpenCV: FFMPEG: tag 0x34363258/'X264" n'est pas pris en charge avec codec id
28 et en format mp4 /MP4 (MPEG-4 Part 14)' OpenCV: FFMPEG: retour à
l'utilisation de la balise 0x00000021/'!???'
La vidéo est extrêmement faible (byte-sage) et illisible. Réglage de la four_cc à -1 résultats dans l'inconnu "tag" de FFmpeg, je n'ai pas tout invite à choisir le codec, comme d'autres ont suggéré.
La OpenCV 3 doc états:
FFMPEG arrière-plan avec le conteneur MP4 utilise en mode natif d'autres valeurs comme fourcc
code: voir ObjectType, de sorte que vous pouvez recevoir un message d'avertissement à partir d'OpenCV
sur fourcc code de conversion.
Cette page ils refrence n'a pas h264 /x264 liste, et je ne suis pas sûr de savoir comment interpréter cette déclaration, puisque plus tôt, AFIN de postes semblent tous liste X. 2.6.4 comme le code approprié. À L'Aide De H. 2.6.4, de fait, donne à l'identique de sortie.
Des suggestions /solutions de contournement?
P. S. le ffmpeg est le plus up-to-date à partir de Ubuntu responsables, il indique qu'il a été configuré avec --enable-libx264
EDIT: j'ai essayé d'utiliser le conteneur mkv au lieu de mp4. L'avertissement sur le tag de ne pas être pris en charge s'en alla, mais la vidéo est toujours illisible.
source d'informationauteur Greg Kramida
Vous devez vous connecter pour publier un commentaire.
Le problème n'avait rien à voir avec l'affichage de l'avertissement. J'étais en train d'écrire un seul canal d'images, tandis que la VideoWriter m'attendais à un 3-canal de couleur de l'image (la valeur par défaut de isColor, la 5-ème argument VideoWriter du constructeur, est "vrai"). La solution a été mise en isColor à false.
Je pense que votre conclusion ici est la clé:
La mp4 valeurs de balise mis en œuvre pour
ffmpeg
confirmer cela, et sont dans laff_mp4_obj_type[]
dansisom.c
. Le code dans OpenCV estcap_ffmpeg_impl.php
probablement besoin d'être mis à jour pour supporter cela. J'ai tourné autour pendant une heure ou deux, vu qu'il était non-trivial, et reparti.Une façon de contourner ce est à la sortie d'un
.avi
fichier. Il existe de nombreux exemples de personnes ayant des problèmes avec OpenCV et mp4, et on me dit d'utiliser.mov
ou.avi
. (Voici un.)@Greg Kramida: réglage
isColor = false
n'aide pas pour moi: le message est resté, et mon fichier de sortie est devenu seulement ~48 octets. Selon la documentation, il est un indicateur de Windows -- tout ce qu'elle fait pour moi sur Linux, il n'est pas bon.Avez-vous confirmer que vous pourriez générer x264 avec ffmpeg, par lui-même?
Après avoir vérifié que libx264 a de la valeur 0x21 quand j'invoque ce sur la ligne de commande:
J'ai décidé d'utiliser
0x21
directement dansVideoWriter.open()
. Qui génère un valide et interprétables fichier vidéo.Pour référence, mon logiciel est ffmpeg 3.0:
Et OpenCV 3.1.0 configuré avec:
x264 est le
libx264-142:amd64
version pour Debian Jessie.