Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   upnp Fehler 80040365 bei SEEK auf Marantz NA6005 (https://www.delphipraxis.net/212973-upnp-fehler-80040365-bei-seek-auf-marantz-na6005.html)

ratmalwer 2. Mai 2023 00:37

upnp Fehler 80040365 bei SEEK auf Marantz NA6005
 
Ich schreibe einen Mediaplayer in Delphi, der meine MP3s von einem NAS-Server auf meinen Mediarendererer spielt.
Das funktioniert ziemlich gut, aber ich habe ein Problem, dass der Seek-Befehl auf jedem System funktioniert, aber nicht auf meinem Marantz NA6005!

Ich habe getestet:

Medion-NAS via MyApplication auf verschiedene Renderer (Mobile:bubbleupnpPlayer, PC:mediamonkeyPlayer, Sony Bravia TV und Marantz NA6005)
da kann ich:
-Spielen
-Stoppen
-Pause
-Unpause
-Suchen (außer auf Marantz dort bekomme ich den Fehler: OLE-Fehler 80040365)

Dasselbe auf QNAP mit Twonky über MyApplication zu verschiedenen Renderern (Mobile:bubbleupnpPlayer, PC:mediamonkeyPlayer, Sony Bravia TV und Marantz NA6005)
da kann ich:
-Spielen
-Stoppen
-Pause
-Unpause
-Suchen (außer auf Marantz da bekomme ich den Fehler OLE-Fehler: 80040365)

Hier einige Codeschnipsel (der erste funktioniert auf allen Geräten, der zweite erzeugt den Fehler auf Marantz):

Code:
procedure TAVTransportService.Play;
VAR ovIn,ovOut : OleVariant;
begin
   ovIn := VarArrayCreate([0, 1], varVariant);
   ovIn[0]:= 0;
   ovIn[1]:= '1';
   ovOut := null ;
   try
     AVTransportService.InvokeAction('Play',ovIn,ovOut);
     Log.Add('Play: OK');
     FStateOK:=true;
   except
     Log.Add('Error in Play');
     FStateOK:=false;
   end;
end;
Code:
function TAVTransportService.SetPosition(position:string):boolean;
VAR ovIn,ovOut : OleVariant;
begin
  result:=false;
  if isPaused then Play;
  if not IsPlaying then exit;
  ovIn:=VarArrayCreate([0, 2], varVariant);
  ovin[0]:=0;
  ovin[1]:='REL_TIME';
  ovin[2]:=position; //eg: '00:01:30'
  ovOut:=null;
  try
    AVTransportService.InvokeAction('Seek',ovIn,ovOut);   //here the error occurs
    result:=true;
    TUpnpDMC.Log.Add('Seek ok');
  except
    on e: Exception do TUpnpDMC.Log.Add('Seek failed:' + E.message);
  end;
end;
Inzwischen habe ich alle möglichen und unmöglichen Kombinationen ausprobiert, um diesen Fehler zu umgehen. Ich habe den Playstate mit is ok (Playing) und so weiter überwacht.

Nach einer Woche Lesen im Netz bin ich mit den Nerven am Ende.
Hatte jemand das gleiche Problem und eine mögliche Lösung oder einen Workaround zB. ein alternativer Befehl?
Hilfe dringend gesucht.

himitsu 2. Mai 2023 01:17

AW: upnp Fehler 80040365 bei SEEK auf Marantz NA6005
 
Moin,

erstmal könnte jemand vielleicht verraten, was ein AVTransportService sein soll?
https://www.google.com/search?q=%22T...portService%22

Gut, direkt eine Antwort sagt es mir noch nicht, aber liegt vielleicht auch daran, dass wir gar nichts über das wissen, was den Fehler meldet.
Dennoch ist es natürlich oft schon irgendwie sinnvoll den Fehler zu übersetzen,
denn wenn man weiß was es uns sagen will, dann ergibt sich vielleicht von selbst die Lösung.
https://blog.csdn.net/jiushidt/article/details/51909401

0x80040365
Table is not empty.
TABLE_NOT_EMPTY

https://www.google.com/search?q=%22TABLE_NOT_EMPTY%22



PS: Auch wenn es nichts zur Lösung beitragen wird, dennoch ein kleiner Tipp:
Zitat:

Delphi-Quellcode:
ovIn:=VarArrayCreate([0, 2], varVariant);
ovin[0]:=0;
ovin[1]:='REL_TIME';
ovin[2]:=position; //eg: '00:01:30'

Delphi-Quellcode:
ovIn := VarArrayOf([0, 'REL_TIME', position]);

ratmalwer 2. Mai 2023 03:57

AW: upnp Fehler 80040365 bei SEEK auf Marantz NA6005
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin Himitsu, :-)

was ein AVTransportService sein soll? - hmm habe den Code von https://github.com/RuudErmers/DelphiDLNADMC
welchen ich jetzt testweise etwas umgebaut habe. - > auf Wunsch gebe ich gerne den etwas abgeänderten (teilweise
fehlerereinigten Code) weiter. -->ich leg ihn mal bei in der Anlage...

-- leider das einzige Beispiel wie upnp implementert weden kann, das ich gefunden habe und sogar einigermassen läüft.
Ich bin natürlich offen für andere Lösungen sofern ich sie verstehe. Bin nur ein oldfashioned Programmierer der sich schwer tut mit ojektorientierter Programmierung.

Den Fehler habe ich anders interpretiert, nähmlich dass ein Wert Empty ist. trotzdem sehe ich keine Chance irgendwas zu
leeren???! mittels des mir bekannten Codes.

Was mich am meissten irritiert ist, dass auf 3 vom 4 Systemen das Ganze funktionert.

Guten Start in den neuen Tag...
Lieber Gruss Markus


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz