Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 09:32
Оценка:
Добрый день!

Есть у меня задачка по обработке и зранению аудио/видео. Если с обработкой ещё более-менее понятно, то вот с хранением пока неразбериха, в основном из-за того, что помимо простого видео-файла есть ещё онлайн-потоки видео и аудио. Так как БД транзакционны (может есть и другие), то это накладывает ограничение, что данные не могут идти бесконечно. Набор данных, т.е. транзакция. В моём же случае поток как раз бесконечен (в идеале ).

И вопросы:

Есть ли какие-то решения по хранению real-time потоков данных в БД?
Какую БД можно использовать для такой работы?
Может быть вообще не использовать БД, а просто юзать файловую систему? У кого-то есть опыт разработки таких решений?

Пока есть только одна идея — написать утилиту, которая будет собирать поток в буфер и периодически сбрасывать в БД.

30.11.09 13:02: Перенесено модератором из 'Java' — Blazkowicz
Re: Хранение и обработка видео/аудио
От: Blazkowicz Россия  
Дата: 30.11.09 09:36
Оценка:
Здравствуйте, Polosatiy, Вы писали:

P>Может быть вообще не использовать БД, а просто юзать файловую систему? У кого-то есть опыт разработки таких решений?

А какие тут вообще бенефиты от использования БД? Файловая система однозначно. Постоянное чтение больших объемов данных из БД уложит не только сам сервер БД, но и канал между базой и приложением. Так что всем остальным запросам придется ждать достаточно долго.
Re[2]: Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 09:40
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Polosatiy, Вы писали:


P>>Может быть вообще не использовать БД, а просто юзать файловую систему? У кого-то есть опыт разработки таких решений?

B>А какие тут вообще бенефиты от использования БД? Файловая система однозначно. Постоянное чтение больших объемов данных из БД уложит не только сам сервер БД, но и канал между базой и приложением. Так что всем остальным запросам придется ждать достаточно долго.

Бенефиты от того, что в БД потоки можно параметризовать ещё куче параметров + репликация + нет кучи файлов вокруг. А как решается вопрос записи и чтения онлайн видео при использовании файловой системы? Вомможно ли сразу и писать в файл и читать из него on the fly?
Re[3]: Хранение и обработка видео/аудио
От: Blazkowicz Россия  
Дата: 30.11.09 09:46
Оценка:
Здравствуйте, Polosatiy, Вы писали:

P>Бенефиты от того, что в БД потоки можно параметризовать ещё куче параметров + репликация + нет кучи файлов вокруг.

Про параметризацию я не понял. Мы наверное говорим о какой-то конкретной БД? Репликация реализуется каким либо доступным решением.

P>А как решается вопрос записи и чтения онлайн видео при использовании файловой системы? Вомможно ли сразу и писать в файл и читать из него on the fly?

А зачем читать из файла в который ещё пишутся данные?

Я перенесу тему в соответствующий форум?
Re[3]: Хранение и обработка видео/аудио
От: and_hom  
Дата: 30.11.09 09:51
Оценка:
> Бенефиты от того, что в БД потоки можно параметризовать ещё куче
> параметров + репликация + нет кучи файлов вокруг. А как решается вопрос
> записи и чтения онлайн видео при использовании файловой системы?
> Вомможно ли сразу и писать в файл и читать из него on the fly?


1. Ссылку на файл можно держать в базе. Рядом можно сделать поле "файл
записан полностью".

2. Можно руками реализовать механизм shared/exclusive locks. Это не
очень сложно.

3. Ну, если, действительно репликация, может JCR?
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 10:00
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Polosatiy, Вы писали:


P>>Бенефиты от того, что в БД потоки можно параметризовать ещё куче параметров + репликация + нет кучи файлов вокруг.

B>Про параметризацию я не понял. Мы наверное говорим о какой-то конкретной БД? Репликация реализуется каким либо доступным решением.

Нет. О любой БД. Ну например нуджны данные кто записал, откуда, когда и т.п. Репликация поддерживается многими БД. На файлах репликацию можно через RAID настроить, как вариант.

P>>А как решается вопрос записи и чтения онлайн видео при использовании файловой системы? Вомможно ли сразу и писать в файл и читать из него on the fly?

