Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2007, 11:31   #1
AutoRun
 
Регистрация: 03.01.2007
Сообщений: 3
По умолчанию Компонент TMediaPlayer

Всем доброго времени суток.
Сразу к делу:
У меня получилось воспроизвести видео с помощью компоненты TMediaPlayer. Как можно получить скриншот из файла который воспроизводиться?
Надо вытащить кадр из видео, как сделать, незнаю.
Знаю, что TMediaPlayer дает доступ к набору подпрограмм, созданных Microsoft и называемых Media Control Interface (MCI). Можно ли как-нибудь получить доступ к низкоуровневым функциям?


Заранее спасибо всем кто откликнулся.

Последний раз редактировалось AutoRun; 03.01.2007 в 11:34.
AutoRun вне форума Ответить с цитированием
Старый 07.01.2007, 02:10   #2
cando
 
Регистрация: 07.01.2007
Сообщений: 3
По умолчанию

можно но сейчас инфы под рукой нет не помню

а не пробовал просто канву с экрана MediaPlayer копировать
таже картинка и морок меньше
cando вне форума Ответить с цитированием
Старый 08.01.2007, 22:55   #3
Speeker
Форумчанин
 
Аватар для Speeker
 
Регистрация: 01.12.2006
Сообщений: 241
По умолчанию

Тоже код не скажу, но можно вставкой асемблера через копирование страницы видеопамяти
Програмисты - единственные люди, которым платят за исправления их же ошибок
Speeker вне форума Ответить с цитированием
Старый 09.01.2007, 19:46   #4
AutoRun
 
Регистрация: 03.01.2007
Сообщений: 3
По умолчанию

Спасибо всем кто откликнулся.

Проблема решена! Ура!
Сделал через канву, но не проч посмотреть и другие варианты. Может чего-нить доработаю.
AutoRun вне форума Ответить с цитированием
Старый 09.01.2007, 21:16   #5
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Своё решение можешь выложить? Лучше проект (без ехе) а не листинг, а то будут у некоторых вопросы!
zetrix вне форума Ответить с цитированием
Старый 16.01.2007, 14:05   #6
AutoRun
 
Регистрация: 03.01.2007
Сообщений: 3
По умолчанию

Постараюсь написать попонятней: :-)

Есть форма, на ней две панели, на первую панель выводиться видео, на второй отображаеться скриншот.

Код:
unit Unit1;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, ExtCtrls, Gauges, StdCtrls, MPlayer, Menus, jpeg;

type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    Panel1: TPanel;
    Gauge1: TGauge;
    Timer1: TTimer;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    Cghfdrf1: TMenuItem;
    N6: TMenuItem;
    OpenDialog1: TOpenDialog;
    Panel2: TPanel;
    Image1: TImage;
    Edit1: TEdit;
    procedure Timer1Timer(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Panel1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

// выбираем видео файл, и выводим на первую панель
procedure TForm1.N2Click(Sender: TObject);
var aPath, rasshr : string;
    aSearchRec : TSearchRec;

begin
  if opendialog1.Execute and fileexists(opendialog1.FileName) then
  begin
      with MediaPlayer1 do begin
       Close;
       Panel1.Refresh;
       FileName:=opendialog1.FileName;
       Open;
      end
   end;
end;
// примитивная полоса прокрутки
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  with MediaPlayer1 do
    if FileName<>'' then
      Gauge1.Progress:=Round(100*Position/Length);
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
var
  Start_From : Longint;
begin
  with MediaPlayer1 do begin
    if FileName='' then Exit;
    Start_From:=Position;
    Close;
    Panel1.Refresh;
    Open;
    Position:=Start_From;
    Play;
  end;
end;

procedure TForm1.N5Click(Sender: TObject);
begin
  Close;
end;

// кликаем по первой панели => скриншот на вторую панель.
procedure TForm1.Panel1Click(Sender: TObject);
var cc1,cc2: TControlCanvas;
    i,j:integer;
begin
  if (MediaPlayer1.FileName='') then Exit
  else
  cc1:=TControlCanvas.Create;
  cc2:=TControlCanvas.Create;
  cc1.Control:=Panel1;
  cc2.Control:=Image1;
  for i := 0 to Panel1.Width do
    for j := 0 to Panel1.Width do
      cc2.Pixels[i,j]:=cc1.Pixels[i,j]; //- делаем скриншот
end;

end.
Если что не понятно, пишите, постараюсь ответить поскорее.
AutoRun вне форума Ответить с цитированием
Старый 28.01.2007, 16:36   #7
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,082
По умолчанию

Как заставить видео файл полностью отображаться на панели (Panel1), а не уходить за поля формы ?
Noor вне форума Ответить с цитированием
Старый 17.06.2015, 14:35   #8
yurok000
Новичок
Джуниор
 
Регистрация: 17.06.2015
Сообщений: 1
Сообщение

Цитата:
Сообщение от Noor Посмотреть сообщение
Как заставить видео файл полностью отображаться на панели (Panel1), а не уходить за поля формы ?
mediaplayer1.DisplayRect := panel1.ClientRect;
yurok000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
tMediaPlayer Altera Компоненты Delphi 2 21.06.2008 18:24
Вопрос по TMediaPlayer SeRhy Помощь студентам 0 02.12.2007 12:57
два TMediaPlayer и два AVI-файла zeleniy Компоненты Delphi 0 01.06.2007 14:14
Компонент получше чем TMediaPlayer Viteef Компоненты Delphi 7 12.05.2007 22:14
TMediaPlayer Mickle Мультимедиа в Delphi 1 13.04.2007 11:05