Witam. Używam DSPack do obsługi karty telewizyjnej. Mam taki kod:
public
procedure OnSelectDevice(sender: TObject);
//...
var
VideoForm: TVideoForm;
SysDev: TSysDevEnum;
//...
procedure TVideoForm.FormCreate(Sender: TObject);
var
i: integer;
Device: TMenuItem;
begin
SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
if SysDev.CountFilters > 0 then
for i := 0 to SysDev.CountFilters - 1 do
begin
Device := TMenuItem.Create(Devices);
Device.Caption := SysDev.Filters[i].FriendlyName;
Device.Tag := i;
Device.OnClick := OnSelectDevice;
Devices.Add(Device);
end;
OnSelectDevice(Device);
end;
procedure TVideoForm.OnSelectDevice(sender: TObject);
begin
FilterGraph.ClearGraph;
FilterGraph.Active := false;
Filter.BaseFilter.Moniker := SysDev.GetMoniker(TMenuItem(Sender).tag);
FilterGraph.Active := true;
with FilterGraph as ICaptureGraphBuilder2 do
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter, SampleGrabber as IBaseFilter, VideoWindow as IbaseFilter);
FilterGraph.Play;
end;
I działa dobrze, ale mam jeszcze 2 pytania:
1.Jak wybrać źródło z jakiego ma być pobierany obraz i dźwięk? Moja karta dla przykładu ma:
- Telewizję
- Compsite In
- SVideo In
I obsługuje jeszcze radio. Jak wybrać lub zmienić w czasie odtwarzania źródło?
2.Jak programowo zmienić kanał stacji?