B>А зачем читать из файла в который ещё пишутся данные?

Ну например есть плеер, который показывает видео с видеокамеры. В real-time режиме плеер работает напрямую с потоком без каких-либо файлов. Этот же поток пишется параллельно в архив. Но вдруг пользователю понадобилось промотать назад на 5 минут и посмотреть. Тут уже надо из архива, в который пишется поток, достать нужные данные и отдать на проигрывание. Т.е. получается и чтение и запись одновременно.

B>Я перенесу тему в соответствующий форум?

Да. Я просто не знал куда поместить, но так как меня это интересует в контексте Java, то сюда и поместил
Re[4]: Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 10:05
Оценка:
Здравствуйте, and_hom, Вы писали:


>> Бенефиты от того, что в БД потоки можно параметризовать ещё куче

>> параметров + репликация + нет кучи файлов вокруг. А как решается вопрос
>> записи и чтения онлайн видео при использовании файловой системы?
>> Вомможно ли сразу и писать в файл и читать из него on the fly?


_>1. Ссылку на файл можно держать в базе. Рядом можно сделать поле "файл

_>записан полностью".

Дык у него нет статуса "записан полностью". Он пишется постоянно.

_>2. Можно руками реализовать механизм shared/exclusive locks. Это не

_>очень сложно.
Спасибо. Посмотрю.

_>3. Ну, если, действительно репликация, может JCR?

JCR, как я понял, решает задачу только по добавленю метаданных к объектам.
Re[5]: Хранение и обработка видео/аудио
От: Blazkowicz Россия  
Дата: 30.11.09 10:08
Оценка:
Здравствуйте, Polosatiy, Вы писали:

P>Нет. О любой БД. Ну например нуджны данные кто записал, откуда, когда и т.п.

Метаданные, конечно же, в RDB.

P>Ну например есть плеер, который показывает видео с видеокамеры. В real-time режиме плеер работает напрямую с потоком без каких-либо файлов. Этот же поток пишется параллельно в архив. Но вдруг пользователю понадобилось промотать назад на 5 минут и посмотреть. Тут уже надо из архива, в который пишется поток, достать нужные данные и отдать на проигрывание. Т.е. получается и чтение и запись одновременно.

Так это уже бизнес требование, для которого нужно продумать решение. Достаточно разделить чтение и запись. А читаемые данные переодически обновлять... Вообще пока даже не ясно то ли у системы тасячи пользователей, которые постоянно получают контент, то ли десяток избранных, которым нужны наиболее актуальные данные с камер.

B>>Я перенесу тему в соответствующий форум?

P>Да. Я просто не знал куда поместить, но так как меня это интересует в контексте Java, то сюда и поместил
Если в обсуждаемом вопросе заменить Java на PHP, то ничего особо не изменися.
Re[6]: Хранение и обработка видео/аудио
От: srggal Украина  
Дата: 30.11.09 10:23
Оценка:
B>Здравствуйте, Polosatiy, Вы писали:

P>>Ну например есть плеер, который показывает видео с видеокамеры. В real-time режиме плеер работает напрямую с потоком без каких-либо файлов. Этот же поток пишется параллельно в архив. Но вдруг пользователю понадобилось промотать назад на 5 минут и посмотреть. Тут уже надо из архива, в который пишется поток, достать нужные данные и отдать на проигрывание. Т.е. получается и чтение и запись одновременно.

Неправда ваша, сдвижка времени -- проблема плеера, а не сервера...

Кроме того, обычно, запись настраивается не сквозняком а по так называемым Alarm'ам как-то: срабатывание датчика движения, считывание карты доступа итп...
Re[6]: Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 10:25
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Polosatiy, Вы писали:


P>>Нет. О любой БД. Ну например нуджны данные кто записал, откуда, когда и т.п.

B>Метаданные, конечно же, в RDB.

P>>Ну например есть плеер, который показывает видео с видеокамеры. В real-time режиме плеер работает напрямую с потоком без каких-либо файлов. Этот же поток пишется параллельно в архив. Но вдруг пользователю понадобилось промотать назад на 5 минут и посмотреть. Тут уже надо из архива, в который пишется поток, достать нужные данные и отдать на проигрывание. Т.е. получается и чтение и запись одновременно.

