Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Hello, World!
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  15:56[Войти] | [Зарегистрироваться]

Обсуждение материала
IMediaDet — интерфейс для захвата видео и аудио информации
Полный текст материала


Другие публикации автора: Александр Бусаров

Цитата или краткий комментарий:

«... В данной статье я хочу рассмотреть интерфейс IMediaDet, который нам любезно предоставил DirectShow. Интерфейс специально разработан для того, чтобы захватить часть видео или аудио информации. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

Всего проголосовали: 0

Оценка стиля изложения

Всего проголосовали: 0




Смотрите также материалы по темам:
[DirectShow]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 6

09-05-2011 06:49
"Еще нужно подключить модуль ActiveX." какой конкретно модуль?

и если у кого-нибудь ксть готовое приложение выложите пож-ста


12-03-2007 02:45
Спасибо всем, сам нашел ошибку, вместо аrray of byte почему то написал array of pchar из-за этого получался сдвиг. Дописал тут кое что еще на основе своих разработок еще под VFW в частности определения кодека компрессии и т.п. инфы (как в LA)
Добавил информацию о кодерах и потоках, а также грабку в image

Вот что получилось
если кому интересно, готовое приложение на основе статьи
http://rapidshare.com/files/20627234/DirectShowGrabAVI.rar.html
так как автор к сожалению не привел пример, привожу за него с небольшими дополнениями


09-03-2007 07:23
сообщение от автора материала
не знаю.
Вот этот код дал мне абсолютно нормальную картинку:

procedure TForm1.Button1Click(Sender: TObject);
var buffer:array of byte;
    buffsize:longint;
    Detector:IMediaDet;
    info:_AMMediaType;
    height, width:word;
    time:double;
    initinfo:TBITMAPINFO;
    infoheader:TBITMAPINFOHEADER;
    hdcDest:HDC;
    bitmap:HBITMAP;
begin
  CoCreateInstance (CLSID_MediaDet,nil, CLSCTX_INPROC_SERVER, IID_IMediaDet, Detector);
  Detector.put_Filename('c:\qwe.avi');
  DEtector.get_StreamMediaType(info);
  Width:=VIDEOINFOHEADER(info.pbFormat^).bmiHeader.biWidth;
  Height:=VIDEOINFOHEADER(info.pbFormat^).bmiHeader.biHeight;

  BuffSize:=0;
  time:=4;

  // iieo?aai ?acia? a BuffSize
  Detector.GetBitmapBits(time, @BuffSize, nil, Width, Height);
  // auaaeyai iaiyou
  ShowMessage(IntToStr(BuffSize));
  SetLength(Buffer, BuffSize);
  // a auaaeaiio? iaiyou eiie?oai ea?oeieo
  // DirectShow aica?auaao ea?oeieo anaaaa a 24-aeoiii oi?iaoa oaaoa. Ii aaeoo ia ea?aue eaiae RGB.
  Detector.GetBitmapBits(Time, nil, @Buffer[0], Width, Height);
  // ?enoei iaiyou
  ZeroMemory(@InitInfo,  SizeOf(TBITMAPINFO));
  // Eiie?oai BITMAPINFOHEADER a iieo?aiiue aooa?
  CopyMemory(@InfoHeader, @Buffer[0], SizeOf(TBITMAPINFOHEADER));
  CopyMemory(@InitInfo.bmiHeader, @InfoHeader, SizeOf(TBITMAPINFOHEADER));
  // Nicaaai DIB Bitmap
  hdcDest := GetDC(0);
  Bitmap := CreateDIBitmap(hdcDest, InfoHeader, CBM_INIT, @Buffer[SizeOf(TBITMAPINFOHEADER)], InitInfo, DIB_RGB_COLORS);

  // ioia?a?aai
  image1.Width  := width;
  image1.Height := height;
  image1.Picture.Bitmap.Handle := Bitmap;
end;



На форме только кнопка (Button1:TButton) и имейдж (Image1:TImage).

Код твой, немного дополненый. Но не измененный.


09-03-2007 06:44
Все понятно но картинка почемуто сдвинута получается
вот код -

  // получаем размер в BuffSize
  Detector.GetBitmapBits(Time, @BuffSize, nil, Width, Height);
  // выделяем память
  SetLength(Buffer, BuffSize);
  // в выделенную память копируем картинку
  // DirectShow возвращает картинку всегда в 24-битном формате цвета. По байту на каждый канал RGB.
  Detector.GetBitmapBits(Time, nil, @Buffer[0], Width, Height);
  // Чистим память
  ZeroMemory(@InitInfo,  SizeOf(TBITMAPINFO));
  // Копируем BITMAPINFOHEADER в полученный буфер
  CopyMemory(@InfoHeader, @Buffer[0], SizeOf(TBITMAPINFOHEADER));
  CopyMemory(@InitInfo.bmiHeader, @InfoHeader, SizeOf(TBITMAPINFOHEADER));
  // Создаем DIB Bitmap
  hdcDest := GetDC(0);
  Bitmap := CreateDIBitmap(hdcDest, InfoHeader, CBM_INIT, @Buffer[SizeOf(TBITMAPINFOHEADER)], InitInfo, DIB_RGB_COLORS);

  // отображаем
  image1.Width  := width;
  image1.Height := height;
  image1.Picture.Bitmap.Handle := Bitmap;



04-03-2007 07:25
сообщение от автора материала
Нет, к сожалению это не пригодно для захвата с вебкамеры.
Для захвата с вебкамеры можно использовать ISampleGrabber.

Для того чтобы найти камеру нужно создать ICreateDevEnum, от него IEnumMoniker, из него ты можешь получить все моникеры системы на данный момент. Среди них тебе нужно выбрать твою камеру, передать этот моникер ISampleGrabber-у, от ISampleGrabber-а получить IMediaSample, а у IMediaSample-а вызвать GetPointer. Это и будет твой "скриншот" с камеры.

Это все в кратце, более подробно на msdn2


04-03-2007 05:14
Это пригодно для захвата с вебкамеры? И если да -как ее найти в проге?


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Жил-был у бабушки серенький КТО?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования