flv.int
上传用户:raido2005
上传日期:2022-06-22
资源大小:5044k
文件大小:5k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. //*******************************************************//
  2. //                                                       //
  3. //                      DelphiFlash.com                  //
  4. //         Copyright (c) 2004-2008 FeatherySoft, Inc.    //
  5. //                    info@delphiflash.com               //
  6. //                                                       //
  7. //*******************************************************//
  8. //  Description: tool functions for reading FLV files
  9. //  Last update:  14 feb 2008
  10. unit FLV;
  11. interface
  12.  Uses Windows, Classes, Contnrs,
  13. {$IFNDEF VER130}
  14.   Types,
  15. {$ENDIF}
  16.  SWFTools;
  17.  type
  18.   TVHeader = record
  19.     CodecInfo: Byte;
  20.     FrameCount: Word;
  21.     KeyFrame: boolean;
  22.     XDim: Word;
  23.     YDim: Word;
  24.   end;
  25.   TSHeader = class(TObject)
  26.   public
  27.     MP3Frame: Cardinal;
  28.     property Is16Bit: boolean read  GetIs16bit;
  29.     property IsStereo: boolean read GetIsStereo;
  30.     property SoundFormat: byte read GetSoundFormat write SetSoundFormat;
  31.     property SoundRate: byte read GetSoundRate;
  32.   end;
  33.   TVFrame = class (TObject)
  34.   public
  35.     property Len: LongInt read FLen write SetLen;
  36.     property Start: LongInt read FStart write FStart;
  37.     property InVideoPos: longint read FInVideoPos;
  38.   end;
  39.   TFLVDataType =
  40.       (dtNumber, dtBoolean, dtString, dtObject, dtMovieClip, dtNull, dtUndefined,
  41.        dtReference, dtECMAArray, dtStrictArray, dtDate, dtLongString);
  42.   TFLVDataInfoType =
  43.       (fdiDuration, fdiLastTimeStamp, fdiLastKeyFrameTimeStamp, fdiWidth, fdiHeight,
  44.        fdiVideoDataRate, fdiAudioDataRate, fdiFrameRate, fdiCreationDate,
  45.        fdiFileSize, fdiVideoSize, fdiAudioSize, fdiDatasize, fdiMetaDataCreator,
  46.        fdiMetaDataDate, fdiVideoCodecID, fdiAudioCodecID, fdiAudioDelay,
  47.        fdiCanSeekToEnd, fdiKeyFrames);
  48.   TFLVCustomData = class (TObject)
  49.   public
  50.     function AsInteger: integer; virtual; abstract;
  51.     procedure ReadFromStream(be: TBitsEngine); virtual;
  52.     property VariableName: ansistring read FName write FName;
  53.     property DataType: TFLVDataType read FDataType write FDataType;
  54.   end;
  55.   TFLVDataNumber = class (TFLVCustomData)
  56.   public
  57.     constructor Create;
  58.     function AsInteger: integer; override;
  59.     procedure ReadFromStream(be: TBitsEngine); override;
  60.     property Value: double read FValue write SetValue;
  61.   end;
  62.   TFLVDataBoolean = class (TFLVCustomData)
  63.   public
  64.     constructor Create;
  65.     function AsInteger: integer; override;
  66.     procedure ReadFromStream(be: TBitsEngine); override;
  67.     property Value: boolean read FValue write SetValue;
  68.   end;
  69.   TFLVDataWord = class (TFLVCustomData)
  70.   public
  71.     constructor Create;
  72.     function AsInteger: integer; override;
  73.     procedure ReadFromStream(be: TBitsEngine); override;
  74.     property Value: Word read FValue write SetValue;
  75.   end;
  76.   TFLVDataDate = class (TFLVCustomData)
  77.   public
  78.     constructor Create;
  79.     procedure ReadFromStream(be: TBitsEngine); override;
  80.     property Value: TDateTime read FValue write SetValue;
  81.     property LocalDateTimeOffset: single read FLocalDateTimeOffset write FLocalDateTimeOffset;
  82.   end;
  83.   TFLVDataString = class (TFLVCustomData)
  84.   public
  85.     constructor Create;
  86.     function AsInteger: integer; override;
  87.     procedure ReadFromStream(be: TBitsEngine); override;
  88.     property Value: ansistring read FValue write SetString;
  89.   end;
  90.   TFLVDataECMAArray = class (TFLVCustomData)
  91.   public
  92.     constructor Create; virtual;
  93.     destructor Destroy; override;
  94.     procedure ReadFromStream(be: TBitsEngine); override;
  95.     property Variable[index: integer]: TFLVCustomData read GetFLVCustomData;
  96.   end;
  97.   TFLVKeyFramesObjectData = class (TFLVCustomData)
  98.   public
  99.     constructor Create; virtual;
  100.     destructor Destroy; override;
  101.     procedure ReadFromStream(be: TBitsEngine); override;
  102.     property KeyFrameCount: integer read FKeyFrameCount write SetKeyFrameCount;
  103.     property Times[index: integer]: double read GetTimes write SetTimes;
  104.     property Positions[index: integer]: longint read GetPosition write SetPosition;
  105.   end;
  106.   TFLVonMetaData = class (TFLVDataECMAArray)
  107.   public
  108.     function GetInfo(fdi: TFLVDataInfoType): TFLVCustomData;
  109.     procedure ReadFromStream(be: TBitsEngine); override;
  110.     property ObjectName: ansistring read FName write FName;
  111.   end;
  112.   TFLVData = class (TObject)
  113.   public
  114.     constructor Create(Fn: String);
  115.     destructor Destroy; override;
  116.     procedure Parse;
  117.     function GetSoundFromList(index: Cardinal): TVFrame;
  118.     property Data: TStream read FData write FData;
  119.     property FileName: string read FFileName write FFileName;
  120.     property Frame[index: LongInt]: TVFrame read GetFrameFromList;
  121.     property FrameCount: Word read GetFrameCount;
  122.     property Header: TVHeader read FHeader;
  123.     property SoundExist: boolean read GetSoundExist;
  124.     property KeyFrameCount: longint read FKeyFrameCount;
  125.     property SoundPresent: boolean read FSoundPresent;
  126.     property VideoPresent: boolean read FVideoPresent;
  127.     property SoundCount: Cardinal read GetSoundCount;
  128.     property SoundHeader: TSHeader read GetSoundHeader;
  129.     property FPS:Word read FFPS;
  130.   end;
  131. implementation