B>Так это уже бизнес требование, для которого нужно продумать решение. Достаточно разделить чтение и запись. А читаемые данные переодически обновлять... Вообще пока даже не ясно то ли у системы тасячи пользователей, которые постоянно получают контент, то ли десяток избранных, которым нужны наиболее актуальные данные с камер.

Пользователей, которым нужны актуальные данные может быть порядка 50. Не думаю что больше чем 100 когда-либо будет. Давайте резберем простой пример. Есть файл, в который пишется бесконечный поток. Понадобилось прочитать какую-то часть данных из файла. Не произойдёт ли в этот момент блокировка файла на чтение? Или как разделить чтение и запись? Писать сразу в 2 файла и когда надо что-то прочитать, то прекращать запись в один файл и открывать его на чтение?

B>>>Я перенесу тему в соответствующий форум?

P>>Да. Я просто не знал куда поместить, но так как меня это интересует в контексте Java, то сюда и поместил
B>Если в обсуждаемом вопросе заменить Java на PHP, то ничего особо не изменися.
Re[7]: Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 10:27
Оценка:
Здравствуйте, srggal, Вы писали:

B>>Здравствуйте, Polosatiy, Вы писали:


P>>>Ну например есть плеер, который показывает видео с видеокамеры. В real-time режиме плеер работает напрямую с потоком без каких-либо файлов. Этот же поток пишется параллельно в архив. Но вдруг пользователю понадобилось промотать назад на 5 минут и посмотреть. Тут уже надо из архива, в который пишется поток, достать нужные данные и отдать на проигрывание. Т.е. получается и чтение и запись одновременно.

S>Неправда ваша, сдвижка времени -- проблема плеера, а не сервера...

Про сдвижку времени не понял.

S>Кроме того, обычно, запись настраивается не сквозняком а по так называемым Alarm'ам как-то: срабатывание датчика движения, считывание карты доступа итп...


Да, может быть и так. Но это частный случай.
Re[7]: Хранение и обработка видео/аудио
От: srggal Украина  
Дата: 30.11.09 10:31
Оценка: +1
Здравствуйте, Polosatiy, Вы писали:

P>Пользователей, которым нужны актуальные данные может быть порядка 50. Не думаю что больше чем 100 когда-либо будет. Давайте резберем простой пример. Есть файл, в который пишется бесконечный поток. Понадобилось прочитать какую-то часть данных из файла. Не произойдёт ли в этот момент блокировка файла на чтение? Или как разделить чтение и запись? Писать сразу в 2 файла и когда надо что-то прочитать, то прекращать запись в один файл и открывать его на чтение?


Вы принципиально не рассматриваете буферизацию текущих видеоданных в памяти?
Re[7]: Хранение и обработка видео/аудио
От: Blazkowicz Россия  
Дата: 30.11.09 10:34
Оценка:
Здравствуйте, Polosatiy, Вы писали:

P>Пользователей, которым нужны актуальные данные может быть порядка 50. Не думаю что больше чем 100 когда-либо будет. Давайте резберем простой пример. Есть файл, в который пишется бесконечный поток. Понадобилось прочитать какую-то часть данных из файла. Не произойдёт ли в этот момент блокировка файла на чтение? Или как разделить чтение и запись? Писать сразу в 2 файла и когда надо что-то прочитать, то прекращать запись в один файл и открывать его на чтение?


Данные пишутся в один файл. Содержимое этого файла переодически реплицируется в файлы для чтения. Если предполагается что большенство пользователей будут получать именно оперативные данные, то их вообще лучше всего держать в памяти, чтобы уменьшить задержки из-за обновления файлов чтения.
Re[8]: Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 10:38
Оценка:
Здравствуйте, srggal, Вы писали:

S>Здравствуйте, Polosatiy, Вы писали:


P>>Пользователей, которым нужны актуальные данные может быть порядка 50. Не думаю что больше чем 100 когда-либо будет. Давайте резберем простой пример. Есть файл, в который пишется бесконечный поток. Понадобилось прочитать какую-то часть данных из файла. Не произойдёт ли в этот момент блокировка файла на чтение? Или как разделить чтение и запись? Писать сразу в 2 файла и когда надо что-то прочитать, то прекращать запись в один файл и открывать его на чтение?


