Solved

SAVING MEDIA CLIPS FILES.

Posted on 1998-03-05
3
192 Views
Last Modified: 2010-04-06
I HAVE MADE A DATABASE FOR THE CLIPS FILES(AVI), BUT I DON'T KNOW
HOW TO SAVE THEM IN MY TABLE THAT I HAVE CREATED.
E.G. I HAVE MADE A TABLE(*.DBF) FOR THE CLIPS(AVI), BUT I DON'T KNOW
HOW TO SAVE AVI FILE FROM THE APPLICATION INTO THE TABLE.
0
Comment
Question by:SAMEH_MAX
  • 3
3 Comments
 
LVL 8

Accepted Solution

by:
ZifNab earned 100 total points
ID: 1360111
Hi Sameh_Max,

    I found this one on the net, hope it sutes your needs :

    AVI files can be stored in BLOB (binary large object) fields. The easist way to play an AVI file stored in a BLOB is to write the BLOB data to a temporary file, then use the mulimedia player play the file. The following example demonstrates how to store an AVI file  to a BLOB field, and also play the AVI file from the blob field.

                                 Example:

                                 var
                                   FileName : string;

                                 {This function gets a temporary file name form the system}
                                 function GetTemporaryFileName : string;
                                 {$IFNDEF WIN32}
                                   const MAX_PATH = 144;
                                 {$ENDIF}
                                 var
                                  {$IFDEF WIN32}
                                   lpPathBuffer : PChar;
                                  {$ENDIF}
                                   lpbuffer : PChar;
                                 begin
                                  {Get the file name buffer}
                                   GetMem(lpBuffer, MAX_PATH);
                                  {$IFDEF WIN32}
                                  {Get the temp path buffer}
                                   GetMem(lpPathBuffer, MAX_PATH);
                                  {Get the temp path}
                                   GetTempPath(MAX_PATH, lpPathBuffer);
                                  {Get the temp file name}
                                   GetTempFileName(lpPathBuffer,
                                                   'tmp',
                                                   0,
                                                   lpBuffer);
                                  {Free the temp path buffer}
                                   FreeMem(lpPathBuffer, MAX_PATH);
                                  {$ELSE}
                                  {Get the temp file name}
                                   GetTempFileName(GetTempDrive('C'),
                                                   'tmp',
                                                   0,
                                                   lpBuffer);
                                  {$ENDIF}
                                  {Create a pascal string containg}
                                  {the temp file name and return it}
                                   result := StrPas(lpBuffer);
                                  {Free the file name buffer}
                                   FreeMem(lpBuffer, MAX_PATH);
                                 end;

                                 {Read a AVI file into a blob field}
                                 procedure TForm1.Button1Click(Sender: TObject);
                                 var
                                   FileStream: TFileStream; {to load the avi file}
                                   BlobStream: TBlobStream; {to save to the blob}
                                 begin
                                  {Allow the button to repaint}
                                   Application.ProcessMessages;
                                  {Turn off the buttons}
                                   Button1.Enabled := false;
                                   Button2.Enabled := false;
                                  {Assign the avi file name to read}
                                   FileStream := TFileStream.Create(
                                     'C:\PROGRA~1\BORLAND\DELPHI~1\DEMOS\COOLSTUF\COOL.AVI',
                                     fmOpenRead);
                                   Table1.Edit;
                                  {Create a BlobStream for the field Table1AVI}
                                   BlobStream := TBlobStream.Create(Table1AVI, bmReadWrite);
                                  {Seek to the Begginning of the stream}
                                   BlobStream.Seek(0, soFromBeginning);
                                  {Delete any data that may be there}
                                   BlobStream.Truncate;
                                  {Copy from the FileStream to the BlobStream}
                                   BlobStream.CopyFrom(FileStream, FileStream.Size);
                                  {Free the streams}
                                   FileStream.Free;
                                   BlobStream.Free;
                                  {Post the record}
                                   Table1.Post;
                                  {Enable the buttons}
                                   Button1.Enabled := true;
                                   Button2.Enabled := true;
                                 end;

                                 {Read a avi stored in a blob, and play it}
                                 procedure TForm1.Button2Click(Sender: TObject);
                                 var
                                   FileStream: TFileStream; {a temp file}
                                   BlobStream: TBlobStream; {the AVI Blob}
                                 begin
                                  {Create a blob stream for the AVI blob}
                                   BlobStream := TBlobStream.Create(Table1AVI, bmRead);
                                   if BlobStream.Size = 0 then begin
                                    BlobStream.Free;
                                    Exit;
                                   end;
                                  {Close the media player}
                                   MediaPlayer1.Close;
                                  {Reset the file name}
                                   MediaPlayer1.FileName := '';
                                  {Refresh the play window}
                                   MediaPlayer1.Display := Panel1;
                                   Panel1.Refresh;
                                  {if we have a temp file then erase it}
                                   if FileName <> '' then
                                     DeleteFile(FileName);
                                  {Get a temp file name}
                                   FileName := GetTemporaryFileName;
                                  {Create a temp file stream}
                                   FileStream := TFileStream.Create(FileName,
                                                                    fmCreate or fmOpenWrite);
                                  {Copy the blob to the temp file}
                                   FileStream.CopyFrom(BlobStream, BlobStream.Size);
                                  {Free the streams}
                                   FileStream.Free;
                                   BlobStream.Free;
                                  {Setup the Medai player to play the AVI file}
                                   MediaPlayer1.FileName := filename;
                                   MediaPlayer1.DeviceType := dtAviVideo;
                                   MediaPlayer1.Open;
                                   MediaPlayer1.Play;
                                 end;

                                 procedure TForm1.FormDestroy(Sender: TObject);
                                 begin
                                  {Unassign the temp file from the media player}
                                   MediaPlayer1.Close;
                                   MediaPlayer1.FileName := '';
                                  {Erase the temp file}
                                   if FileName <> '' then
                                     DeleteFile(FileName);
                                 end;

                                 Joe
                                 --
                                 Joe C. Hecht
                                 joehecht@gte.net

    Regards, Zif.





0
 
LVL 8

Expert Comment

by:ZifNab
ID: 1360112
0
 
LVL 8

Expert Comment

by:ZifNab
ID: 1360113
and SAMEH_MAX is it working?
0

Featured Post

Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question