Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.07;
Скачать: CL | DM;

Вниз

Базы данных и графика в них !   Найти похожие ветки 

 
UnDISCOvery   (2002-01-10 13:46) [0]

Такая вот задача, вернее незадача. :) Есть видеопоток, который представляет из себя набор кадров (в формате bmp), плотность потока примерно 60 кадров в секунду. Нужно это из этого дела сделать, вроде как архив. Сейчас я сделал это в виде обычного файла на диске (через FileStream, куда пишутся подряд все кадры сжатые в jpeg). Но мой научрук совсем сдвинулся :) ... грит а давай сделай архив в виде таблицы БД, с возможностью чтения, поиска и навигации. А вот собственно и вопросы:
1. Какой алгоритм вывода графики будет наиболее быстрым, приминительно к формату видеопотока ?
2. Какую платформу БД лучше использовать ? Так как предстоит иметь дело с выборкой большого обьема BLOB полей.
3. Какие компоненты и каким образом использовать ?

Мысли пока такие: по таймеры считывать группу записей с блобами в кэш на клиенте (може быть храним. процедурой), а затем оттуда высасывать по кадру и выводить на канву, чувствую что без разделения на нити не обойтись :(.. не люблю я это.

ЗЫ. Выслушаю ЛЮБЫЕ ваши мысли по поводу сабжа !
Заранее фэнкс ! :)


 
Praco ©   (2002-01-10 15:50) [1]

Когда-то я это делал примерно так(D5, MSSQL 7.0)
DataSet.Edit;
//Field - блоб поле
(Field as TBlobField).LoadFromStream(stream);
или
(Field as TBlobField).LoadFromFile(file);
DataSet.Post;

Транзакции и обработку Exception по вкусу.

Я создавал отдельный поток для сохранения каждого кадра в MSSQL.

Можно и из другого приложения (по таймеру - почему бы и нет).Канва здесь не при чем.Читаешь кадр из файла - сохраняешь, читаешь следующий...


 
Mike_Goblin ©   (2002-01-11 09:47) [2]

А не проще хранить по-прежнему в файлах на диске, а в БД только пути к ним


 
Desdechado ©   (2002-01-11 11:09) [3]

Использование СУБД должно быть оправдано. Чем это мотивирует препод? Если только для удобства навигации, то чем его не устраивает файловая система:
- имя файла - то, что в нем заснято,
- время создания, модификации, последнего доступа - пожалуйста,
- группировка - рассовать по папкам,
- поиск - по всему вышеуказанному (не будет же он, в самом деле, искать по содержимому двоичного файла).
Зачем тут СУБД? Только для использования современных технологий? Так можно мобилой гвозди забивать.
Подумай... Может, стоит просто удобный интерфейс сделать, а детали реализации пусть останутся тайной.


 
Ura   (2002-01-11 11:56) [4]

Если твой научрук совсем такой умный предложи ему еще более продвинутую систему.
11 машин. Сеть 100МГб. Распределенная база.
1 машина делает обработку и рассылает кадры на другие машины, где они и ложаться в Бд. 1-ый кадр на первую 2-ой на вторую и т.д. а можно еще и запрашивать кто свободен сейчас.
Кол машин выбирается только для того, чтобы они успевали сохранить все твой кадры т.е. скоростью работы СУБД. ;-)


 
petr_v_a ©   (2002-01-11 12:02) [5]

У Oracle ( за отдельные деньги ) есть некая фигня под названием Video Information Retrivial Cartrige. Что это такое и как им пользоваться не знаю, но, судя по названию :), Вам стоит это посмотреть


 
Praco ©   (2002-01-11 12:47) [6]

"А не проще хранить по-прежнему в файлах на диске, а в БД только пути к ним"
Кстати, читаться кадры будут гораздо быстрее, чем из базы. Если планируется показывать фильмы, то этот вариант оптимальный.


 
UnDISCOvery   (2002-01-11 20:44) [7]

Всем отозвавшимся ! Спасибо, друзья ! Я тут ночкой погемороился и вот что получилось:
БД - MSSQL DE 7.0, доступ через ADO
Запись из видеопотока в таблицу БД
insert Cam1 (Time, Kadr)
values (:tm, :kr) - это в ADOCommand
ParamByName.Value:= Time;
ParamByName.LoadFromStream(MemoryStrm,ftGraphic)
Плотнее чем 5-6 к\с не получилось, правда и машина не супер (винт не скази, камень целерон :) ). НО в принципе довольно приемлемо. Изображение переодически подергивается когда начинаешь в базу скидывать, но это не часто, хотя и раздражает.

Чтение из базы.
ADOquery. select по времени от пользователя, затем First, SaveToStream, Jpeg.LoadFromStream, Canvas.StretchDraw(jpeg), Next
скорость чтение 17 к\с... все довольно плавно и даже перемотка получается :).

Мотивация по поводу БД звучала так: Ну так же удобнее управлять доступом и для сети все уже готово, или ты хочешь еще и сетевую версию делать ? :) Я сказал, что я уже не чего не хочу :))

А почему чтение из базы дольше ? По-моему основное время уходит на обращение к диску, а оно одинаково или я не прав ?

АААА !!! Вот еще что ! Только что вычитал что у SQLя есть специальные методы для работы с блобами: readtext, writetext. Они хранятся в виде набора страниц по 2Кб. А в поле БД только указатель на первую. Может это аргумент для прееода, чтобы он успокоился и не придумывал задач ? :)))

если есть что сказать еще пишите egen_postbox@rambler.ru



Страницы: 1 вся ветка

Текущий архив: 2002.02.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
1-18912
vlv
2002-01-23 18:37
2002.02.07
Как в TListView поменять местами 2 Itema?


1-18825
vrRaven
2002-01-25 16:15
2002.02.07
Проблема с Copy()


1-18913
Reals
2002-01-21 19:53
2002.02.07
Как подцепить в процедуру копирования файла ProgressBar...


1-18799
VAB
2002-01-22 00:13
2002.02.07
Как сделать окно(форму) с кривыми границами


3-18763
Koks
2002-01-08 14:43
2002.02.07
QReport ?? !!! ???? !!!