Bonjour,
j'ai un fichier flv ; j'ai crû comprendre qu'en flashpascal, il est possible de le convertir en swf et d'ajouter des boutons marche, arrêt, retour, pause(?)...Peut-on me donner le code ?
Version imprimable
Bonjour,
j'ai un fichier flv ; j'ai crû comprendre qu'en flashpascal, il est possible de le convertir en swf et d'ajouter des boutons marche, arrêt, retour, pause(?)...Peut-on me donner le code ?
En fait, le convertir en swf non... Seulement tu vas fabriquer à un .swf qui va faire appel à ton .flv. On ne peut pas encore l'intégrer...à moins que le grand chef (Paul Toth) puisse avoir ça en rayon.
Toi tu veux le mettre en ligne... donc tu mets tes deux fichiers .flv et .swf sur ton site au même niveau et tu appelles le swf a partir d'un lien sur ta page.
Alors, d'abord il te faut flashPascal. (regarde pour le téléchargement).
Fichier nouveau unité flaspascal, tu copies le code de l'unité ci-joint en dessous.
Tu l'enregistres dans units en type unité Flashpascal(.pas). Tu la nommes UVideoButton.
Après, Fichier nouveau projet Flashpascal
Tu copies le programme Pvideo et tu l'enregistres dans le même dossier.
en projet FlashPascal(.fpr)
Tu compiles le projet après avoir mis le nom de ton .flv aux bons endroits dans le code. Place évidemment dans le dossier units ton fichier Flv...
Et voilà. Regarde dans le dossier Units, tu auras un fichier Pvideo.swf.
Ouvre le et c'est fini.
L'unité :
le projet :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115 Unit UVideoButton; interface uses Flash8; type TButton=class(movieClip) Private w,h,fonction:number; procedure skin; procedure skin1playpause; procedure skin2stop; procedure skin3back; procedure skin4up; Public skin1,Skin2:movieclip; procedure onPress;override; procedure onClick;virtual; Constructor Create(parent:movieclip;nbskin,left,top,width,height:number); end; implementation Constructor TButton.Create(parent:movieclip;nbskin,left,top,width,height:number); begin inherited Create(parent,'button', movieclip(parent).getNextHighestDepth()); w:=width; h:=height; fonction:=nbskin; linestyle(3,$e0e0e0); BeginFill($c0c0c0); moveto(0,h); lineto(0,0); lineto(w,0); linestyle(3,$808080); lineto(w,h); lineto(0,h); skin; _x:=left; _y:=top; end; Procedure TButton. skin1playpause; begin skin1:=movieclip.Create(self,'skin1',1); skin2:=movieclip.Create(self,'skin2',2); With skin1 do begin BeginFill(clBlack); linestyle(2,clBlack); moveto(w/4,h/4); lineto(3*w/4,h/2); lineto(w/4,3*h/4); end; With skin2 do begin linestyle(6,clBlack); moveto(7*w/20,h/4); lineto(7*w/20,3*h/4); moveto(13*w/20,h/4); lineto(13*w/20,3*h/4); _visible:=false; end; end; Procedure TButton. skin2stop; begin BeginFill(clBlack); linestyle(2,clBlack); moveto(w/4,h/4); lineto(3*w/4,h/4); lineto(3*w/4,3*h/4); lineto(w/4,3*h/4); lineto(w/4,h/4); end; procedure TButton.skin3back; begin linestyle(4,clBlack); moveto(3*w/4,h/4); Lineto(w/4,h/2); moveto(w/4,h/2); Lineto(3*w/4,3*h/4); end; procedure TButton.skin4up; begin linestyle(4,clBlack); moveto(w/4,h/4); Lineto(3*w/4,h/2); moveto(3*w/4,h/2); Lineto(w/4,3*h/4); end; procedure TButton.skin; begin case fonction of 1:skin1playpause; 2:skin2stop; 3:skin3back; 4:skin4up; end; end; procedure TButton.onClick; begin end; procedure TButton.onPress; begin onClick; end; end.
Tu peux venir te joindre au forum, il s'y fait plein de choses intéressantes :DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 program PVideo; uses Flash8,UVideoButton; {$FRAME_WIDTH 640} {$FRAME_HEIGHT 380} {$BACKGROUND $9999ff} {$FRAME_RATE 32} // Flash 8 ne permet pas d'instancier l'objet Video par programme // la directive de compilation $VIDEO permet contourner ce problème // l'objet est créé statiquement avant le lancement du programme // il ne reste plus qu'à déclarer une variable "external" pour l'utiliser. {$VIDEO name="my_video" depth="1" left="0" top="0" width="320" height="240"} //modifie la largeur et la hauteur pour ta video (* syntaxe plus compacte équivalement {$VIDEO my_video 1 0 20 180 180} *) type MyNetStream = class(NetStream) procedure onStatus(infoObject: TInfoObject); override; end; MyScreen=class btplay,btstop:TButton; constructor Create; procedure onPlay(sender:TObject); procedure onStop(sender:TObject); end; var nc: NetConnection; ns: MyNetStream; vo: Video external 'my_video'; Constructor MyScreen.Create; begin btplay:=TButton.Create(_Root,1,10,10,50,50); btstop:=TButton.Create(_Root,2,10,70,50,50); nc := NetConnection.Create; nc.connect(nil); ns := MyNetStream.Create(nc); vo.attachVideo(ns); vo._height:=stage.height; with vo do begin _width:=320*_height/240; //idem pour 320 tu mets la largeur de ta propre video et 240 la hauteur de ta video _x:=(stage.width-_width)/2; smoothing:=true; end; ns.play('tonfichier.flv'); //chemin de ton flv ns.pause; btplay.onClick:=onPlay; btStop.onClick:=onStop; end; procedure MyScreen.onPlay(sender:TObject); begin with btplay.skin1 do _visible:=not _visible; with btplay.skin2 do _visible:=not _visible; ns.pause; end; procedure MyScreen.onStop(sender:TObject); begin btplay.skin1._visible:=true; btplay.skin2._visible:=false; ns.play('tonfichier.flv');//ici le chemin de ton fichier ns.pause; end; procedure MyNetStream.onStatus(infoObject: TInfoObject); begin if infoObject.code = 'NetStream.Buffer.Empty' then ns.play('tonfichier.flv') ; //idem chemin de ton flv end; begin MyScreen.Create; end.
il est possible d'intégrer une video dans un swf, mais ce n'est pas recommandé par Adobe...et ça n'est pas supporté par FlashPascal de toute façon ^^
il est préférable de garder le flv en dehors du SWF
Merci pour le code ; juste une question : compiler, je le fais avec quoi ?
avec FlashPascal évidemment :)
une fois installé, tu peux même prendre l'exemple "Video.fpr" dans le menu exemple.
OK, mais suffit-il de copier les fichiers de FlashPascal sur le FTP, ou faut-il lancer une commande (ligne de commande) et lui passer le fichier fpr pour le convertir ? (4/5 heures que c'est écrit, mais oublié d'envoyer :?)
Bon, si tu as Flashpascal et que tu as suivi la démarche que je t'ai donnée, tu as compilé le projet (le .fpr) à l'aide du bouton vert (executer)
Là, tu verras déjà un aperçu du résultat dans la preview et tu pourras maintenant regarder dans le dossier units...tu as ton fichier de type swf qui a été généré.
Sur ton ftp, tu places le fichier swf obtenu + le fichier flv et ensuite sur ton site, tu fais un lien sur le swf. Et normalement, c'est bon...;)
Je pense ne pas avoir installé ce qu'il fallait (pourtant, je me suis servi ici) car je n'ai pas du tout l'arborescence présentée ici. Par exemple, pas de répertoire "Exemples" mais juste "samples" et quand je lance FlashPascal units/pvideo.fpr,alors que ce fichier existe. Où est l'erreur ? (et bien sûr, pas de bouton vert ; où pourrait-il y avoir un tel bouton ?)Citation:
fatal error : Cannot open file units/Flash8.pas
Effectivement. :)
Le nouveau FlashPascal se trouve à la deuxième adresse que tu as donnée.
en fait, il y a deux versions de FlashPascal, ici on parle de FlashPascal 2 :)
Effectivement, je m'en suis douté en me couchant pour l'ancienne version...
une image complémentaire avant la compilation :
Effectivement, avec Flashpascal 2, je peux compiler (ou du moins essayer), car message d'erreur :pour la ligne :Citation:
unknown Ident Number
(La 10e ligne de UVideoButton.pas)Code:w,h,fonction:number;
l'unit Flash8 doit être située dans le même dossier (units). Par défaut, je ne me souviens plus où elle est située...
Je ne pense pas que ça provienne de cela...le bug aurait été à partir de uses Flash8;...
Tu n'aurais pas oublié des points virgules par rapport à l'originale ?
Compile uniquement l'unité, ça doit te donner unit is Ok en bas.
Avec un simple copier coller du code que je t'ai fourni, c'est le cas !
Elle y est déjà...(C'est par défaut, vu que je n'ai rien changé)
Ok, regarde le complément de ma réponse précédente...
Le complément dont tu parles (l'image de FlashPascal 2) indiques d'utiliser la petite flèche verte ; j'ai fait l'équivalent "Flash/compiler" et ça donne le même résultat...:(
le complément, c'est ça :)Citation:
Tu n'aurais pas oublié des points virgules par rapport à l'originale ?
Compile uniquement l'unité, ça doit te donner unit is Ok en bas.
Avec un simple copier coller du code que je t'ai fourni, c'est le cas !
Si je fais un copier-coller du code de l'unité (je l'ai refais par acquis de conscience), pareil ; ce qui me paraît bizarre (même si ça fait environ 26 ans que je n'ai pas fait de Pascal), c'est la dernière ligne :Le point ???Code:end.
Ecoute, le code est valide et je viens de le reprendre complétement pour faire un essai à partir du forum pour voir si j'avais fait une erreur en le mettant en ligne. Je n'ai aucun soucis...je compile avec bien entendu le nom de mon fichier rectifié et son extension (comme indiqué...)