我知道有个AVIWriter控件可以做到,但是这个控件生成的AVI文件的视频是256色的,请问大家还有什么办法解决吗?我看到AVIWriter的原码里有PixelFormat的定义(pf8bit,pf16bit,pf24bit....),但是不知有何作用

解决方案 »

  1.   

    pf8bit 就是256色
    pf16bit就是16位色
    pf24bit就是24位色,差不多是真彩色了
      

  2.   

    可是AVIWriter生成的AVI文件如何设置视频的颜色数?我找不到设置AVIWriter对象颜色数的途径。好像AVIWriter似乎只能生成256色的AVI一样的???有谁用过AVIWriter吗?可否指点一下??
      

  3.   

    呵呵,刚看了一下控件,发现了点问题
    AVIWriter控件对颜色的选择没有控件属性(图片大小也是一样), TPixelFormat(而是默认为256色),所以要改成真彩16色,只要把控件方法中用到的"pf8bit",替换成“pf16bit",另外注意:
     case PixelFormat of
        pf1bit: Info.biBitCount := 1;
        pf4bit: Info.biBitCount := 4;
        pf8bit: Info.biBitCount := 8;
        pf16bit: Info.biBitCount := 16;  //这一行为加的。
        pf24bit: Info.biBitCount := 24;
    控件使用::
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Slist : TStringList;
      Bmp : TBitmap;
      I : Char ;
    begin
      Slist :=TStringList.Create;  for I:='1' to '3' do
      begin
        Bmp :=TBitmap.Create;
        Bmp.LoadFromFile('e:\mydata\' + i + '.bmp');
        Slist.AddObject('bimap',TObject(Bmp));
      end;
      //Image1.Picture.Bitmap :=TBitmap(slist.Objects[0]);
      //Image2.Picture.Bitmap :=  TBitmap(Slist.Objects[4]);
      AviWriter1.Bitmaps.Add(slist.Objects[0]);
      AviWriter1.Bitmaps.Add(slist.Objects[1]);
      AviWriter1.Bitmaps.Add(slist.Objects[2]);
     // aviwriter1.Bitmaps.
      AviWriter1.FileName :='d:\dfdf213.avi';
      AviWriter1.Write;
      Med.FileName :=aviwriter1.FileName;
      med.Open ;
      med.Play;
      Slist.Free;
      Bmp.Free;
    end;