Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.10.2009, 19:54
Аватар для TolAlik
TolAlik TolAlik вне форума
Прохожий
 
Регистрация: 02.10.2009
Сообщения: 41
Репутация: 10
По умолчанию видеоконференция

Hi! Извиняюсь если тема такая есть, но я не нашел ее.
Нарисовалась у меня проблема, получаю видео поток с веб-камеры используя DSPack (рабочий пример ниже), а как послать по сети ума не прилажу. Находил в Инете примеры по данной теме, но там по сети посылались изображения и накладывались друг на друга у получателя, что не очень то хорошо, т.к. при большом числе картинок изображение начинало мерцать. Подскажите, кто сталкивался с этим, как посылать сам видео поток по сети? Заранее спасиб.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DSPack, DSUtil, DirectShow9;

type
  TForm1 = class(TForm)
    SampleGrabber1: TSampleGrabber;
    ComboBox1: TComboBox;
    Button1: TButton;
    FilterGraph1: TFilterGraph;
    Filter1: TFilter;
    VideoWindow1: TVideoWindow;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  VideoDevice: TSysDevEnum;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
begin
  VideoDevice:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
  if VideoDevice.CountFilters > 0 then
    for i := 0 to VideoDevice.CountFilters - 1 do
      ComboBox1.Items.Add(VideoDevice.Filters[i].FriendlyName);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  FilterGraph1.ClearGraph;
  FilterGraph1.Active := false;
  Filter1.BaseFilter.Moniker :=VideoDevice.GetMoniker(ComboBox1.ItemIndex);
  FilterGraph1.Active := true;
  with (FilterGraph1 as ICaptureGraphBuilder2) do
    RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter1 as IBaseFilter, SampleGrabber1 as IBaseFilter, VideoWindow1 as IbaseFilter);
  FilterGraph1.Play;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Button1.Caption='Смотреть видео' then
begin
FilterGraph1.Play;
Button1.Caption:='Остановить видео';
end
else
begin
FilterGraph1.Stop;
Button1.Caption:='Смотреть видео';
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  VideoDevice.Destroy;
end;

end.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:06.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025