Voir la version complète : [PSP][Aide] Lire une vidéo
Bonjour,
Donc, je programme sur PSP, et pour l'intro de mon jeu, j'aimerais faire une vidéo. Faire la vidéo n'est pas le problème, c'est de la lire.
Je n'ai trouvé aucune lib de lecture de vidéo donc j'ai tenté de mettre chaque frame en PNG et d'afficher une frame, la supprimer, charger la suivante etc.
Ca marche, mais comme je m'y attendais, ça lag énormément.
En effet, le FPS moyen est de 3 :s
Donc je me demandais si vous connaissiez une méthode plus efficace pour faire cela et/ou une lib pour lire des vidéos sur PSP.
Merci.
Bobby Sixkilla
18/07/2006, 19h21
Comment ils font dans les jeux commerciaux? Ils intègrent un lecteur de vidéo?
Comment ils font dans les jeux commerciaux? Ils intègrent un lecteur de vidéo?
Je suppose que oui. Je pense qu'ils créent eux même leur lecteur de vidéos encodées avec un codec déjà existant.... Le problème, c'est que je n'ai ni le temps ni le niveau pour faire cela....
c'est quoi ton probleme? le chargment qui prend trop de temps?
SI c'est ça, pkoi tu charges pas plusieurs images d'un coup, ça ne fait qu'un acces MS au lieu de plusieurs et même si la quantité de données à transferer est plus grande, tu gagnes dejà le temps d'acces.
Tu dois forcement pouvoir le faire, je vois pas comment tu arrives à etre à 3fps.
En fait, j'optiens 3FPS car je charge la prochaine frame à chaque frame affichée....
Je peux tout charger d'un coup (c'est ce que je suis en train de faire d'ailleurs, ca va limiter la taille à 20m, mais bon, les vidéos ne seront pas trop grandes ^^), seulement, je voulais utiliser ça en dernier recours car ca demande un temps de chargement assez long avant la vidéo elle même...
EdIT :
J'ai un probleme.
Quand je veux charger toutes les frames dans la mémoire, le programme bloque à partir de la frame numéro 20, alors que je charge dans la RAM, que ce'st la première chose chargée dans le jeu et que le total est inférieur à 5 mo.....
Voici le code de chargement :
for(i=0;i<62;i++)
{
strcpy(frame_file, "frame0");
if(i<10)strcat(frame_file, "0");
sprintf(number, "%d", i);
strcat(frame_file, number);
strcat(frame_file, ".png");
intro[i] = oslLoadImageFile(frame_file, OSL_IN_RAM, OSL_PF_5551);
if(!intro[i])oslDebug("%d,%s",i,frame_file);
}
Au total il y a 62 frames ( 61+ la numéro 0), toutes dans le dossier vidéo et avec un nom comme ceci : frame000.png,frame001.png [...],frame020.png[...]frame061.png.....
Chaque fichier ne fiat en moyenne que 80ko....On ets donc loin des 20mo maximum au total.
Pour info, le oslDebug m'affiche ceci :
20, frame020.png
(j'ai vérifié, le fichier porte bien ce nom....)
Quant à l'affichage, aucun problème, c'est très fluide, comme je le pensais....
la ram est ptet plus petite, genre 4Mo, non ?
Bon, j'ai "réglé" le problème.
En fait, je l'ai contourné...
J'ai repris la première technique de chargement frame par frame qui tournait mais à 3 fps, et j'ai recompressé les images pour qu'elles fassent au final....20ko chacune (contre 200 au début !).
Ceci a grandement amélioré le temps de chargement et j'ai atteinds un fps plus que convenable :)
Cependant, cette compression ne vient pas sans sacrifices.... J'ai du passer les images en 256 couleurs (ça, ça va, ça ne soit voit pas et ça ne se voyait pas avant non plus, donc quasiment aucune perte de ce coté-ci).
Par contre, j'ai aussi du réduir la taille des images par deux, elles font maintenant 240*136 chacune et je multiplie leur taille par deux....C'est pas terrible :( mais ce n'est pas inregardable non plus ;)
J'ai hâte de voir ta vidéo dans ton jeu, vivement une release de ta future version ! ;)
la ram est ptet plus petite, genre 4Mo, non ?
Ben non, la RAM "utile" de la PSP fait 20Mo, le bug -contourné- par smealum est bizarre :huh:
Sinon je me suis aussi toujours demandé comment les jeux commerciaux faisaient leurs vidéos, surement un codec perso.
Le jeu qui m'a épaté le plus à ce niveau est megaman maverick hunter X avec ses belles et longues vidéos, et ce sans pratiquement aucun accès UMD durant la vidéo et un loading quasi nul :blink:
vBulletin® v.3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org