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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.01.2014, 19:30
zibert zibert вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: NikolayevCity
Сообщения: 40
Версия Delphi: Семерка))
Репутация: 10
Восклицание Экстрагирование avi фрейма

Есть проблема с экстрагирование avi фрейма: Суть проблемы заключается в следующем:
Экстрагировать фрейм из AVI с помощью функции взятой отсюда.. Но проблема в том, что эта функция не работает на Windows Xp, а на Win7 все норм. Может кто-то что-то знает по этому поводу?
__________________
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно.
Ответить с цитированием
  #2  
Старый 10.01.2014, 21:19
zibert zibert вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: NikolayevCity
Сообщения: 40
Версия Delphi: Семерка))
Репутация: 10
Вопрос

Может кто-то знает другой способ достать фреймы?
__________________
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно.
Ответить с цитированием
  #3  
Старый 10.01.2014, 23:31
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

http://www.delphisources.ru/pages/so...vi_loader.html
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
zibert (10.01.2014)
  #4  
Старый 10.01.2014, 23:48
zibert zibert вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: NikolayevCity
Сообщения: 40
Версия Delphi: Семерка))
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.

Это конечно хороший способ. Но не доверяю я Canvas'у. Хотелось бы процедуру которая напрямую это все делает (Без медиа плеера и канваса)

Вот нашел функцию, но не могу понять, что нужно указывать в параметре dc: HDC.
Остальные параметры более понятны.
avifn - путь к ави файлу.
TmpBmp - сам фрейм, который получаем на выходе.
lPos - номер фрейма, который нужно достать.

Если что - то не так, то поправьте.
__________________
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно.

Последний раз редактировалось M.A.D.M.A.N., 11.01.2014 в 10:10.
Ответить с цитированием
  #5  
Старый 11.01.2014, 01:05
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от zibert
... что эта функция не работает на Windows Xp, а на Win7 все норм...
На XP работает, проверено.

DC нужно получить
Код:
SysDC := GetDC(0);
DC := CreateCompatibleDC(SysDC);
// Здесь вызов
DeleteDC(DC);
ReleaseDC(0, SysDC);
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось M.A.D.M.A.N., 11.01.2014 в 10:10.
Ответить с цитированием
  #6  
Старый 11.01.2014, 01:19
zibert zibert вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: NikolayevCity
Сообщения: 40
Версия Delphi: Семерка))
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
На XP работает, проверено.
Ну, не знаю тогда((
Может я использую не такой vfw.pas. Они ведь разные бывают..
__________________
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно.

Последний раз редактировалось zibert, 11.01.2014 в 01:23.
Ответить с цитированием
  #7  
Старый 11.01.2014, 01:26
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Я нашёл древний, из поставки GLScene за 2001 год и немного подправил с учётом требований Дельфи 7.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #8  
Старый 11.01.2014, 01:30
zibert zibert вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: NikolayevCity
Сообщения: 40
Версия Delphi: Семерка))
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
DC нужно получить
Код:
SysDC := GetDC(0);
DC := CreateCompatibleDC(SysDC);
// Здесь вызов
DeleteDC(DC);
ReleaseDC(0, SysDC);

я вызываю так:
Код:
var SysDC,DC:HDC;
......................
SysDC := GetDC(0);
DC := CreateCompatibleDC(SysDC);
GetAVIFrame('типа путь к ави', DC , image1.Picture.Bitmap, 1);
DeleteDC(DC);
ReleaseDC(0, SysDC);
И на выходе получаю "Черный квадрат" в image1.
А вот когда я делаю так:
Код:
GetAVIFrame('типа путь к ави', form1.Canvas.Handle , image1.Picture.Bitmap, 1);
я получаю в image1 фрейм, но какой Первый (число 1, которое я посылаю в параметре lPos) или какой - то другой?
__________________
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно.
Ответить с цитированием
  #9  
Старый 11.01.2014, 01:32
zibert zibert вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: NikolayevCity
Сообщения: 40
Версия Delphi: Семерка))
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Я нашёл древний, из поставки GLScene за 2001 год и немного подправил с учётом требований Дельфи 7.
А вы бы не могли его скинуть? Взглянуть..
__________________
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно.
Ответить с цитированием
  #10  
Старый 11.01.2014, 01:35
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Сейчас проверю работу 2-ой функции. Код vfw приложен.
Вложения
Тип файла: rar vfw.rar (22.7 Кбайт, 6 просмотров)
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 11.01.2014, 01:55
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Обе функции работают одинаково, у них и код практически один в один. Фреймы в обоих случаях выдаются те, что запрошены. Во-втором случае вызывал так:
Код:
procedure TForm1.Button22Click(Sender: TObject);
var
  DC : HDC;
begin
  DC := CreateDC('Display', nil, nil, nil);
  GetAVIFrame('earth.avi', DC, image1.Picture.Bitmap, 3);
  DeleteDC(DC);
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #12  
Старый 11.01.2014, 02:13
zibert zibert вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: NikolayevCity
Сообщения: 40
Версия Delphi: Семерка))
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Обе функции работают одинаково, у них и код практически один в один. Фреймы в обоих случаях выдаются те, что запрошены. Во-втором случае вызывал так:
Код:
procedure TForm1.Button22Click(Sender: TObject);
var
  DC : HDC;
begin
  DC := CreateDC('Display', nil, nil, nil);
  GetAVIFrame('earth.avi', DC, image1.Picture.Bitmap, 3);
  DeleteDC(DC);
end;

То-есть во втором случае вы получали 3 фрейм?
А качество картинки меняется?
У меня получается картинка немного темнее, чем на видео..
__________________
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно.
Ответить с цитированием
  #13  
Старый 11.01.2014, 02:17
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

1. Да 3-ий фрейм.
2. На вид вроде одинаково.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
zibert (11.01.2014)
  #14  
Старый 13.01.2014, 01:12
zibert zibert вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: NikolayevCity
Сообщения: 40
Версия Delphi: Семерка))
Репутация: 10
По умолчанию

Все хорошо, да не очень((
Вставил функцию GrabAVIFrame и воспользовался вот этим vfw.pas.
В итоге выдает access violation, хотя картинку сохраняет.
Использую так:
Код:
 
 for i := 0 to NumberOfFrames - 1 do
  begin
    Str := 'Frames\' + inttostr(i) + '.bmp';
    GrabAVIFrame(AVIFilePath, i, TempPath + Str);
  end;
Немного процедуру подредактировал:
изменил некоторые типы(потому что не принимал пасник)
Код:
var
  Error: Integer;
  pFile: iAVIFile; {PAVIFile}
  AVIStream: iAVIStream; {PAVIStream}
  gapgf: iGETFRAME;{PGETFRAME}
  lpbi: PBITMAPINFOHEADER;
  bits: PChar;
  hBmp: HBITMAP;
  AviInfo: TAVIFILEINFO;{TAVIFILEINFOW}
  TmpBmp: TBitmap;
  DC_Handle: HDC;
Может что - то посоветуете?
__________________
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно.

Последний раз редактировалось zibert, 13.01.2014 в 01:18.
Ответить с цитированием
  #15  
Старый 13.01.2014, 02:32
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Чем не устроил высланный файл?
Поглядел ваш файл, он "заточен" под юникод, хотя по-умолчанию отключён. Если используете Дельфи7, то нужно часть вызываемых функций в GrabAVIFrame изменить. К примеру, AVIFileInfo менем на AVIFileInfoA.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 13.01.2014 в 03:02.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
zibert (13.01.2014)
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter