1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

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

  1. Artexoid

    Artexoid Гость

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

    Barmutik Гость

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

    Artexoid Гость

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

    Barmutik Гость

    Репутация:
    0
    Какой конкретно вариант ???
     
  5. Artexoid

    Artexoid Гость

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

    Barmutik Гость

    Репутация:
    0
    Хммм... я кричу? :unsure:

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

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

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

    admin Well-Known Member

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

    Barmutik Гость

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

    Вот пример захвата содержимого окна
    Код:
    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 Гость

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

    Barmutik Гость

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

    zubr Гость

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

    Artexoid Гость

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

    Barmutik Гость

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

    IBasicVideo.GetCurrentImage

     
  14. Artexoid

    Artexoid Гость

    Репутация:
    0
    Barmutik
    IBasicVideo.GetCurrentImage!! Это где такое :D ?
     
  15. Barmutik

    Barmutik Гость

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

    Artexoid Гость

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

    Barmutik Гость

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

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

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

    Artexoid Гость

    Репутация:
    0
    Barmutik
    Во :o спасибо посматрю !!
     
  19. Pete

    Pete Гость

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

    Guest_ Гость

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

    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.

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

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