Есть код определяющий количество аудиодорожек в видео
procedure TfGeneral.GetSoundStreamsCount;
var EnumFilters: IEnumFilters; {The Variables needed for Filter Operations}
BaseFilter: IBaseFilter;
FilterInfo: TFilterInfo;
Klasse:TGuid;
begin
fVideo.lbAudioStreams.Clear;
glb_SoundStreams:=0; {plain }
(pFilterGraph as IFilterGraph).EnumFilters(EnumFilters); {Enumerate Filters}
While (EnumFilters.Next(1, BaseFilter, nil)=S_OK) do
begin
BaseFilter.QueryFilterInfo(FilterInfo);
BaseFilter.GetClassID(Klasse);
if IsEqualGUID(Klasse,CLSID_DSoundRender) then
begin
glb_SoundStreams:=glb_SoundStreams+1; {counting}
AddMenuItem(fVideo.lbAudioStreams,'Audio '+IntToStr(glb_SoundStreams),'','',nil,true);
end;
end;
end;
И есть файл в нем две дорожки Одна AC3, вторая DTS. По этому коду находит только DTS, в каком интерфейсе искать вторую?
Вопрос
OnePeople
Есть код определяющий количество аудиодорожек в видео
procedure TfGeneral.GetSoundStreamsCount; var EnumFilters: IEnumFilters; {The Variables needed for Filter Operations} BaseFilter: IBaseFilter; FilterInfo: TFilterInfo; Klasse:TGuid; begin fVideo.lbAudioStreams.Clear; glb_SoundStreams:=0; {plain } (pFilterGraph as IFilterGraph).EnumFilters(EnumFilters); {Enumerate Filters} While (EnumFilters.Next(1, BaseFilter, nil)=S_OK) do begin BaseFilter.QueryFilterInfo(FilterInfo); BaseFilter.GetClassID(Klasse); if IsEqualGUID(Klasse,CLSID_DSoundRender) then begin glb_SoundStreams:=glb_SoundStreams+1; {counting} AddMenuItem(fVideo.lbAudioStreams,'Audio '+IntToStr(glb_SoundStreams),'','',nil,true); end; end; end;
И есть файл в нем две дорожки Одна AC3, вторая DTS. По этому коду находит только DTS, в каком интерфейсе искать вторую?
Ссылка на комментарий
1 ответ на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.