Ich möchte gerne eine DVD mit Hilfe des DSPack abspielen.
In meinem Project verwende ich zum Testen den PlayCode des DSPack und bekomme folgende Fehlermeldung:
'Some basic error occurred in building the graph.'#13'Possibilities include the DVD Navigator filter or the video or audio renderer not instantiating,'#13'a trivial connection or pin enumeration failing, or none of the streams rendering.'
Die Übergabe von Filename funktioniert: Z:\VIDEO_TS\VIDEO_TS.IFO
Mit dem compilierten Demo DVDPlay in DSPack bekomme ich folgende Fehlermeldung:
'The video decoder doesn''t produce line 21 (closed captioning) data.'
Im Windows Media Player 10 klappt das Abspielen, habe den Intervideo XPack DVD Codec installiert.
der PlayCode aus dem DSPack:
Delphi-Quellcode:
procedure PlayDVD(FileName: WideString);
var
Status : TAMDVDRenderStatus;
DvdCmd: IDvdCmd;
HR: HRESULT;
begin
showmessage(FileName); //<-------------Filename zeigt sich korrekt !
// Activate the filter Graph
if not FilterGraph1.Active then
begin
FilterGraph1.Active := true;
// Render DVD
HR := FilterGraph1.RenderDvd(Status, FileName);
if HR <> S_OK then
begin
case HR of
HRESULT(E_INVALIDARG): Application.MessageBox('Invalid Argument.','Error', mb_ok);
HRESULT(S_FALSE) : begin
if Status.hrVPEStatus <> 0 then Application.MessageBox(PChar(GetErrorString(Status.hrVPEStatus)), 'Error', mb_OK);
if Status.bDvdVolInvalid then Application.MessageBox('The specified DVD volume to be played does not exist.', 'Error', mb_OK);
if Status.bDvdVolUnknown then Application.MessageBox('No DVD volume is specified or isn''t found.', 'Error', mb_OK);
if Status.bNoLine21In then Application.MessageBox('The video decoder doesn''t produce line 21 (closed captioning) data.', 'Error', mb_OK);
if Status.bNoLine21Out then Application.MessageBox('The video decoder can''t be shown as closed captioning on video due to a problem with graph building.', 'Error', mb_OK);
if status.iNumStreamsFailed > 0 then Application.MessageBox('Can''t render one or more stream.', 'Error', mb_OK);
end;
HRESULT(VFW_E_DVD_DECNOTENOUGH) : Application.MessageBox('There isn''t enough hardware or software decoders to decode all streams.','Error', mb_OK);
HRESULT(VFW_E_DVD_RENDERFAIL) : Application.MessageBox('Some basic error occurred in building the graph.'#13'Possibilities include the DVD Navigator filter or the video or audio renderer not instantiating,'#13'a trivial connection or pin enumeration failing, or none of the streams rendering.','Error', mb_OK);
end;
FilterGraph1.ClearGraph;
exit;
end;
FilterGraph1.Play;
with FilterGraph1 as IDVDControl2 do
begin
SetOption(DVD_NotifyParentalLevelChange,false); //not notify us when parental level changes
SetOption(DVD_HMSF_TimeCodeEvents, true); // use new HMSF timecode format
end;
end
else
begin
FilterGraph1.Play;
with FilterGraph1 as IDvdControl2 do PlayForwards(1.0,DVD_CMD_FLAG_None, DvdCmd);
end;
end;
Jetzt habe ich gelesen, das wenn DSPack die Filter nicht automatisch verbinden kann, auf Grund von mehreren Filtern im Windows, das man ggf diese manuell verbinden soll, das ich aber als democode zum testen nicht finden konnte.
Kennt sich da jemand aus ?
Gruß,bluescreen25
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz