Hier mal eine Frage speziell @Torben:
Folgendes kleines Skript:
procedure OnPlayerStateChange(PlaylistIndex: integer; PlayerIndex: integer;
OldState: TPlayerState; NewState: TPlayerState; Item: IPlaylistItem);
var
NextIndex, i: integer;
Duration: Array[0..1] of TTimeValue;
begin
if NewState = psPlaying then
begin
Duration[PlayerIndex] := Item.GetAudibleDuration;
for i := 0 to 1 do
SystemLog('Start ' + IntToStr(PlayerIndex) + ' Duration ' + IntToStr(i) + ': ' + FormatDateTime('hh:nn:ss', Duration[i]/86400));
end
else if NewState = psStopped then
begin
for i := 0 to 1 do
SystemLog('Stop ' + IntToStr(PlayerIndex) + ' Duration ' + IntToStr(i) + ': ' + FormatDateTime('hh:nn:ss', Duration[i]/86400));
end;
end;
begin
end.
Dieses sollte eigentlich die Länge des Titels in Player 0
in der Variablen Duration[0]
speichern und ebenso fĂĽr Player 1
. Tut es zunächst auch, jedoch beim nächsten PlayerStateChange wird die gespeicherte Länge wieder mit 00:00:00
ĂĽberschrieben:
07.02.21 07:57:32 Information Start 0 Duration 0: 00:00:29
07.02.21 07:57:32 Information Start 0 Duration 1: 00:00:00
07.02.21 07:57:40 Information Start 1 Duration 0: 00:00:00
07.02.21 07:57:40 Information Start 1 Duration 1: 00:03:45
07.02.21 07:57:46 Information Stop 0 Duration 0: 00:00:00
07.02.21 07:57:46 Information Stop 0 Duration 1: 00:00:00
07.02.21 07:57:49 Information Stop 1 Duration 0: 00:00:00
07.02.21 07:57:49 Information Stop 1 Duration 1: 00:00:00
Das dürfte nach meinem Verständnis doch gar nicht sein, denn Item
bezieht sich ja auf den jeweiligen Player (den mit der Nummer PlayerIndex
). Und wenn einmal was in Duration[0]
drinnen ist, mĂĽĂźte das doch bleiben bis zum jĂĽngsten Gericht (oder ich eben wieder Player 0
starte)?! Oder begehe ich hier einen Denkfehler?
Gelöschte Grüße
TSD