Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.005 c
14-18964
VV
2001-12-10 16:28
2002.02.07
AMD или Pentium


3-18742
Yu
2002-01-11 10:34
2002.02.07
SQL - очень простой вопрос :-)


3-18771
IgorMIR
2002-01-11 19:43
2002.02.07
как изменить несколько записей, используя TUpdateSql


3-18744
Юлик
2002-01-11 10:58
2002.02.07
Глюк при выполнении запроса


3-18705
kd
2002-01-09 17:04
2002.02.07
Midas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский