Videor venisse
128 / 109 / 6
Регистрация: 19.02.2010
Сообщений: 221
1

Организация видеоконференции с использованием пакета DSPack

24.03.2010, 13:41. Показов 10275. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет
Изначально воспользовался пакетом DSPack (обёртка над DirectShow). Обработал захват видео с веб-камеры и запись в avi файл. Это было не сложно, быстро и действительно удобно. Загвоздка возникла в организации видеоконференции. Одна и та же программа будет и сервером и клиентом.
Варианты компонентной организации передачи видео и аудио по сети:
1) компоненты Indy: IdTCPClient, IdTCPServer;
2) компоненты Internet: TClientSocket, TServerSocket;
3) компоненты DSPack: TASFWriter;
4) пакет DSPack, класс TSock, разработанный в одной из демок к этому пакету.
Вопрос в том, какими компонентами наиболее эффективно и быстро можно организовать видеоконференцию по сети, и в какой технологической последовательности?
Отдельный вопрос по компоненту TASFWriter, т.к. я уже завязался с пакетом DSPack. Подходит ли он для организации видеоконференции (видеочата)?
Читал на форумах и статьях, что TASFWriter может по сети передавать видеофайлы, но рабочего исходника или программы с использованием этого компонента добыть не удалось.
Читал также, что одни создают картинки весом 512 байт, другие используют картинки до 6 кБ, и т.о. передают их по сети с незначительной задержкой. Из этих картинок формируется непрерывное изображение собеседника по ту сторону чата.
Для начала разобраться бы с видео, а с аудио потом, и с тем как их соединять, разделять, или сразу раздельно посылать и принимать.
И если можно, набросайте рабочие куски кода или дайте ссылку на исходники (может даже на другом языке).
Заранее благодарен.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2010, 13:41
Ответы с готовыми решениями:

Delphi с использованием пакета Mathcad
Пишу программу на Delphi с использованием пакета Mathcad. Нужно передавать массив в Mathcad, в...

организация пакета беспроводной сети
Доброго времени суток!!! помогите плиз... задали дз- организация пакета беспроводной связи.....(я...

Решение задачи с использованием пакета concurrent
Здравствуйте. Задача такая: существует некий маршрут для автобусов, несколько остановок, необходимо...

Создание приложений с использованием пакета java.awt
создание приложении с использованием пакета java.awt Написать программу, которая выставляет оценки...

16
0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 3
24.05.2010, 16:57 2
Цитата Сообщение от blazonic Посмотреть сообщение
Всем привет
Изначально воспользовался пакетом DSPack (обёртка над DirectShow). Обработал захват видео с веб-камеры и запись в avi файл. Это было не сложно, быстро и действительно удобно. Загвоздка возникла в организации видеоконференции. Одна и та же программа будет и сервером и клиентом.
Варианты компонентной организации передачи видео и аудио по сети:
1) компоненты Indy: IdTCPClient, IdTCPServer;
2) компоненты Internet: TClientSocket, TServerSocket;
3) компоненты DSPack: TASFWriter;
4) пакет DSPack, класс TSock, разработанный в одной из демок к этому пакету.
Вопрос в том, какими компонентами наиболее эффективно и быстро можно организовать видеоконференцию по сети, и в какой технологической последовательности?
Отдельный вопрос по компоненту TASFWriter, т.к. я уже завязался с пакетом DSPack. Подходит ли он для организации видеоконференции (видеочата)?
Читал на форумах и статьях, что TASFWriter может по сети передавать видеофайлы, но рабочего исходника или программы с использованием этого компонента добыть не удалось.
Читал также, что одни создают картинки весом 512 байт, другие используют картинки до 6 кБ, и т.о. передают их по сети с незначительной задержкой. Из этих картинок формируется непрерывное изображение собеседника по ту сторону чата.
Для начала разобраться бы с видео, а с аудио потом, и с тем как их соединять, разделять, или сразу раздельно посылать и принимать.
И если можно, набросайте рабочие куски кода или дайте ссылку на исходники (может даже на другом языке).
Заранее благодарен.

а ты написал эту программу? нужна помощь с передачей изображения с веб камеры по сети
0
Videor venisse
128 / 109 / 6
Регистрация: 19.02.2010
Сообщений: 221
26.05.2010, 11:06  [ТС] 3
На Delphi я программу не доделал, она так и осталась на уровне снятия видеоизображения и звука и записи их в файл, это то, что позволяет сделать без проблем пакет DSPack.
Но он не содержит механизмов для передачи по сети отдельных файлов, хотя бы таких как отдельные изображения (кадры), снятые с камеры. Компонент TASFWriter для этих целей не подходит.
Для того, чтобы отослать отдельный файл, его нужно «грабить» с камеры компонентом TSampleGrabber этого пакета. Затем передавать и принимать компонентами TClientSocket, TServerSocket или компонентами IdTCPClient, IdTCPServer.
Таким образом, для начала нужно отдельно овладеть пакетом DSPack, и отдельно принципами передачи файлов по сети, и формированием потоков (компонент TStream) для передачи этих файлов.
Разработку видеочата с помощью Delphi и DSPack я забросил до поры. Я быстрее программу видеочата реализовал на другом языке.
Заранее оговариваюсь, что кода своих программ предоставлять не буду, т.к. они представляют коммерческий интерес. Своих упрощённых обучающих примеров пока нет, но вот сам DSPack и Интернет кишат такими примерами.
1
1 / 1 / 0
Регистрация: 21.07.2010
Сообщений: 4
21.07.2010, 07:01 4
blazonic,
Я тоже пишу такую же прогу, и с теми же компонентами:dspack,server/client socket!
И точно так же воспроизвожу видео(но на диск не сохраняю) и samplegrabber'ом вытягиваю bitmap, потом передаю по сокетам!
В принципе у меня всё получилось, НО небольшая трабла с приёмом сокета:
картинка передаётся по частям, и в конечном итоге не удаётся её склеить и отобразить в image
Передача звука отдельная проблема, но проблема тоже я так думаю легко решаемая)))
Могу скинуть исходник,но думаю у тебя тож самое))
Может кто нить поможет куском кода для передачи bitmap > 512kb и склеивания этих кусочков в конечном итоге!
Заранее спасибо,Александр!
1
Videor venisse
128 / 109 / 6
Регистрация: 19.02.2010
Сообщений: 221
21.07.2010, 10:18  [ТС] 5
Как я уже писал в предыдущем посте, разработку видеочата с помощью Delphi и DSPack я забросил до поры. Я полностью реализовал видеочат (IP конференцию) на другом языке и пока под локальную сеть. Склеиванием частей изображения пока не занимался. Кадр с камеры передаю целиком, т.к. локальная сеть позволяет оперировать намного большими размерами файлов. Но, тем не менее, кадр передаю в формате jpg, и такой кадр весит 60-100 кБ. Поэтому рекомендую изображение переводить из формата bmp в формат jpg и отсылать его по любой сети целиком, т.о. избавиться от алгоритмов склеивания кусков изображения и решить эту задачу намного быстрее и проще. При приёме изображения его формат, если необходимо, перевести из jpg назад в bmp и вывести на камеру абонента.
А позднее, если позволит время, поупражняться в склеивании частей изображения.
Я так понимаю, ты задал довольно большое разрешение для снятия с web-камеры или видеокамеры?
Если с web-камеры, то у них изначально не очень-то разрешающая оптика и даже большие изображения выглядят некачественно. А если ещё учесть, что передаются отдельные кадры за определённый промежуток времени, да ещё учесть сетевую задержку передачи кадра, то торможения изображения на камере абонента будут, так или иначе, портить впечатление от увиденного. Например, в Скайпе это выглядит просто сносно, потому что хорошо, что хотя бы эта у людей возможность есть.
А если учесть, что большинство видеочатов должны быть преимущественно не однопользовательскими, а многопользовательскими, то картинки большого разрешения будут вообще весьма проблематично по скорости передаваться по любой сети.
1
1 / 1 / 0
Регистрация: 21.07.2010
Сообщений: 4
21.07.2010, 11:20 6
blazonic,
Если не секрет, на каком языке написали?)
На счёт jpg тож подумывал...так и сделаю))
а с передачей аудио не думали как разобраться?по форумам полазил, нашёл интересные советы, но хотелось бы узнать как Вы планировали это реализовать
0
Videor venisse
128 / 109 / 6
Регистрация: 19.02.2010
Сообщений: 221
21.07.2010, 13:31  [ТС] 7
В итоге реализовал программу на C#, т.к. в нём разработчиками языка уже внесены классы, работающие с соответствующими устройствами, в данном случае и с микрофоном. Просто создаётся буфер, в него записывается звук с микрофона и через определённый интервал времени посылается по сети абоненту, который слышит его либо в наушники, либо в акустическую систему. Определённая функция в C# в данном случае, отвечающая за непосредственный механизм накопления звука в буфере и его посылку по сети, просто делегируется (delegate), что в какой-то степени эквивалентно созданию потока (thread), поэтому посылка звука независима от основного потока.
Основной механизм работы со звуком: приём звука через микрофон и запись его в буфер, содержимое буфера вложить в сокет и отправить содержимое по сети, с той стороны принять сокетом содержимое в определённый буфер, буфер заложить в компонент, выводящий его содержимое через акустику. Не забывать при этом буферы после использования очищать для приёма и передачи нового содержимого.
Кроме того, когда компоненты создают разработчики языка, то есть большая степень уверенности, что эти компоненты достаточно качественно протестированы.
На Delphi немного иначе. Удобство работы со всевозможными устройствами разрабатывают сторонние программисты. В среде Delphi вам потребуется для удобства воспользоваться пакетами сторонних разработчиков. Например, попробовать пакеты AsyncPro (компоненты ApdSapiPhone и ApdVoIP) и Audio (компоненты DXAudioIn, DXAudioOut, ASIOAudioIn, ASIOAudioOut, WMStreamedIn и WMStreamedOut), но с этими компонентами я пока не работал, по мнемонике и по их свойствам можно догадываться, что некоторые из них принимают звук с микрофона, некоторые выводят звук через акустику, а некоторые создают потоки для передачи их по сети. С ними вам придётся повозиться.
Эти пакеты без труда найдёте и скачаете в Инете.
И почему-то я вам не смог отправить личное сообщение на форуме, у вас что-то с настройками профайла?
2
1 / 1 / 0
Регистрация: 21.07.2010
Сообщений: 4
21.07.2010, 17:30 8
blazonic,
У меня вообще что то с акаунтом не то...даже в настройки свои зайти не могу...
Вот мыло если что:starlanc@yandex.ru
За информацию огромное Спасибо)))
0
v1m
12.08.2010, 19:00 9
вообще я представляю так это
есть 5 потока
1 главный
2 звук записывает и отправляет
3 звук принимает и обрабатывает
4 грабит изображение с камеры и отправляет
5 принимает и составляет принятые изображения
вопрос!
1 с помощью чего записывать звук в буффер?
2 как грабить изображение сразу в jpeg что бы размер нормальный был а не 500>
Videor venisse
128 / 109 / 6
Регистрация: 19.02.2010
Сообщений: 221
13.08.2010, 00:29  [ТС] 10
Цитата Сообщение от v1m Посмотреть сообщение
с помощью чего записывать звук в буффер?
Если использовать DSPack, то для приминения звукового устройства использовать компонент TFilter. А дальше вам надо освоить работу с сокетами, чтобы из TFilter брать звук и запихивать в буфер, а сам буфер запихивать в сокет-клиент и передавать по сети на сокет-сервер.
Но дело в том, что я это пока только предполагаю. Эта задача на Делфи отошла в сторону, на неё пока времени нет.
Цитата Сообщение от v1m Посмотреть сообщение
как грабить изображение сразу в jpeg что бы размер нормальный был а не 500>
Грабить позволяет компонент TSampleGrabber. У него есть странные Суб_Типы: MJPG, IJPG, OtJpeg.
Но грабить им я тоже не успел. Предполагаю, что эти субтипы помогут грабить сразу в Jpeg, что ещё лучше. Этот Jpeg через сокет-сервер принимать и выводить сразу без конвертаций из Bmp.
Разборки с этим пакетом отложены на неопределённое время.
Вы скачайте его, установите. К нему даются очень хорошие примеры, в том числе и по захвату изображения с вебкамеры.
1
Videor venisse
128 / 109 / 6
Регистрация: 19.02.2010
Сообщений: 221
05.09.2010, 18:30  [ТС] 11
Проблема по данной теме решена, тему можно закрывать, всем спасибо.
0
1 / 1 / 0
Регистрация: 30.10.2010
Сообщений: 9
03.03.2011, 18:33 12
TourerX,
привет Мне вот тоже нужна момощь .передачи по сети данных видео .
Можете помочь? bleznec_ua @ mail.ru
0
7 / 1 / 0
Регистрация: 25.02.2010
Сообщений: 8
15.06.2011, 14:49 13
Цитата Сообщение от blazonic Посмотреть сообщение
В итоге реализовал программу на C#
Кстати, в Visual C# имеется интересный компонент TableLayoutPanel. Он позволяет избежать многооконности приложения за счёт добавления на одну форму нескольких таких компонентов TableLayoutPanel, на которых в свою очередь размещаются другие компоненты пользовательского интерфейса.
1
3 / 3 / 0
Регистрация: 31.07.2009
Сообщений: 201
06.01.2012, 13:08 14
Ребят, подскажите где можно скачать WMStreamedOut ? Буду нереально признателен!
0
Videor venisse
128 / 109 / 6
Регистрация: 19.02.2010
Сообщений: 221
10.01.2012, 21:17  [ТС] 15
Цитата Сообщение от blazonic Посмотреть сообщение
Например, попробовать пакеты AsyncPro (компоненты ApdSapiPhone и ApdVoIP) и Audio (компоненты DXAudioIn, DXAudioOut, ASIOAudioIn, ASIOAudioOut, WMStreamedIn и WMStreamedOut)
ищи полноценный пакет Audio
0
3 / 3 / 0
Регистрация: 31.07.2009
Сообщений: 201
11.01.2012, 19:44 16
Цитата Сообщение от blazonic Посмотреть сообщение
ищи полноценный пакет Audio
Где найти подскажи!
0
Videor venisse
128 / 109 / 6
Регистрация: 19.02.2010
Сообщений: 221
11.01.2012, 21:00  [ТС] 17
Ну где искать, в Инете, где же ещё.
У меня это всё давно было, похоже, что твой компонент входит в состав NewAC (New Audio Components) – набор Delphi-компонентов, предназначенных для работы со звуком.
Ищи в Инете пакет NewAC (New Audio Components) для Delphi.
0
11.01.2012, 21:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2012, 21:00
Помогаю со студенческими работами здесь

Решение задачи с использованием пакета MS Excel+VBA
Пожалуйста, помогите решить задачу! На обогатительной фабрике обогащение руды ведется на трех...

Построение изображения на языке паскаль с использованием пакета Graph
Структура программы на языке Паскаль представлена ниже: Uses Graph, Crt; var ErrorCode :...

Установка deb пакета с использованием исходных данных( не через rpm)
Нужно создать и установить deb пакет, используя только исходники.

Метод итерации решения систем линейных уравнений с использованием прикладного пакета MathCad
Добрый день, друзья. Подскажите или помогите с решением примеров по этой теме. Курсовую пишу, а с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru