Sujet n°211
Posté par MoussPSP le 22 Jan - 23:35 (2008)
Titre : [Script] Lire une vidéo *.avi rapidement et facilement !
Ce script vous permettra de lire des vidéos au format AVI.

Comme tout les ordinateurs n'ont pas les mêmes codecs d'installés,
il est hautement préférable de les ré-encoder en Xvid.



Créez un dossier Movies à côté des dossiers Graphics, Audio et Data.

Créez un script nommé Scene_Movie au-dessus de Main :

Code:






class Scene_Movie

 def initialize(movie)
   @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
   @movie_name = Dir.getwd()+"\\Movies\\"+movie+".avi"
   main
 end
 
 def main

   game_name = "\0" * 256
   @readini.call('Game','Title','',game_name,255,".\\Game.ini")
   game_name.delete!("\0")
   @wnd = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
   @temp = @wnd.call(0,0,nil,game_name).to_s
   movie = Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V')
   movie.call("open \""+@movie_name+"\" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0)
   @message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V')
   
   @detector = Win32API.new('user32','GetSystemMetrics','%w(l)','L')
   @width = @detector.call(0)
   if @width == 640
     fullscreen
     Graphics.update
     sleep(1)
     Graphics.update
     sleep(1)
     Graphics.update
     sleep(1)
   end
   
   status = " " * 255
   movie.call("play FILE",0,0,0)
   loop do
    sleep(0.1)
    @message.call(@temp.to_i,11,0,0)
    Graphics.update
    @message.call(@temp.to_i,11,1,0)
    Input.update
    movie.call("status FILE mode",status,255,0)
    true_status = status.unpack("aaaa")
    if true_status.to_s != "play"
      break
    end
    if Input.trigger?(Input::B)
      Input.update
      break
    end
   end
   movie.call("close FILE",0,0,0)
   bail
 end
 
 def bail
   if @width == 640
     fullscreen
   end
  end
end

def fullscreen()
 
 $full.call(18,0,0,0)
 $full.call(13,0,0,0)
 $full.call(18,0,2,0)
 $full.call(13,0,2,0)
end
$full = Win32API.new('user32','keybd_event','%w(l,l,l,l)','')







Maintenant, dans n'importe quel event faites la fonction Appeler un Script :
Code:




Scene_Movie("nom_de_la_video_avi_sans_son_extension")




La Vidéo devra être dans le dossier Movies, qui sera placé dans le répertoire de votre jeu.
Par exemple
: |-- Dossier du jeu
|--- Audio
|--- Graphics
|--- Movies

Attention
, cela ne redimensionne pas la vidéo, et cela la colle en haut à gauche.
Donc si votre vidéo est petite, on peut voir la map derrière.

Pensez à ré-encoder vos vidéos, de préférence avec le logiciel SUPER (tuto ici), sous ce format :

Taille : 640*480
Codec : DivX ( Pour SUPER : FourCC (XVID) )

Ainsi votre vidéo prendra toute la fenêtre et pourra être lue par la majorité des ordinateurs
pouvant lire le XVID.
Pensez donc à inclure l'installateur des codecs XviD avec votre jeu.

PS : SUPER est le nom du logiciel. Cela n'empêche pas qu'il est vraiment super.

Posté par valpokbest le 23 Jan - 13:33 (2008)
C'est quoi une vidéo .avi?

Posté par MoussPSP le 23 Jan - 13:40 (2008)
Bah un fichier vidéo avec l'extention .avi
Comme on a les extensions .mpg, .divx, .flv, etc.

Posté par valpokbest le 23 Jan - 13:44 (2008)
Ok. Je comprends pas ce que sont les CODEC et tout le tralala mais c'est pas grave car je ne m'en serviri pas.

Posté par Sphinx le 23 Jan - 13:44 (2008)
Clin d'œil foireux AVI est un format vidéo assez lourd Clin d'œil foireux


^^ Est-ce possible d'adapter ce script à un autre format ? (je pense évidement au WMV ^^)

Posté par MoussPSP le 23 Jan - 13:52 (2008)
Sphinx a écrit:

Clin d'œil foireux AVI est un format vidéo assez lourd Clin d'œil foireux

EXTREMEMENT FAUX.

Tout dépend du codec utilisé pour la vidéo.

Par exemple, pour une publicité de Pokémon Diamant/Perle de 1 minute 30 avec une taille de 640 x 480 pixels :

Microsoft AVI (Vidéo Non compressée) = 20,3 Mo
DivX = 4,8 Mo
XviD = 4,5 Mo

Donc, n'utilisez pas le charabia de Microsoft mais un codec qui compresse les vidéos,
de préférence bien sûr DivX qui est reconnu par la plupart des ordinateurs et par les lecteurs XviD.

Posté par Sphinx le 23 Jan - 14:09 (2008)
^^ en fait le convertisseur que j'emploie pour passer mes vidéos au format .avi multiplie par 10 leur poids initial (format wmv Petit saligaud mal élevé)


^^ ce qui fait qu'une vidéo de taille 5Mo au format wmv, après traitement, elle en fait 50Mo xD

Posté par MoussPSP le 23 Jan - 14:20 (2008)
Ah oui là ca change tout !
Bah utilise SUPER, il est polyvalent, convertit en format avi, iPod, PSP, PDA, téléphone portable et j'en passe ! et tout ca gratuitement ^^

Posté par Sphinx le 23 Jan - 14:36 (2008)
^^ "SUPER" ? (c'est son nom ? ^^)

Posté par MoussPSP le 23 Jan - 16:01 (2008)
Oui...
Et en plus de ça il est vraiment SUPER !

Posté par Doum le 26 Fév - 11:47 (2008)
Mouss il y a un seul probléme :
Le lien de téléchargement de SUPER est mort ou Free a enlevé le fichier car sa m'affiche :
le fichier que vous demander n'éxiste pas

Posté par Flav X le 26 Fév - 20:49 (2008)
ton script ne fonctionne pas il mais un message d erreur des que en arrive sur l event

Posté par MoussPSP le 9 Mar - 14:43 (2008)
Vérifie que ta vidéo est bien en fomat *.avi, et qu'elle est dans le dossier Movies.
J'ai mis à jour le lien pour télécharger SUPER !

Posté par Yafeee le 15 Mar - 11:56 (2008)
Merci MoussPSP pour ce script qui seras surement utile pour pas mal de monde, mais moi j'ai cependant un petit probleme, je pense le meme que celui de Flav X, en effet j'ai bien convertit la vidéo, il n'y a pas d'erreur de nom dans l'appel de script, mais j'obtiens ce message d'erreur :
 

Posté par MoussPSP le 15 Mar - 18:01 (2008)
Comprend pas cette erreur...
Qui bon en script peut aider ???

Posté par naruto6660 le 1 Juin - 10:38 (2008)
Spoiler
ooooooo

Posté par bibiantonio le 3 Juin - 18:13 (2008)
je suis deg ça ne marche pas snif !
bon tant pis ^^

Posté par shaolan le 3 Juin - 21:01 (2008)
Citation:
Maintenant, dans n'importe quel event faites la fonction Appeler un Script :
Code:


Scene_Movie("nom_de_la_video_avi_sans_son_extension")


Je pense qu'il faut rajouter un ".new" à la fin de la commande ( je dis je pense car j'ai pas testé mais je vois que ça). Donc normalement ça fait :

Scene_Movie("nom_de_la_video_avi_sans_son_extension").new

Posté par MoussPSP le 5 Juin - 19:43 (2008)
Je confirme qu'il ne faut pas de .new à la fin.
Cela appelle la scène qui contient le lecteur vidéo...

Posté par Drakhaine le 5 Juin - 20:25 (2008)
Bah c'est le but... Comment tu veux lire une vidéo sans accéder à la scène ?...

Posté par shaolan le 6 Juin - 15:11 (2008)
euh je viens de regarder encore un fois le script et le .new est le plus adapté.
Et justement, il faut appelé la scène vu déja le nom de la class et sa forme.

Posté par bibiantonio le 6 Juin - 15:22 (2008)
il suffit just de téster pour voir ça !
xD

Posté par MoussPSP le 12 Juin - 21:01 (2008)
Bah chez moi ca marche sans .new...
En fait chai plus...XD

Posté par Kasami le 12 Juin - 23:32 (2008)
J'ai été sur plusieurs forum pour chercher comment intégrer une vidéo à RmXP.
Et j'ai vu ce script sur un autre forum.
L'un des commentaires disait que le script fonctionnait suivant la taille de l'image et suivant le codec utilisé.
Donc le script peut fonctionner chez certaine personne et pas chez d'autre.

Posté par Drakhaine le 12 Juin - 23:39 (2008)
Merci d'avoir éclairé nos lanternes Clin d'œil foireux

Posté par Kasami le 12 Juin - 23:52 (2008)
J'ai essayé le script moi aussi.
J'ai changé la taille de la vidéo, le codec mais j'ai toujours une erreur. Donc j'ai laissé tomber.
C'est dommage, j'aurais bien aimé mettre une vidéo en intro.

Posté par Sphinx le 12 Juin - 23:56 (2008)
Imbécile heureux Autre solution, tu fais tout en évent =)

Bien sur, ca limite les possibilités (quoique...) et ca demande un boulot énorme à consacrer qu'à l'intro, mais le rendu peut être sympa et ca ne pose pas de problèmes de codecs... Imbécile heureux

Moi c'est que que j'ai fait pour mon intro Clin d'œil foireux (avec la reprise partielle de l'intro PSP 4G, je l'avoue ^_^" Mais j'ai quand même passé une 10aine d'heures rien que sur l'intro, la réalisation des différents graphiques qui me manquaient comprise... Petit saligaud mal élevé)

Posté par bibiantonio le 12 Juin - 23:58 (2008)
héhé moi j'ai passé au moins 6h à faire la mienne :p
j'ai refait celle de pokémon vert feuille et rouge feu en modifiant des trucs ^^

Posté par Pio le 13 Juin - 11:29 (2008)
Moi la présente j'ai changé le pokémon qui volé, j'ai fonci le fond, j'ai enleve la team 4 present et j'ai mis pio, j'ai enlevé pokémon 4G , et mis pokémon AGATE et pour le appuyer sur start, ya une image ( que ma fait speed ) et j'ai rajouté appuyez sur start et pio ^^

Pour le fond au début j'aimerais avoir un grand volcan avec des eclairs en haut du brouillard marron et tout de même format que l'image " introavtitre1 " mais je suis incapable de faire ça <____< donc je me suis contenté de foncir l'autre. Hélas ^^"

