Comment écrire un encodeur vidéo avec ffmpeg qui contrôle explicitement la position des images clés?
Je veux écrire un codeur avec ffmpeg qui peut mettre des images (images clés) les positions que je veux. Où puis-je trouvé des tutoriels ou des matériaux de référence?
P. S
Est-il possible de faire cela avec mencoder ou tout opensource codeur. Je veux encoder H263 fichier. Je suis en train d'écrire en vertu de l' & pour linux.
source d'informationauteur SunnyShah
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin de regarder à la libavcodec documentation - plus précisément, à avcodec_encode_video(). J'ai trouvé que le meilleur de la documentation disponible est dans le ffmpeg fichiers d'en-tête et de l'API code source de l'exemple qui est fourni avec la source ffmpeg. Plus précisément, regarder libavcodec/api-exemple.c ou même de ffmpeg.c.
À la force d'une image I, vous aurez besoin de définir les pict_type membre de l'image que vous avez de l'encodage 1: 1 est une image I, 2 P est un cadre, et je ne me souviens pas quel est le code pour un B frame du haut de ma tête... Aussi, la key_frame membre doit être mis à 1.
Certains d'introduction de matériel est disponible ici et icimais je ne sais pas vraiment comment il est bon.
Vous devez être prudent sur la manière de vous allouer les objets d'image que les appels d'API besoin. api-exemple.c est votre meilleur pari autant que ça se passe, à mon avis. Recherchez la fonction video_encode_example() - c'est concis et illustre toutes les choses importantes que vous devez vous soucier de payer une attention particulière à la deuxième appel à avcodec_encode_video() qui transmet une valeur NULL à l'image de l'argument, il est nécessaire d'obtenir les dernières images de la vidéo depuis MPEG vidéo est encodée de la séquence et vous pouvez vous retrouver avec un retard de quelques images.
Un up-to-date de la version de l'api-exemple.c peut être trouvé à http://ffmpeg.org/doxygen/trunk/doc_2examples_2decoding_encoding_8c-example.html
Il ne l'intégralité de l'encodage vidéo dans un seul et relativement courte de la fonction. Donc c'est probablement un bon endroit pour commencer. Compiler et l'exécuter. Puis commencez à les modifier jusqu'à ce qu'il fait ce que vous voulez.
Il dispose également d'encodage audio et audio & vidéo décodage des exemples.
GStreamer a décent de la documentationa des liaisons pour un nombre de langues (bien que l'API native est C), et prend en charge n'importe quel format vidéo, vous pouvez trouver des plug-ins, y compris H. 263 via gstreamer-ffmpeg.
vous aurez besoin de la bibliothèque libavcodec, Pour la première étape, je pense que vous pouvez en apprendre plus sur son utilisation dans ffplay.c fichier à l'intérieur de ffmpeg code source. Il vous dira beaucoup. Vous pouvez le vérifier mon projet aussi sur la vidéo à rtstegvideo.sourceforge.net.
Espérons que cette aide.
Si vous êtes programmeur Java puis utilisez Xuggler.