![]() |
DivX Tonspur umstellen (Switch Audio)
Hallo zusammen,
habe ein kleines problem mit den 2 Tonspuren im DivX AVI. Wie kann ich die Audiospuren mit dem DSPack umstellen. Das mitgelieferte tool "divxsm.exe" kann ich nicht gebrauchen da ich meine videos auf dem TV sehe und ich das ganze mit einer IR-FB steuere und der Rechner auch keine maus hat. |
Re: DivX Tonspur umstellen (Switch Audio)
Hallo,
ich habe mir dazu den Morgan Stream Switcher installiert und steuere den fern. Über den Filtergraph kannst Du feststellen, welcher Filter mehrere Tonspuren zur Verfügung stellt und dann eine auswählen.
Delphi-Quellcode:
Gruß
function GetOutputPin(const BF: IBaseFilter): IPin;
var EP: IEnumPins; PD: PIN_DIRECTION; begin if BF.EnumPins(EP) = S_OK then begin while (EP.Next(1, Result, nil) = S_OK) do begin if (Result.QueryDirection(PD) = S_OK) and (PD = PINDIR_OUTPUT) then begin EP := nil; Exit; end; Result := nil; end; EP := nil; end; end; function FindAudioSwith(const FG: IFilterGraph): IBaseFilter; // Sucht einen Filter, der das Umschalten von Audiospuren erlaubt var EF: IEnumFilters; Pin: IPin; SS: IAMStreamSelect; SCount: Cardinal; MT: TAMMediaType; begin if FG.EnumFilters(EF) = S_OK then begin while (EF.Next(1, Result, nil) = S_OK) do begin if Result.QueryInterface(IID_IAMStreamSelect, SS) = S_OK then begin if (SS.Count(SCount) = S_OK) and (SCount > 1) then begin Pin := GetOutputPin(Result); if (Pin <> nil) and (Pin.ConnectionMediaType(MT) = S_OK) then begin if IsEqualGUID(MT.majortype, MEDIATYPE_AnalogAudio) or IsEqualGUID(MT.majortype, MEDIATYPE_Audio) then begin SS := nil; EF := nil; Pin := nil; Exit; end; end; Pin := nil; end; SS := nil; end; Result := nil; end; EF := nil; end else Result := nil; end; procedure SetAudioStream(AFilterGraph: TFilterGraph; const Index: Integer); // Schaltet auf den angegebenen Kanal um var FilterGraph: IFilterGraph; BF: IBaseFilter; SS: IAMStreamSelect; begin if AFilterGraph.QueryInterface(IID_IFilterGraph, FilterGraph) = S_OK then begin BF := FindAudioSwith(FilterGraph); if BF <> nil then begin if BF.QueryInterface(IID_IAMStreamSelect, SS) = S_OK then begin if SS.Enable(Index, AMSTREAMSELECTENABLE_ENABLE) <> S_OK then Beep; SS := nil; end; BF := nil; end; FilterGraph := nil; end; end; xaromz |
Re: DivX Tonspur umstellen (Switch Audio)
na das war aber eine schnelle hilfe doch bei mir passiert garnichts
die tonspur bleibt an und wechselt nicht.
Delphi-Quellcode:
es ist egal ob ich 1 or 2 or 3 einsetze.
SetAudioStream(FilterGraph,1);
mach ich was falsch oder bin ich jetzt zu blöd :wall: habe auch die divxsm.tlb bzw DivXSettingsManagerTypeLib_TLB.pas das ist die TypeLib von divxsm.exe Version 6.4 im "Windows\System32" von DivX. Das progi legt sich als tryicon in die startleiste und ist zum steuern der divx Filme aber damit komme ich nicht klar, bekomme immer eine fehlermeldung.
Delphi-Quellcode:
unit DivXSettingsManagerTypeLib_TLB;
// ************************************************************************ // // WARNUNG // ------- // Die in dieser Datei deklarierten Typen wurden aus Daten einer Typbibliothek // generiert. Wenn diese Typbibliothek explizit oder indirekt (über eine // andere Typbibliothek) reimportiert wird oder wenn die Anweisung // 'Aktualisieren' im Typbibliotheks-Editor während des Bearbeitens der // Typbibliothek aktiviert ist, wird der Inhalt dieser Datei neu generiert und // alle manuell vorgenommenen Änderungen gehen verloren. // ************************************************************************ // // PASTLWTR : 1.2 // Datei generiert am 21.10.2006 17:10:56 aus der unten beschriebenen Typbibliothek. // ************************************************************************ // // Typbib: C:\WINDOWS\system32\divxsm.tlb (1) // LIBID: {957BF83F-EE5A-42EB-8CE5-6267011F0EF9} // LCID: 0 // Hilfedatei: // Hilfe-String: DivX Settings Manager typeLib // DepndLst: // (1) v2.0 stdole, (C:\WINDOWS\system32\stdole2.tlb) // ************************************************************************ // {$TYPEDADDRESS OFF} // Unit muß ohne Typüberprüfung für Zeiger compiliert werden. {$WARN SYMBOL_PLATFORM OFF} {$WRITEABLECONST ON} {$VARPROPSETTER ON} interface uses Windows, ActiveX, Classes, Graphics, StdVCL, Variants; // *********************************************************************// // In dieser Typbibliothek deklarierte GUIDS . Es werden folgende // Präfixe verwendet: // Typbibliotheken : LIBID_xxxx // CoClasses : CLASS_xxxx // DISPInterfaces : DIID_xxxx // Nicht-DISP-Schnittstellen: IID_xxxx // *********************************************************************// const // Haupt- und Nebenversionen der Typbibliothek DivXSettingsManagerTypeLibMajorVersion = 1; DivXSettingsManagerTypeLibMinorVersion = 0; LIBID_DivXSettingsManagerTypeLib: TGUID = '{957BF83F-EE5A-42EB-8CE5-6267011F0EF9}'; IID_IDivXSettingsManager: TGUID = '{959F112D-EA4D-4117-803A-28AC6465FEC0}'; CLASS_DivXSettingsManager: TGUID = '{A0717E52-8AC8-4DD9-8682-0B76775125E6}'; type // *********************************************************************// // Forward-Deklaration von in der Typbibliothek definierten Typen // *********************************************************************// IDivXSettingsManager = interface; // *********************************************************************// // Deklaration von in der Typbibliothek definierten CoClasses // (HINWEIS: Hier wird jede CoClass zu ihrer Standardschnittstelle // zugewiesen) // *********************************************************************// DivXSettingsManager = IDivXSettingsManager; // *********************************************************************// // Schnittstelle: IDivXSettingsManager // Flags: (256) OleAutomation // GUID: {959F112D-EA4D-4117-803A-28AC6465FEC0} // *********************************************************************// IDivXSettingsManager = interface(IUnknown) ['{959F112D-EA4D-4117-803A-28AC6465FEC0}'] function RegisterDecoderFilter(out eventName: WideString; processID: LongWord): HResult; stdcall; function InitializeDecoderSettings(out aspectRatioX: SYSINT; out aspectRatioY: SYSINT; out brightness: SYSINT; out contrast: SYSINT; out saturation: SYSINT; out warmth: SYSINT; out warmthStrength: SYSINT; out disableLogo: SYSINT; out doubleBufering: SYSINT; out extendedOverlay: SYSINT; out extendedYUV: SYSINT; out autoPP: SYSINT; out autoPPLevel: SYSINT; out ppLevel: SYSINT; out disablePP: SYSINT; out smoothPlayback: SYSINT; out supportMPEG4: SYSINT): HResult; stdcall; function ShowConfigDialog: HResult; stdcall; function UnregisterDecoderFilter: HResult; stdcall; function SetFilename(const fname: WideString): HResult; stdcall; function RegisterDemuxFilter(out eventName: WideString; processID: LongWord): HResult; stdcall; function GetPendingEvent(out name: WideString; out param: SYSINT): HResult; stdcall; function DemuxInformationStart: HResult; stdcall; function AddAudioTrack(trackId: SYSINT; const trackName: WideString; const trackLanguage: WideString): HResult; stdcall; function AddSubtitleTrack(trackId: SYSINT; const trackName: WideString; const trackLanguage: WideString): HResult; stdcall; function AddMenu(id: SYSINT; const name: WideString): HResult; stdcall; function AddChapter(id: SYSINT; const name: WideString): HResult; stdcall; function SetMetadata(const buffer: WideString; size: SYSINT): HResult; stdcall; function DemuxInformationEnd: HResult; stdcall; function UnregisterDemuxFilter: HResult; stdcall; function GetDefaultAudioLanguage(out lang: WideString): HResult; stdcall; function GetDefaultSubtitleLanguage(out lang: WideString): HResult; stdcall; function SetAudioTrack(trackNum: SYSINT): HResult; stdcall; function SetSubtitleTrack(trackNum: SYSINT): HResult; stdcall; function SetFileDuration(seconds: SYSINT): HResult; stdcall; function SetFileSize(fileSizeHi: Integer; fileSizeLow: Integer): HResult; stdcall; end; // *********************************************************************// // Die Klasse CoDivXSettingsManager stellt die Methoden Create und CreateRemote zur // Verfügung, um Instanzen der Standardschnittstelle IDivXSettingsManager, dargestellt von // CoClass DivXSettingsManager, zu erzeugen. Diese Funktionen können // von einem Client verwendet werden, der die CoClasses automatisieren // möchte, die von dieser Typbibliothek dargestellt werden. // *********************************************************************// CoDivXSettingsManager = class class function Create: IDivXSettingsManager; class function CreateRemote(const MachineName: string): IDivXSettingsManager; end; implementation uses ComObj; class function CoDivXSettingsManager.Create: IDivXSettingsManager; begin Result := CreateComObject(CLASS_DivXSettingsManager) as IDivXSettingsManager; end; class function CoDivXSettingsManager.CreateRemote(const MachineName: string): IDivXSettingsManager; begin Result := CreateRemoteComObject(MachineName, CLASS_DivXSettingsManager) as IDivXSettingsManager; end; end. |
Re: DivX Tonspur umstellen (Switch Audio)
Hallo,
Zitat:
Zitat:
Gruß xaromz |
Re: DivX Tonspur umstellen (Switch Audio)
Hallo xaromz,
wie machst du das mit der Fernsteuerung mit dem Morgan Stream Switcher ? kannst du mir ein kleines demo geben ? |
Re: DivX Tonspur umstellen (Switch Audio)
Hallo,
Zitat:
Schau doch mal im Debugger, welchen Filter mein Code findet. Gruß xaromz |
Re: DivX Tonspur umstellen (Switch Audio)
habe mein problem beseitigt und jetzt geht es auch echt supi :thumb:
es lag an den DivX 6.4 Treiber der bringt doch einen umschalter mit und dann ging der Morgan Stream Switcher nicht mehr. :x der Morgan Stream Switcher zeigte auch im mediaplayer nur eine audiospur an. habe jetzt wieder DivX5.2 darauf und alles ist supper. nochmal vielen dank für deine hilfe :P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz