Bonjour a tous,
Je travaille actuellement dans une société audio-visuelle, et nous sommes confrontés à un petit problème pour le moment:
Un client voudrait un système ou le visiteur pourrait grâce a une roulette avancer ou reculer dans la vidéo. Quand je dis reculer ça veut dire jouer en vitesse 1x mais dans le sens contraire, pas faire des sauts en arrière comme c'est le cas pour tout les lecteurs vidéos actuel.
Bien sur je suis au courant que vu le format de compression Mpeg des vidéos, ceci est impossible (sauf avec un tampon image par image mais ce n'est pas ça que je recherche).
Mais les besoins ne sont pas si compliqués, en fait la vidéo sera assez courte et pourra donc être une suite de .jpg (ou .png) à 25 images/seconde et cela rend la chose nettement plus faisable.
Il me faudrait donc juste un logiciel qui lorsqu'une touche est appuyée il avance d'une image tout les 25ème de seconde et qui recule d'une image quand une autre est enfoncée. Lorsqu'aucune touche n'est enfoncée l'image ne change pas.
Je programme en C/C++ et donc peut adapter quelque chose d'existant, mais s'il faut programmer "depuis rien" je ne suis pas sur que l'on soit dans les délais.
Les "complications" (toutes relatives) selon moi:
- la contrainte de temps (presque réel)
- une mauvaise réactivité après une longue inactivité du a l'arrêt du disque
Voila, donc si vous connaissez un soft, une librairie ou une manière simple et efficace de programmer ça, faites moi signe, en attendant je continue mes recherches.
Merci.
# peut-être une connerie
Posté par ploum (site web personnel, Mastodon) . Évalué à 7.
Tu convertis la vidéo en une suite de jpg avec mencoder et tu essayes ça. Il reste à voir si c'est assez rapide pour supporter du 25 images par seconde.
Sinon, en C, un programme GTK qui fait ça ne devrait pas être compliqué. (j'avais écrit, pour apprendre GTK, un programme qui changeait une image quand on appuie sur un boutton. ça m'a pris une grosse heure de C pour faire ça et j'avais jamais fait de Gtk).
Et ce genre de truc en python doit aussi être facile. Mais évidemment on suppose que tu as une séquence Jpg.
Si ce n'est pas possible avec une séquence jpg, faut alors choisir un codec video qui n'est pas basé sur des différences entre les frames, genre du DV pur.
Et dans ce cas, je te conseille de jeter un oeil à Gstreamer.
Mes livres CC By-SA : https://ploum.net/livres.html
[^] # Re: peut-être une connerie
Posté par xavier thomas . Évalué à 1.
Je pensait a qqchose du genre en multythreading avec une mise en tampon des images voisines, mais ca sort de mes competances.
Ca mériterait un essait en tout cas. (a faire en extra et je fais deja pleins d'heures sup car a la boure sur un autre projet)
La video je n'ai meme pas besoin de la convertir, je dit a la production comment je la veux et c'est eux qui se débrouillent.
[^] # Re: peut-être une connerie
Posté par ahuillet (site web personnel) . Évalué à 3.
C'est faisable sans multithreading au fait (quoique mettre un gestionnaire de cache dans un autre thread serait certainement plus censé).
Je pense que tu en as pour deux heures de boulot, un bon café, une aspirine, et c'est parti :p:p
(man pthread_create et roulez jeunesse)
[^] # Re: peut-être une connerie
Posté par Krunch (site web personnel) . Évalué à 3.
Bon en fait il y a sans doute moyen de le faire sans thread mais ça risque d'être plus compliqué qu'avec. Par ailleurs, il ne faut pas oublier non plus que le programme (ou une partie de sa mémoire) risque d'être mis en swap, donc ça ne règle pas tous les problèmes. Une solution est de ne pas mettre de swap sur les machines concernées ou d'utiliser mlock(2) (mais sous Linux, seul root peut le faire, sous BSD par exemple tout le monde peut mlock(2)er des pages mais avec un nombre limite).
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: peut-être une connerie
Posté par Sylvain Sauvage . Évalué à 2.
Sous Linux aussi tout le monde peut mlocker, mais le nombre limite est de zéro pour un utilisateur non s.u.
Mauvaise foi, quand tu nous tiens ;o)
Sinon, je ne sais pas si ce n'est que Linux : il semblerait d'après la page de man que mlock soit POSIX 1b. Qui a la norme sous le coude pour vérifier (ou un unix posix...) ?
[^] # Re: peut-être une connerie
Posté par Krunch (site web personnel) . Évalué à 2.
Effectiement mlock(2) est censé être plus ou moins portable.
http://www.unix.org/onlinepubs/007908799/xsh/mlock.html(...)
(SUSv2 est une extension de POSIX je pense)
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: peut-être une connerie
Posté par Sylvain Sauvage . Évalué à 3.
La page de man que j'ai sous les yeux dit que le code erreur EPERM est renvoyé si l'on a pas les droits s.u.
C'était juste pour dire que tout le monde pouvait utiliser la fonction mais qu'elle ne fait ce que l'on souhaite que pour s.u. (je l'ai dit : mauvaise foi ;o)
Par contre, plus sérieusement, la portabilité n'est pas super : EAGAIN et ENOSYS ne sont pas prévues sur la version Linux (toujours selon la page de man, SVr4 prévoit le EAGAIN) et tu dis que BSD permet aux n.u. (normal-user) de le faire.
Mais bon, pour une fonction système, c'est un peu normal.
[^] # Re: peut-être une connerie
Posté par Krunch (site web personnel) . Évalué à 3.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
# L.I.V.E.S.
Posté par gnujsa . Évalué à 8.
il fait aussi VJ et fonctionne un peu comme ça: il transforme les videos en une succesion d'image png ou jpeg. la lecture dans les 2 sens à l'aide des touches fleches est fluide. Avidemux le fait aussi mais il y a une latance dans dans la lecture arriere. Je pense qu'il faudrait que tu regarde du coté des programmes dit "VJ" (Video Jockey)
[^] # Re: L.I.V.E.S.
Posté par yapacpuca . Évalué à 4.
reste plus qu'à te trouver la librairie qui fait ça.
ps: Tu vas exploser tes volumes dans tous les cas.
# tu dois dev un site ou une appli ?
Posté par doublehp (site web personnel) . Évalué à 2.
Sinon, je te renvoi a mes collegues ci dessus.
[^] # Re: tu dois dev un site ou une appli ?
Posté par xavier thomas . Évalué à 4.
Donc appli!
# ffmpeg
Posté par djibb (site web personnel) . Évalué à 6.
le port : http://christophe.jalady.free.fr/lynkeos/index.html(...)
# MJPEG
Posté par nigaiden . Évalué à 4.
L'équivalent PNG existe aussi, c'est le format MNG, mais je crois qu'il a plus vocation a remplacer les GIF animés qu'à faire des petites vidéos.
[^] # Re: MJPEG
Posté par nigaiden . Évalué à 4.
# GdkPixbufAnimation
Posté par ccomb (site web personnel) . Évalué à 5.
http://developer.gnome.org/doc/API/2.0/gdk-pixbuf/gdk-pixbuf-animat(...)
Ca me semble assez réalisable, il faut encore voir ce que ça supporte comme format.
Et pour avancer d'une image : gdk_pixbuf_animation_iter_advance()
Ensuite, pour être sûr que ça reste dispo il suffit peut-être de laisser tourner un thread qui s'amuse à recharger régulièrement l'image courante et celles adjacentes ?
# je ne sais pas si c'est pertinent mais
Posté par pounk . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.