Posté par Sphinx le 13 Juin - 11:40 (2008)
=) moi j'ai gardé une bonne partie des éléments de la première partie de l'intro (jusqu'au latias / latios qui vole) en changeant "La Team 4G présente ..." (là j'y ai mis le nom de mon jeu ^_^)



En revanche, j'ai recréé toute une intro en 2° partie - en me rendant compte trop tard qu'en copiant les crédits de fin, j'aurais pu m'économiser du boulot xP - avec tous les crédits des personnes qui ont contribué au projet Imbécile heureux

Posté par MoussPSP le 14 Juil - 00:00 (2008)
En encodant en XviD ca fonctionne beuacoup mieux !

Posté par tithib le 5 Aoû - 12:53 (2010)
Bonjour j'ai un problème avec ce script. J'ai en même temps que celui-là le script pour commencer le jeu en plein écran et quand la vidéo commence, le plein écran s'enlève, je dois regarder la vidéo dans la petite fenêtre et quand la vidéo se termine, le fond d'écran ne se remet plus ! 
Comment regarder la vidéo sans quitter le plein écran svp ??? 

Posté par og_loc-TATOO le 5 Aoû - 15:40 (2010)
En même temps bande d'inculte si vous positionnez mal les mots pour appeler le script sa marchera pas >_>
Faut bien mettre le .new mais au bon endroit gros malin, voici le script à appeler:


Scene_Movie.new("nom de votre vidéo situé dans le dossier" "Movies") et oubliez pas de mettre le nom de la vidéo dans les guillemets exemple pour moi Yeux motorisés


Scene_Movie.new("lol")


Voilà bonne journée =)


HS: vous voulez une vidéo pour vous montrez que sa marche Yeux motorisés ?


Et je pense que pour changer le format de la vidéo faut aller à la ligne 5 et remplacer ".avi" par le format que vous voulez =)

Posté par Mini' le 5 Aoû - 18:20 (2010)
tithib a écrit:

Bonjour j'ai un problème avec ce script. J'ai en même temps que celui-là le script pour commencer le jeu en plein écran et quand la vidéo commence, le plein écran s'enlève, je dois regarder la vidéo dans la petite fenêtre et quand la vidéo se termine, le fond d'écran ne se remet plus !  
Comment regarder la vidéo sans quitter le plein écran svp ???  


J'ai une astuce pour toi: tu sacrifies ton script Plein Ecran... Ou bien tu renonces au script Movie. Imbécile heureux

Posté par tithib le 6 Aoû - 17:19 (2010)
Alors t'es sûr que je peux pas garder les deux ? :(

Posté par og_loc-TATOO le 6 Aoû - 19:39 (2010)
Essaye une dernière fois on le faisant correctement =)

Posté par ThunderZ le 10 Juil - 18:00 (2012)
Désoler du Necropost mais j'ai une question , pour mettre la vidéo dans la scene_title je dois faire ceci ?

Code:
 # -----------------------------------------------------------------
      #     La scène d'intro commence ici (non MAPINTRO)
      # -----------------------------------------------------------------
      # Elle est bien sûr modifiable à votre goût.
      # -----------------------------------------------------------------
      Scene_Movie.new("Intro")
      view = Viewport.new(0,0,640,480)
      view.z = -5
      #view = Viewport.new(0,25,640,430)
      #view.z = 0
      background = Plane.new(view)
      background.bitmap = RPG::Cache.title("Opening2.jpg")
      #background.oy += 25
      background.z = 0
      background.tone = Tone.new(0,0,0,255)
     
      #view = Viewport.new(0,0,640,480)
      #view.z = -5
      #background_bis = Plane.new(view)
      #background_bis.bitmap = RPG::Cache.title("Opening2.jpg")
      #background_bis.z = -5
     
?

Posté par Darkking le 25 Déc - 21:25 (2013)
Tu pourras rajoutée le format .flv car si on fait du montage c'est plus pratique (camtasia,Sony Vegas).