Захват видео изображения

Тема в разделе "Delphi - Multimedia, Графика, Игры", создана пользователем Artexoid, 10 мар 2005.

  1. Artexoid

    Artexoid Гость

    Кто знает как захватывать кадры из потока кадров видео (AVI, MPG) и сохранять их в картинки (bmp например) подскажите пожалуйста!!!
    Заранее спасибо.
     
  2. Barmutik

    Barmutik Гость

    1. Использовать готовое решение .. что-нить типа ImageLib
    2. Просто грабить содержимое того окна в котором ведётся проигрывание.
    3. Самый правильный способ: пропускать содержимое через себя и вырезать что надо... В таком случае впердё читать MS SDK .. там есть пример...
     
  3. Artexoid

    Artexoid Гость

    Barmutik
    Ты мне то что сказал кодом напиши, принцип действия я и так понимаю.
     
  4. Barmutik

    Barmutik Гость

    Какой конкретно вариант ???
     
  5. Artexoid

    Artexoid Гость

    Barmutik
    Напиши мне любой вариант.
    Что ты на меня кричиш :)?? Разве я не конкретные вопросы задаю?
    Ну вот тебе еще конкретней!:
    Я подключаю видео, нажимаю плэй, просматриваю его, рас мне момент понравился я нажимаю стоп, нажимаю кнопку сахранить кадр и сохраняю его в bmp или jpg или мне все равно во что. Я незнаю как захватить и сохранить кадр.
    Если ты знаеш как это сделать то прошу помоги мне пожалуйста, если не знаеш то ненадо говорить что вопросы неконкретные или не хочеш за меня задачу выполнять. Форум для того и предназначин чтобы помощи просить, узнавать что-то новое !
     
  6. Barmutik

    Barmutik Гость

    Хммм... я кричу? :unsure:

    На такое описание проблемы есть только один совет:

    Просматриваеш видео... нашёл классный момент... нажал паузу... нажал магическую комбинацию Alt+Print Screen... запустил MS Paint ... далее Ctrl+V... потом сохранить как и указал имя фалйа...

    Задача решена :) :unsure:
     
  7. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Barmutik
    не работает с DirectX Preent Screen надо что-то типа Hyper Snap юзать.
     
  8. Barmutik

    Barmutik Гость

    Ну я вообщем-то образно выразился .. рассматривался самый простой вариант...

    Вот пример захвата содержимого окна
    Код (Text):
    var
    DC  : hDC;
    Rect : TRect;
    Bitmap: TBitmap;
    Handle: hWnd;
    wX,wY : integer;
    begin
    Handle:=FindWindow('','Intro.avi');
    GetWindowRect(Handle,Rect);
    wX:=(Rect.Right - Rect.Left);
    wY:=(Rect.Bottom - Rect.Top);
    DC:=GetWindowDC(Handle);
    Bitmap:=TBitmap.Create;
    Bitmap.Handle:=CreateCompatibleBitmap(DC,wX,wY);
    BitBlt(Bitmap.Canvas.Handle,0,0,wX,wY,DC,0,0,SRCCOPY);
    ReleaseDC(Handle,DC);
    Clipboard.SetAsHandle(CF_BITMAP,Bitmap.Handle);
    Вот хороший линк где рассказывают как можно сделать в частном случае из AVI в Bitmap:
    http://www.efg2.com/Lab/Library/Delphi/Graphics/BMP.htm
     
  9. Artexoid

    Artexoid Гость

    Barmutik
    :) Спасибо большое на AVI твоя ссылка сласно действует. А на mpg у тебя ничего нет ???
     
  10. Barmutik

    Barmutik Гость

    Надо поискать.... ну хорошо что уже хоть что-то подошло :huh:
     
  11. zubr

    zubr Гость

    Artexoid
    Там в ссылках, что дал Barmutik есть пример как делать скриншоты видео, используя TMediaPlayer. Решение конечно не очень красивое, но проблему конвертации mpg или другого видео формата в bmp решает. Там правда пример для avi. См. http://www.efg2.com/Lab/Library/Delphi/Graphics/AVItoBMP.ZIP
     
  12. Artexoid

    Artexoid Гость

    zubr
    Неа, тот пример решает проблему только с AVI а другие форматы просто пустая картинка и все.
     
  13. Barmutik

    Barmutik Гость

    Вот нашёл случайно .. правда надо разбираться как работает:

    IBasicVideo.GetCurrentImage

     
  14. Artexoid

    Artexoid Гость

    Barmutik
    IBasicVideo.GetCurrentImage!! Это где такое :D ?
     
  15. Barmutik

    Barmutik Гость

    Это интерфейс ... описан в MSDN ... случайно наткнулся... по описанию как раз то что Вам нужно ...
     
  16. Artexoid

    Artexoid Гость

    Barmutik
    Извени я не такой прошареный :(... Что такое MSDN?.
     
  17. Barmutik

    Barmutik Гость

    MSDN - Microsoft Developer Network - практически полный хелп по возможностям программирования для Виндовс.. более полного уже не найдёш..

    Очень полезная вещь ... практически 70% вопросов можно решить поискать в нём... я думаю используется как настольное приложении у программистов пишущих под Виндовс.

    Можно купить на любом рынке .. полное сочинение занимает 4 компакта...
     
  18. Artexoid

    Artexoid Гость

    Barmutik
    Во :eek: спасибо посматрю !!
     
  19. Pete

    Pete Гость

    Можно использовать прогу Video Converter No 1. Эта программа может разбивать весь MPEG файл в виде картинок по кадрам в bmp формат.
     
  20. Guest_

    Guest_ Гость

    Создайте новый пустой проект и в главном модуле запишите:

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, MPlayer, ExtCtrls;

    type
    TForm1 = class(TForm)
    Panel1: TPanel; //установите свойства Height = 256 With = 128
    Image1: TImage; //установите свойства Height = 256 With = 128

    MediaPlayer1: TMediaPlayer; { установите свойства :
    Display = Panel1
    AutoOpen = True
    FileName = "выбирете файл с расширением .avi" }

    Timer1: TTimer; {установите свойства:
    Interval = 10
    Enabled = false }

    procedure MediaPlayer1PostClick(Sender: TObject; Button: TMPBtnType);
    procedure Timer1Timer(Sender: TObject);
    private
    public
    end;

    var
    Form1: TForm1;
    CCanvas:TControlCanvas;

    implementation

    {$R *.dfm}

    procedure TForm1.MediaPlayer1PostClick(Sender: TObject;
    Button: TMPBtnType);
    begin
    if Button=btPlay then begin
    CCanvas:=TControlCanvas.Create;
    CCanvas.Control:=Panel1;
    Timer1.Enabled:=true; end;
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    Image1.Canvas.CopyRect(Rect(0,0,256,128),CCanvas,Rect(0,0,256,128));
    end;

    end.

    Можете компилировать и запускать.
     
Загрузка...

Поделиться этой страницей