si voglio utilizzare la libreria vlc ma il codice che dovrebbe funzionare in realta' mi da un errore
procedure TForm8MIOpenClick(Sender: TObject);
begin
With ODVideo do
begin
FileName:=FFileName;
if Execute then
begin
FFileName:=FileName;
FPlayer.PlayFile(FFileName);
Caption:=’Lazarus video demo: ’ + filename;
end;
end;
end;
errore;
unit8.pas(55,6) Error: Identifier not found "ODVideo"
forse deve essere solo dichiarata la variabile, ma non so' di quale tipo....
grazie
si e' nel progetto che uso la libreria ( in realta' files .pas )
ecco il codice:
procedure TForm8MIOpenClick(Sender: TObject);
begin
With ODVideo do
begin
FileName:=FFileName;
if Execute then
begin
FFileName:=FileName;
FPlayer.PlayFile(FFileName);
Caption:=’Lazarus video demo: ’ + filename;
end;
end;
end;
procedure TForm8.FormCreate(Sender: TObject);
begin
FPlayer:=TLCLVLCPlayer.Create(Self);
FPlayer.ParentWindow:=PVideo;
FPlayer.OnTimeChanged:=@DoTimeChanged;
FPlayer.OnPositionChanged:=@DoPositionChanged;
FPlayer.OnLengthChanged:=@DoLengthChanged;
FPlayer.UseEvents:=True;
end;
procedure TForm8.DoPositionChanged(Sender: TObject; const APos: Double);
begin
FNewPosition:=Round(APos*100);
TThread.Synchronize(Nil,@SetNewPosition);
end;
procedure TForm8.creavideo();
begin
SetExceptionMask(AllExceptions);
with TVLCMediaListPlayer.Create(Nil) do
try
Player:=TVLCMediaPlayer.Create(Nil);
For I:=1 to ParamCount do
TVLCMediaItem(MediaItems.Add).Path:=ParamStr(i);
Play;
Repeat
Sleep(100);
until State in [libvlc_Ended,libvlc_Error];
finally
Player.Free;
Free;
end;
Setting the Path property of a TVLCMediaItem collection item is all that is needed to
play a file.
procedure TForm8.SetNewPosition;
begin
FShowing:=True;
try
TBVideo.Position:=FNewPosition;
finally
FShowing:=False;
end;
end;
procedure TForm8.TBVideoChange(Sender: TObject);
begin
if not FShowing then
FPlayer.VideoFractionalPosition:=TBVideo.Position/100;
end;
procedure TForm8.DoTimeChanged(Sender: TObject;
const time: TDateTime);
begin
FCurrentTime:=Time;
TThread.Synchronize(Nil,@DisplayTime);
end;
procedure TForm8.DoLengthChanged(Sender: TObject;
const time: TDateTime);
begin
FNewLength:=Time;
TThread.Synchronize(Nil,@DisplayTime);
end;
procedure TForm8.DisplayTime;
Function TtoS (T : TDateTime) : string;
Var
h,m,s,ms : Word;
begin
DecodeTime(T,h,m,s,ms);
if h>0 then
Result:=FormatDateTime(’hh:nn:ss’,T)
else
Result:=FormatDateTime(’nn:ss’,T);
end;
Var
s : string;
begin
S:=’/’;
if FNewLength>0 then
S:=S+TToS(FNewLength)
else
S:=S+’?’;
if (FCurrentTime>0) then
S:=TToS(FCurrentTime)+S
else
S:=’0:0’+S;
LTime.Caption:=S;
end;
procedure TForm8.BStopClick(Sender: TObject);
begin
10
FPlayer.Stop;
end;
procedure TForm8.BPauseClick(Sender: TObject);
begin
FPLayer.Pause;
end;
procedure TForm8.BResumeClick(Sender: TObject);
begin
FPlayer.Resume;
end;
procedure TForm8.AStopUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled:=FPlayer.Playing;
end;
procedure TForm8.APauseUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled:=FPlayer.Playing;
end;
procedure TForm8.AResumeUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled:=FPlayer.State=libvlc_Paused;
end;
procedure TForm8.TBVolumeChange(Sender: TObject);
begin
FPlayer.AudioVolume:=TBVolume.Position;
end;
end.
non so dove e' definito ODVIdeO
in base al codice che vedi sotto (estratto dal PDF che hai segnalato)
ODVideo ha il metodo Execute e la proprietà FileName
Se infatti dovesse essere un record sarebbe un Advanced Record, ma questo mi lascia qualche dubbio.
procedure TMainForm.MIOpenClick(Sender: TObject);
begin
With ODVideo do
begin
FileName:=FFileName;
if Execute then
begin
FFileName:=FileName;
FPlayer.PlayFile(FFileName);
Caption:=’Lazarus video demo: ’+FFIleName;
end;
end;
end;
Come mai sei convinto che sia un record, hai qualche riscontro nel codice?