S>Вы принципиально не рассматриваете буферизацию текущих видеоданных в памяти?


Рассматриваю, но не хранить же в памяти весь поток? А сколько хранить не понятно, так как пользователь может захотеть посмотреть хоть с начала всё. Я в самом первом посте писал, что пока есть только одна идея: хранить текущий поток в памяти и по достижении определенного условия (размер, время и т.п.), сохранять его в файл или БД при этом сам поток сбрасывать, высвобождая память. Таким образом можно разделить чтение и запись. Вот спросил, может у есть ещё варианты или вообще есть что-то готовое.
Re[8]: Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 10:41
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Polosatiy, Вы писали:


P>>Пользователей, которым нужны актуальные данные может быть порядка 50. Не думаю что больше чем 100 когда-либо будет. Давайте резберем простой пример. Есть файл, в который пишется бесконечный поток. Понадобилось прочитать какую-то часть данных из файла. Не произойдёт ли в этот момент блокировка файла на чтение? Или как разделить чтение и запись? Писать сразу в 2 файла и когда надо что-то прочитать, то прекращать запись в один файл и открывать его на чтение?


B>Данные пишутся в один файл. Содержимое этого файла переодически реплицируется в файлы для чтения. Если предполагается что большенство пользователей будут получать именно оперативные данные, то их вообще лучше всего держать в памяти, чтобы уменьшить задержки из-за обновления файлов чтения.


Оперативные данные, т.е. те, что онлайн, вообще с файлами не работают, а работают через real-time протоколы. Например RTSP. А каким образом реплицировать файл, открытый на постоянную запись?
Re[8]: Хранение и обработка видео/аудио
От: srggal Украина  
Дата: 30.11.09 10:42
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Polosatiy, Вы писали:


P>>Пользователей, которым нужны актуальные данные может быть порядка 50. Не думаю что больше чем 100 когда-либо будет. Давайте резберем простой пример. Есть файл, в который пишется бесконечный поток. Понадобилось прочитать какую-то часть данных из файла. Не произойдёт ли в этот момент блокировка файла на чтение? Или как разделить чтение и запись? Писать сразу в 2 файла и когда надо что-то прочитать, то прекращать запись в один файл и открывать его на чтение?


B>Данные пишутся в один файл. Содержимое этого файла переодически реплицируется в файлы для чтения. Если предполагается что большенство пользователей будут получать именно оперативные данные, то их вообще лучше всего держать в памяти, чтобы уменьшить задержки из-за обновления файлов чтения.

На самом деле все ещё интересней, если упростить:

Вводим понятие фрейма. Фрейм содержит точно n-секунд видео всегда занимающее m-байт... (если nсекунд видео не всегда равно m, то всё чуть сложней, нужен индекс файла)...

Данные обрабатываются фреймами: кэшируются, флушатся, отправляются на плеер...

Файл открыт на добавление и чтение...
Пдеер знает кол-во фреймов (окно) которое флушится за раз, и держит несколько окон, если перемотка не попадает в это окно, то фреймовая математика нам поможет..

Где-то так..
Re: Хранение и обработка видео/аудио
От: WolfHound  
Дата: 30.11.09 10:43
Оценка: 4 (1)
Здравствуйте, Polosatiy, Вы писали:

Я думаю тебе нужно посмотреть на http://www.ccnx.org/content/welcome
Сам я эту штуку не использовал но судя по архитектуре системы что-то лучше чем CCN для подобных задач придумать весьма не просто.
Ты с ходу получишь архивирование, реплицирование, кеширование, балансировку нагрузки, трансляцию множеству клиентов броадкастом и/или через промежуточные кеширующие серверы(те нагрузка на основной сервер будет смешной),...
Я сам занимался подобной задачей некоторое время назад. Жаль я тогда про CCN не знал.
Если придется делать подобное еще раз то я начну с серьезного тестирования CCN'а.
Начать можно отсюда http://www.ccnx.org/pipermail/ccnx-users/2009-October/thread.html смотри письма с заголовком VLC Plug-in там обсуждают почти твою задачу.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 13:27
Оценка:
Здравствуйте, srggal, Вы писали:

S>Здравствуйте, Blazkowicz, Вы писали:


B>>Здравствуйте, Polosatiy, Вы писали:


