Thema: Delphi DSPack DVD abspielen

Einzelnen Beitrag anzeigen

bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#1

DSPack DVD abspielen

  Alt 13. Mai 2007, 08:56
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
  Mit Zitat antworten Zitat