Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DSPack - снятие скриншотов. Работает только у меня. 
:(
    Опции темы
iddqd
Дата 30.8.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



Написал программу, которая снимает скриншоты с видео файлов. Для этого использую DSPack. Открываю файл, перематываю на нужное место. Затем использую функцию компонента TSampleGrabber GetBitmap и у меня всё работает прекрасно, но когда я скомпилированную программу запускаю на другом компьютере, то файлы скриншотов нулевого размера.
Может кто-нибудь знает в чём может быть дело?



--------------------
PM MAIL   Вверх
Alexeis
Дата 30.8.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(iddqd @  30.8.2006,  13:29 Найти цитируемый пост)
Может кто-нибудь знает в чём может быть дело?

Очевидно, в настройках компа и в том, что возможность существования других настроек не учтена в программе. Такое часто бывает. Надо сравнивать машины (Версии ОС, DirectX, язык, привязки к путям и т.д.). Потом можно будет уже делать выводы.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
iddqd
Дата 30.8.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



У нас на работе компьютеры совершенно одинаковые. ОС установлена с одного диска.
Директ ИКС сейчас поставил один и тот же. Не помогает smile


--------------------
PM MAIL   Вверх
Alexeis
Дата 30.8.2006, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Лучше код выложить, а то мало ли разрешение экрана жестко пропиасано или еще какие константы, которые константами не являются.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
iddqd
Дата 30.8.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



Вот так выглидят настройки компонентов:
user posted image
Код собсна одна строка:
Код

    bmp := TBitmap.Create;
    Form1.Screen.GetBitmap(bmp); 
    bmp.SaveToFile(путь к файлу);

Больше никаких обращений к этим компонентам в коде нет.
К тому же если бы было что-то не правильно не работало бы у меня тоже.


--------------------
PM MAIL   Вверх
Alexeis
Дата 30.8.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Метод GetBitmap наверняка возвращает код ошибки в случае неудачи захвата, надо вывести ее на экран.

Добавлено @ 16:36 
Кстати у меня тот же эффект файл пустой.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
iddqd
Дата 30.8.2006, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



Дак вот что самое интересное - у меня всё прекрасно работает, а у других людей - нет smile
GetBitmap возвращает boolean.
Может быть у тебя есть ещё какие-нибудь мысли?
В крайнем случае могу полностью дать исходники.


--------------------
PM MAIL   Вверх
Alexeis
Дата 30.8.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Код

  function TSampleGrabber.GetBitmap(Bitmap: TBitmap): boolean;
  var
    hr         : HRESULT;
    BMIHeader  : TBitmapInfoHeader;
    BufferSize : longint;
    AMediaType : TAMMediaType;
    buffer     : pointer;
  begin
    result := false;
    if not assigned(Bitmap) then exit;
    if not assigned(SampleGrabber) then exit;
    hr := SampleGrabber.GetConnectedMediaType(AMediaType);
    if (hr <> S_OK) then exit;//вот здесь происходит у меня вылет
//так как не определяется устройство захвата.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
iddqd
Дата 30.8.2006, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



Да, я тоже на это обратил внимание.
Есть мысли, как его можно выставить принудительно?


--------------------
PM MAIL   Вверх
Alexeis
Дата 30.8.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(iddqd @  30.8.2006,  17:06 Найти цитируемый пост)
Есть мысли, как его можно выставить принудительно?

Да это без проблем, но от этого оно лучше не работает по крайней мере у меня.
Screen->MediaType - тут оно и устанавливается! 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
iddqd
Дата 30.8.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



Ага, это я уже сделал, но по прежнему работает только на моём компьютере.
Код

Form1.Screen.MediaType.MajorType:=MEDIATYPE_Video;
Form1.Screen.MediaType.SubType:=MEDIASUBTYPE_RGB24;
Form1.Screen.MediaType.SetSampleSize(1);
Form1.Screen.MediaType.FormatType:=FORMAT_VideoInfo;

Видимо чего-то ещё не хватает.


--------------------
PM MAIL   Вверх
Alexeis
Дата 30.8.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



GetConnectedMediaType - это уже функция DirectX, похоже проблемы таки там.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
iddqd
Дата 30.8.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



Удивляет тот факт, что на моём компьютере всё работает отлично, а на других - нет.
 
Цитата(alexeis1 @  30.8.2006,  17:47 Найти цитируемый пост)
GetConnectedMediaType - это уже функция DirectX, похоже проблемы таки там.

Что-то мне ничего в голову не приходит по этому поводу smile(



--------------------
PM MAIL   Вверх
iddqd
Дата 1.9.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



alexeis1, может быть просто знаешь другой способ, как можно снять скриншоты с видео файла?


--------------------
PM MAIL   Вверх
Alexeis
Дата 1.9.2006, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



iddqd, да способы есть, но все они не работают для оверлеев (дают черный квадрат). К сожалению использование оверлеев для воспроизведения видео очень распространенная практика, так что с этим беда smile

Добавлено @ 18:00 
Зная хэндл можно в одной функцией получить скриншот. Вот например скриншот десктопа (помещается в DesktopBitmap : TBitmap)
Код

  BitBlt(DesktopBitmap.Canvas.Handle,
  0,0,Screen.Width,Screen.Height,
  GetDC(GetDesktopWindow),0,0,SrcCopy);



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.1182 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.