Jump to content

Archived

This topic is now archived and is closed to further replies.

Mephisto

[mp4ip & ffmpeg-avcodec]

Recommended Posts

Bonjour,

Je bosse en ce moment sur l'adaptation de nos outils de gestion de flux (MJPEG) à h264.

Dans un premier tool, je dois extraire une image d'un instant t.

Je récupère donc le time_base du codec. Mon problème est que j'appelle ensuite avcodec_decode_video() pour récupérer le AVPacket contenant la variable pts, me permettant de situer l'image dans le temps.

N'y a-t-il pas une méthode plus simple, permettant de localiser l'image sans décoder les précédentes ?!

Mon chef de proj aimerait me voire lire le flux avec mp4ip puis aller injecter l'image qu'il me faut dans un avcodec avant d'exporter en JPEG...

bref, ça m'échappe... pourquoi s'emmerder autant... je ne doute pas que ce soit possible... mais je n'en suis pas sûr non plus...

Un autre outil sur lequel j'ai à réfléchire est le player.

J'ai cru comprendre qu'il fallait "initialiser" deux "trucs" avant de commencer la lecture.

Admettons, je ne m'occupe du côté client / flash, je ne vois pas trop comment ça marche...

Mais donc, quelles sont ces infos ? On m'a parlé d'infos "codec" (en citant la résolution, biterate, ...) et d'un "autre truc" (sans pouvoir me dire ce qu'il s'y passait...). comment se récupèrent-elles ?

une doc en particulier que je devrais lire ?

Share this post


Link to post
Share on other sites

un tuto pas trop à jour, mais instructif : http://dranger.com/ffmpeg/

et dans les sources de ffmpeg-0.5.1, il y a un test/seek_test.c intéressant...

édit :

je boucle maintenant sur av_read_frame, jusqu'à trouver le pts qu'il me faut, et mettant de côté le pts de la dernière frame de référence.

je fais ensuite un av_seek_frame SEEK_FLAG_BACKWARD vers cette dernière frame, puis je reprends mes av_read_frame avec des av_decode_video

c'est moins sâle qu'un read_frame/decode_frame de bout en bout du fichier...

edit2:

dans mes premiers tests (ce n'est plus le cas maintenant que je m'en sers correctement), j'arrivais souvent à faire planter av_seek_frame

mon chef de proj n'aime pas. et c'est vicérale.

il a passé la soirée d'hier à essayer de comprendre, et sans m'en dire plus, m'annonce ce matin qu'on n'utilisera pas cette fonction...

soit... on reprend le fonctionnement : maintenant, je garde un tableau de packets (enfin, je ne garde que size et data) entre la frame de référence et celle voulue, puis je vais faire mon décode dessus...

c'est comme il veut...

il n'empèche que ma version avec seek_frame pète tous les temps de cette dernière version où je malloc et dup les data/size en boucle... étrangement...

donc... éventuellement... si vous avez un argumentaire pour défendre le seek_frame, je suis preneur.

et sinon, je suis toujours à la recherche d'infos concernant l'initialisation d'un player (?!)

Share this post


Link to post
Share on other sites

×
×
  • Create New...