P>>>Пользователей, которым нужны актуальные данные может быть порядка 50. Не думаю что больше чем 100 когда-либо будет. Давайте резберем простой пример. Есть файл, в который пишется бесконечный поток. Понадобилось прочитать какую-то часть данных из файла. Не произойдёт ли в этот момент блокировка файла на чтение? Или как разделить чтение и запись? Писать сразу в 2 файла и когда надо что-то прочитать, то прекращать запись в один файл и открывать его на чтение?


B>>Данные пишутся в один файл. Содержимое этого файла переодически реплицируется в файлы для чтения. Если предполагается что большенство пользователей будут получать именно оперативные данные, то их вообще лучше всего держать в памяти, чтобы уменьшить задержки из-за обновления файлов чтения.

S>На самом деле все ещё интересней, если упростить:

S>Вводим понятие фрейма. Фрейм содержит точно n-секунд видео всегда занимающее m-байт... (если nсекунд видео не всегда равно m, то всё чуть сложней, нужен индекс файла)...

Тут всё зависит от формата видео, механизмов сжатия и т.п. Так что будет как раз сложней. Плюс в этом случае понятие фрейма должно настраиваться.

S>Данные обрабатываются фреймами: кэшируются, флушатся, отправляются на плеер...


S>Файл открыт на добавление и чтение...

S>Пдеер знает кол-во фреймов (окно) которое флушится за раз, и держит несколько окон, если перемотка не попадает в это окно, то фреймовая математика нам поможет..

S>Где-то так..


Идею я понял. Буду думать. Спасибо!
Re[2]: Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 13:28
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Polosatiy, Вы писали:


WH>Я думаю тебе нужно посмотреть на http://www.ccnx.org/content/welcome

WH>Сам я эту штуку не использовал но судя по архитектуре системы что-то лучше чем CCN для подобных задач придумать весьма не просто.
WH>Ты с ходу получишь архивирование, реплицирование, кеширование, балансировку нагрузки, трансляцию множеству клиентов броадкастом и/или через промежуточные кеширующие серверы(те нагрузка на основной сервер будет смешной),...
WH>Я сам занимался подобной задачей некоторое время назад. Жаль я тогда про CCN не знал.
WH>Если придется делать подобное еще раз то я начну с серьезного тестирования CCN'а.
WH>Начать можно отсюда http://www.ccnx.org/pipermail/ccnx-users/2009-October/thread.html смотри письма с заголовком VLC Plug-in там обсуждают почти твою задачу.

Спасибо. Буду смотреть. Пока не понял как это работает Чё-то с доками и описанием фич у них проблемы...
Re[3]: Хранение и обработка видео/аудио
От: WolfHound  
Дата: 30.11.09 14:09
Оценка:
Здравствуйте, Polosatiy, Вы писали:

P>Спасибо. Буду смотреть. Пока не понял как это работает Чё-то с доками и описанием фич у них проблемы...

Думаю первые 2 pdf'ника прольют свет на то что это такое
http://www.ccnx.org/content/content-centric-networking-resources
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[4]: Хранение и обработка видео/аудио
От: Polosatiy  
Дата: 30.11.09 14:24
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Polosatiy, Вы писали:


P>>Спасибо. Буду смотреть. Пока не понял как это работает Чё-то с доками и описанием фич у них проблемы...

WH>Думаю первые 2 pdf'ника прольют свет на то что это такое
WH>http://www.ccnx.org/content/content-centric-networking-resources

Да. Я уже в презентацию вникаю Идея в общем понятная. Можно что угодно с чем угодно связать и при этом не испоьлзуя IP адреса и т.п.
Re[5]: Хранение и обработка видео/аудио
От: WolfHound  
Дата: 30.11.09 18:13
Оценка:
Здравствуйте, Polosatiy, Вы писали:

P>Да. Я уже в презентацию вникаю Идея в общем понятная. Можно что угодно с чем угодно связать и при этом не испоьлзуя IP адреса и т.п.

Идея понята не правильно.
Система не занимается связью чего угодно с чем попало. Этим занимается сеть на основе IP.
CCN вообще не волнуют конкретные машины. Вся работа построена вокруг контента. Именно это и обеспечивает дикую масштабируемость и отказоустойчивость системы в целом.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.