SetGlobalOnLoadExternalResourceHandler

Syntax

Delphi

TFlashPlayerControlOnGlobalLoadExternalResource = procedure(
  const URL: WideString;
  Stream: TStream) of object;
 
procedure SetGlobalOnLoadExternalResourceHandler(Handler: TFlashPlayerControlOnGlobalLoadExternalResource);

C++Builder

void __fastcall SetGlobalOnLoadExternalResourceHandler(TFlashPlayerControlOnGlobalLoadExternalResource Handler);

Description

The SetGlobalOnLoadExternalResourceHandler procedure registers a global handler that allows you to intercept and provide the content of external resources requested by Flash movies loaded from a stream.

For example, you can supply Flash Video (FLV) content directly from memory instead of loading it from disk:

var netConn:NetConnection = new NetConnection();
netConn.connect(null);
var netStream:NetStream = new NetStream(netConn);
my_video.attachVideo(netStream);
netStream.setBufferTime(0);
netStream.play("http://FLV/FlashVideo.flv");

When the Flash movie requests http://FLV/FlashVideo.flv, the registered handler is called, and you can provide the video stream manually:

Delphi Example

type
  TMainForm = class(TForm)
    procedure FormCreate(Sender: TObject);
// ...
 
  private
    procedure OnGlobalLoadExternalResource(const URL: WideString; Stream: TStream);
// ...
 
end;
// ...
 
procedure TMainForm.FormCreate(Sender: TObject);
begin
    SetGlobalOnLoadExternalResourceHandler(OnGlobalLoadExternalResource);
end;
...
 
procedure TMainForm.OnGlobalLoadExternalResource(const URL: WideString; Stream: TStream);
var
  ResourceStream: TResourceStream;
begin
    if URL = 'http://FLV/FlashVideo.flv' then
    begin
        ResourceStream := TResourceStream.Create(0, 'FlashVideo', 'FLV');
        ResourceStream.SaveToStream(Stream);
        ResourceStream.Free;
    end;
end;

C++Builder Example

class TMainForm : public TForm
{
__published:
        void __fastcall FormCreate(TObject *Sender);
// ...
 
private:
        void __fastcall OnGlobalLoadExternalResource(const WideString URL, Classes::TStream* Stream);
// ...
 
}
// ...
 
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
  SetGlobalOnLoadExternalResourceHandler(OnGlobalLoadExternalResource);
}
// ...
 
void __fastcall TMainForm::OnGlobalLoadExternalResource(const WideString URL, Classes::TStream* Stream)
{
  if (URL == WideString("http://FLV/FlashVideo.flv"))
  {
    TResourceStream* ResourceStream = new TResourceStream(0, "FlashVideo", "FLV");
    ResourceStream->SaveToStream(Stream);
    delete ResourceStream;
  }
}