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
|
program Video;
uses
Flash8;
{$FRAME_WIDTH 640}
{$FRAME_HEIGHT 400}
// Flash 8 ne permet pas d'instancier l'objet Video par programme
// la directive de compilation $VIDEO permet de 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="2" left="0" top="40" width="320" height="180"}
(* syntaxe plus compacte équivalente
{$VIDEO my_video 2 0 20 320 180}
*)
type
MyNetStream = class(NetStream)
procedure onStatus(infoObject: TInfoObject); override;
procedure onMetaData(infoObject: TMetaData); override;
end;
var
tf: TextField;
md: TextField;
nc: NetConnection;
ns: MyNetStream;
vo: Video external 'my_video';
procedure MyNetStream.onStatus(infoObject: TInfoObject);
begin
tf.Text := infoObject.level + ' : ' + infoObject.code;
if infoObject.code = 'NetStream.Buffer.Empty' then
ns.play('Execute.re.flv');
end;
procedure MyNetStream.onMetaData(infoObject: TMetaData);
begin
md.Text := ' codec=' + FloatToStr(infoObject.videocodecid)
+ ',framerate=' + FloatToStr(infoObject.framerate)
+ ',videodatarate=' + FloatToStr(infoObject.videodatarate)
+ ',height=' + FloatToStr(infoObject.height)
+ ',width=' + FloatToStr(infoObject.width)
+ ',duration=' + FloatToStr(infoObject.duration);
end;
begin
tf := TextField.Create(_root, 'tf', 0, 0, 0, Stage.Width, 20);
md := TextField.Create(_root, 'md', 1, 0,20, Stage.Width, 20);
nc := NetConnection.Create;
nc.connect(nil);
ns := MyNetStream.Create(nc);
vo.attachVideo(ns);
vo._xscale := 200;
vo._yscale := 200;
// accès http
//ns.play('http://flashpascal.execute.re/Execute.re.flv');
// accès local
ns.play('Execute.re.flv');
end. |
Partager