Помощ - Търси - Регистрирани - Календар
Пълна версия: mIRC VoIP & video transfer
UniBG Forums > Дискусии > Dexter's Lab > Програмиране
int21h
Здравейте.

От известно време една идея ми бръмчи в главата и забелязвам, че не само в моята, но и в други глави бръмчи (макар и малко по-различна).

Става въпрос за VoIP & video transfer в IRC. Митака тук беше споделил идеята си за нов IRC клиент, който е ICQ/Skype-подобен и с подръжка на VoIP/video transfer, но честно казано идеята не ми харесва по две причини:
- изисква астериск сървър(и), който(които) просто няма къде да се пусне
- става въпрос за нов IRC клиент, който не само, че ще отнеме много човеко-часа писане, но и няма да се използва. IRC потребителите до голяма степен са свикнали с добре познатия ни mIRC и едва ли ще го заменят за нещо което прилича на Skype или ако ще го заменят директно ще си ползват Skype..

И докато говорим за нов IRC клиент аз ще продължа да бъде сигурен, че mIRC е най-добрият IRC клиент. Просто защото mIRC е най-customizable. Тук моля почитателите и потребителите на други IRC клиенти (X-Chat, irssi, bitchX и др.) да не се впускат в спорове с мен на тема "Кой е най-добрият IRC клиент и има ли той почва у нас?". Дори и да греша и mIRC да не е най-добрият IRC клиент, то той винаги ще си остане най-масовият, което обезсмисля спора.

Една от лошите страни на mIRC е, че не е open-source, което до някъде връзва ръцете на програмистите, които се опитват да напишат някакви подобрения. Но, хубавото на mIRC е, че работи с динамични библиотеки (DLLs).

Накратко, моята идея е да се напише модул, който осъществява VoIP & video transfer, като този модул ще бъде под формата на динамична библиотека за mIRC. Свързването ще бъде peer2peer, от което следва, че няма нужда от допълнителни сървъри. При стартирането на audio/video chat, Потребител1 ще се опита да се свърже директно с Потребител2. Ако Потребител2 няма реален IP адрес или по някаква друга причина връзката не може да се осъществи (например защитна стена), то модулът ще опита свързване в обратната посока Потребител2->Потребител1. Ако и този начин на свързване се провали, просто клиентите няма да могат да ползват услугата. Когато един клиент се свърже с друг на практика ще имаме client-server връзка. След като бъде осъществена тази връзка, към server-а ще могат да се закачат и други клиенти за да се получи конферентна връзка, но само за audio (поне не се сещам как би могло да стане и за video).
Свързването и предаването на audio/video сигнала ще се осъществява от динамичната библиотека, която ще бъде извикана в mIRC. Също така ще се създаде нов прозорец, в който ще има някакви настройки за audio/video сигнала, тип на свързване, портове (и т.н.) и прозорче с видео кадрите които се получават и които се изпращат. Като този прозорец ще бъде част от mIRC-а, но ще може да се deattach-ва извън mIRC. Deattach-натия прозорец ще има опция "always on top". В същият този прозорец ще могат да се accept-ват или reject-ват requests за нормална или конферентна връзка.
Също така, можем да почерпим доста идеи от начина на работа на Skype (случайни портове, криптиране на връзката, audio/video протоколи и т.н.)

Всичко, предполагам, звучи много добре на думи, но трябва и да се напише. Освен динамичната библиотека ще трябва и солиден mIRC scripting, който да работи с тази библиотека (предимно подаване на events към библиотеката и приемането им).

Ако има желаещи доброволци, които искат да се включат в начинанието, тази е темата, в която могат да кажат.
Ако някой има нужда от повече информация преди да реши дали се включи, отново това е темата. Питайте смело.

Прилагам и кратко ръководство за писане на mIRC DLLs и тяхното използване.
Натисни да отвориш файла

Best regards.
Mitak
Много добра идея.
Всъщност, не се бях замислял, че това може да стане и с мирк модул, вместо с нов клиент.
Ако има някакъв примерен модул..... например, има много open source клиенти, които подържат SIP.

Иначе това:
QUOTE(int21h @ Jun 15 2008, 03:37 PM) *
Свързването ще бъде peer2peer, от което следва, че няма нужда от допълнителни сървъри. При стартирането на audio/video chat, Потребител1 ще се опита да се свърже директно с Потребител2. Ако Потребител2 няма реален IP адрес или по някаква друга причина връзката не може да се осъществи (например защитна стена), то модулът ще опита свързване в обратната посока Потребител2->Потребител1. Ако и този начин на свързване се провали, просто клиентите няма да могат да ползват услугата.


се избегва с астериск smile.gif Там няма значение какъв ти е ИП адреса.
Мисля, че ще има кой да даде 400-500 лева за една машинка. Ако трябва ще се съберат от "дарения", не иска и кой знае какъв трафик - към 64к на разговор.

Определено съм ЗА започването на такъв проект.
Polizei
За mIRC има DLL-та, пък за *nix има .so smile.gif
Един евентуален модул за разните IRC клиенти би бил наистина добро нововъведение.
Всъщност, дори написването му няма да е кой знае колко сложно, имайки предвид сравнително големия набор от opensource voip messengers...
Единствения малък проблем остава direct connection-а, т.е. зависимостта от външен адрес поне на единия от клиентите - нещо, което Skype/MSN/Google елиминират с т.нар. relays (голяма глупост, но какво да се прави - при грубо 25000 БТК абоната, от които 24900 не могат да си отворят портовете на модемите, този клиент не е много приложим, и все пак се налага някаква подобна "врътка")
Иначе съм твърдо "ЗА" и с трите крака :>
Mitak
Както казах - идеята ми харесва като цяло.
Но не ми харесва това, че част от потребителите няма да могат да се възползват от тази екстра, и то не малка част.
Точно за това съм привърженик на идеята да има един астериск - тогава всички тези недостатъци се избягват. Отделен плюс е, че може да се ползва със всеки един SIP клиент.
int21h
Безумно е да мислим, че някой ще отдели реални пари за IRC при положение, че самата IRC идея в световен мащаб умира.

Безумно е да мислим, че един астериск сървър ще може да издържи на натоварването от 5000 едновременни разговора. И това е audio-то. А видеото? Каква свързаност трябва да има този сървър и с каква линия трябва да разполага?

И не на последно място, когато този сървър падне, никой няма да може да използва услугата. Докато при p2p нещата стоят съвсем различно. Помислете..

Иначе, и аз виждам предимствата на астериск сървър-а, не съм кон с капаци, но виждам и недостатъците.

Колкото до БТК потребителите, просто трябва да завъртят един телефон на ADSL support-а и да кажат "отворете ми портовете".
Mitak
QUOTE(int21h @ Jun 16 2008, 10:51 AM) *
Безумно е да мислим, че някой ще отдели реални пари за IRC при положение, че самата IRC идея в световен мащаб умира.

Безумно е да мислим, че един астериск сървър ще може да издържи на натоварването от 5000 едновременни разговора. И това е audio-то. А видеото? Каква свързаност трябва да има този сървър и с каква линия трябва да разполага?

И не на последно място, когато този сървър падне, никой няма да може да използва услугата. Докато при p2p нещата стоят съвсем различно. Помислете..

Иначе, и аз виждам предимствата на астериск сървър-а, не съм кон с капаци, но виждам и недостатъците.

Колкото до БТК потребителите, просто трябва да завъртят един телефон на ADSL support-а и да кажат "отворете ми портовете".


Така е донякъде.
От опит знам, че астериска не иска кой знае какви ресурси и трафик - зависи какви кодеци ползваш. p2p е вариант (нещо подобно на дцц чата в мирк).... но тогава - трябва да се реши какъв точно протокол ще се ползва за осъществяване на връзката. Не съм търсил, но сигурно има готови п2п програмки, които могат да послужат за пример.
Ама ще стане едно мазало с портовете.... ще трябва мирк скрипт, който при опит за осъществяване на видео/аудио повикване да извиква модула, и по някакъв начин двата клиента да се разберат на кой порт ще комуникират.
SmasHinG
А една донякъде и моя идея която се е зародила отдавна има няма 2год. насам. Та наистина е супер като цяло идеята стига да има кой да я реализира. Иначе добре е да има и длл за мирк добре и с астериск сървър и отделно флаш клиент някъв.Т.е като цяло е добре и само длл да се направи и отделен мирк клиент. Специално на мен всичко ми допада стига да работи качествено както се полага. За програмиране специално с мирк скриптинг и етц. ме няма ама ако има решение да е на астериск сървър може да измисля нещо да помогна с дадения сървър като мога да гарантирам добра свързаност че ще има сървъра и като цяло ъптайм. Все пак ще е в нетера вие си направете извода дали е добре или не. wink.gif
dreben
Доколкото успях да схвана това чудо, което подкарва телефониите е някакъв софтуер със свободен код. Няма ли да е по-добре да се имплементира този софтуер в нашия си ратбокс ирцд, да се подкара тестово и след това да се пусне като нова официална версия. От клиентска страна ще се намерят много ентусиасти да пишат и все ще излезе нещо /а ако вземе та се наложи защо не и официалните писари да го добавят като фийчър към клиентите/. Сървърите си ги има, просто трябва да се наложи това нещо в официална версия и да си върви навсякъде. Аз съм лаик и нямам идея кое колко е възможно де, но има хора тука, които могат да се произнесат как, колко и кога. Защо-то е ясно отдавна ;р


И една друга идея ми хрумна днес, докато четях темата. Тази мисъл дали не му е минала през кратунката и на някой друг вече.? А въпросът е.. какво го е накарало да не я реализира досега.? ;) Щото тоя протокол не загива от вчера..
Mitak
QUOTE(dreben @ Jun 16 2008, 12:50 PM) *
Доколкото успях да схвана това чудо, което подкарва телефониите е някакъв софтуер със свободен код. Няма ли да е по-добре да се имплементира този софтуер в нашия си ратбокс ирцд, да се подкара тестово и след това да се пусне като нова официална версия. От клиентска страна ще се намерят много ентусиасти да пишат и все ще излезе нещо /а ако вземе та се наложи защо не и официалните писари да го добавят като фийчър към клиентите/. Сървърите си ги има, просто трябва да се наложи това нещо в официална версия и да си върви навсякъде. Аз съм лаик и нямам идея кое колко е възможно де, но има хора тука, които могат да се произнесат как, колко и кога. Защо-то е ясно отдавна ;р


И една друга идея ми хрумна днес, докато четях темата. Тази мисъл дали не му е минала през кратунката и на някой друг вече.? А въпросът е.. какво го е накарало да не я реализира досега.? wink.gif Щото тоя протокол не загива от вчера..


Доста трудоемко ще е да се имплементира в ирцд-тата... просто защото трябва да им се добави например СИП подръжка, което си се явява втори демон. Идеята за п2п връзка чрез модул за мирк като че ли е най-добра за момента - изисква най-малко ресурс и време. Остава недостатъка с осъществяването на самата връзка - как ще става то, какви портове ще се ползват, как ще се заобиколи евентуално firewall и т.н. - може би по модела на скайп? Това трябва да се обмисли доста сериозно.
int21h
peer2peer връзката няма да бъде съществен недостатък предвид факта, че ще подържа конферентна връзка. Дори да има двама потребителя, които нямат реални IP-та и толкова искат да си говорят, винаги могат да накарат някой приятел с реално IP да направи "сървър". Т.е. и двамата да се connect-нат към него.

Първото, което трябва да решим е какъв компилатор ще се използва.
След това трябва да направим един, макар и груб, списък на задачките, да ги систематизираме и да видим кой с какво има желание да се захване.

На пръв поглед, нещата за които се сещам са:
- Какъв компилатор ?
- Какъв audio протокол ?
- Какъв видео протокол ?
- Какви портове ще се използват ?
- Начини за заобикаляне на защитна стена ?
- GUI
Mitak
QUOTE(int21h @ Jun 16 2008, 01:28 PM) *
На пръв поглед, нещата за които се сещам са:
- Какъв компилатор ?
- Какъв audio протокол ?
- Какъв видео протокол ?
- Какви портове ще се използват ?
- Начини за заобикаляне на защитна стена ?
- GUI


Няма какво да мислим аудио/видео протокол - просто ползваме SIP. Той си подържа и аудио и видео. Има досатъчно опен сорс сип клиент/сървър приложения.

Основният проблем ще бъде с портовете и защитните стени.
СИП протокола например ползва порт 5060 и са му нужни динамично между 10000-20000 (поне на астериска иска да са "отворени" в защитната стена, в случая няма знаение, че говоря за астериск - СИП си е СИП независимо с какво го ползваш, давам просто пример). БТК доколкото знам филтрират порт 5060 за АДСЛ клиентите, което при мен наложи да направя "врътка" и да го пусна на 6050 smile.gif. Това няма да е проблем - просто може да заменим 5060 с каквото си поискаме.

Не съм детайлно запознат със СИП протокола - аз просто го ползвам на готово, но не пречи да го поразуча.
GUI - максимално опростено. Един контрол на звука, един прозорец за видеото, някаква настройка на камерата и толкова.
Без излишни шарении и глупости.

Компилатор - може да е С, С++, С#.... избор голям, но трябва да се спрем на едно... може и визуал базик, последно писах софтуер за управление на двигатели на ВБ smile.gif
int21h
QUOTE(Mitak @ Jun 16 2008, 02:43 PM) *
Няма какво да мислим аудио/видео протокол - просто ползваме SIP. Той си подържа и аудио и видео. Има досатъчно опен сорс сип клиент/сървър приложения.

Основният проблем ще бъде с портовете и защитните стени.
СИП протокола например ползва порт 5060 и са му нужни динамично между 10000-20000 (поне на астериска иска да са "отворени" в защитната стена, в случая няма знаение, че говоря за астериск - СИП си е СИП независимо с какво го ползваш, давам просто пример). БТК доколкото знам филтрират порт 5060 за АДСЛ клиентите, което при мен наложи да направя "врътка" и да го пусна на 6050 :). Това няма да е проблем - просто може да заменим 5060 с каквото си поискаме.

Не съм детайлно запознат със СИП протокола - аз просто го ползвам на готово, но не пречи да го поразуча.
GUI - максимално опростено. Един контрол на звука, един прозорец за видеото, някаква настройка на камерата и толкова.
Без излишни шарении и глупости.

Компилатор - може да е С, С++, С#.... избор голям, но трябва да се спрем на едно... може и визуал базик, последно писах софтуер за управление на двигатели на ВБ :)


Предлагам компилаторът да е DevC++, предимно защото е безплатен. Иначе, бих предпочел C# и Visual Studio 2008, но не желая да попадам под ударите на закона. (А и Polizei ще се изприщи като види C#) :)

За GUI-то смятам, че трябва да има още малко опции, но това е с най-нисък приоритет за момента. И празен екран с 2 бутона ще върши работа ако всичко останало работи.

Колкото до протокола, аз също ще го тествам СИП и ще споделя впечатленията си. Ще разгледам и кода на астериск-а.. Все пак ще имаме в библиотеката не само клиент, но и сървър. Може дори по-голямата част от този сървър да вземем на готово от астериск.
Polizei
Компилатора не е проблем, избора на език е по-конкретно проблем.
Като цяло C звучи най-правилния избор, с оглед на 'преносимостта му' ...
C++ също е някакъв вариант, въпреки че не виждам на кой му е нужно обектизиране на код, лесно решим процедурно...

Погледнато реално, ако кода се напише на C, не изглежда кой знае какъв проблем да се напишат такива модули и за останалите IRC клиенти, като XChat, irssi, и прочее (bitchx е доста unsupported, imho)

Иначе съм напълно съгласен с int21h, gcc е най-удачния избор на компилатор, въпреки че за windows винаги има и lcc32 smile.gif
mix25
QUOTE
Дори да има двама потребителя, които нямат реални IP-та и толкова искат да си говорят, винаги могат да накарат някой приятел с реално IP да направи "сървър". Т.е. и двамата да се connect-нат към него.


Не мисля че ако клиента е зависим от трето лице ще има голям интерес във ползването на тази апликация.(и като цяло не само във тази)
int21h
QUOTE(mix25 @ Jun 17 2008, 10:02 PM) *
Не мисля че ако клиента е зависим от трето лице ще има голям интерес във ползването на тази апликация.(и като цяло не само във тази)


Тази зависимост ще съществува само и единствено ако двамата потребители, които искат да осъществят audio/video chat нямат реални IP адреси, което в днешно време не е толкова често срещано явление (поне не и толкова често колкото беше преди 5 години например).

Който иска да участва и има поне малка представа с коя част от проекта желае да се захване нека ми пише P.M. за да го добавя тук.

Лиценза не сме го обсъждали, но предполагам всички сме на мнение, че трябва да е GNU.
Polizei
QUOTE(mix25 @ Jun 17 2008, 10:02 PM) *
Не мисля че ако клиента е зависим от трето лице ще има голям интерес във ползването на тази апликация.(и като цяло не само във тази)

А как мислиш че Skype осигурява връзката на всичките си милион и кусур абонати?!
Това пречи ли на една closed source програма, ползваща closed source (unknown) protocol, да бъде най-употребяваната в световен мащаб?
mix25
QUOTE(Polizei @ Jun 18 2008, 04:36 AM) *
А как мислиш че Skype осигурява връзката на всичките си милион и кусур абонати?!
Това пречи ли на една closed source програма, ползваща closed source (unknown) protocol, да бъде най-употребяваната в световен мащаб?

Незнам Skype как прави връзката. Не мисля че пречи. Няма значение че е затворен код.

Добре примерно. Ти искаш да си говориш с твоята приятелка. Оговаряте среща в айерси. Обаче подари каквито и да били причини тя да кажем няма реален адрес. Може би 80% от случайте ще има 3-ти човек, но не винаги. И какво става тогава? Просто исках да изтъкна този случай.

Blackened
QUOTE(Polizei @ Jun 16 2008, 08:31 AM) *
... при грубо 25000 БТК абоната, от които 24900 не могат да си отворят портовете на модемите ...

Бе струва ми се, че повече хора могат да си отворят портове. Въпросът е в това колко от тях (все още) са в IRC ..

QUOTE(mix25 @ Jun 20 2008, 12:46 AM) *
Добре примерно. Ти искаш да си говориш с твоята приятелка. Оговаряте среща в айерси. Обаче подари каквито и да били причини тя да кажем няма реален адрес. Може би 80% от случайте ще има 3-ти човек, но не винаги. И какво става тогава? Просто исках да изтъкна този случай.

Решение: кратък manual по отваряне на портове за БТК модеми, предполагам, че в голяма степен важи и за всички останали, които имат някакъв подобен модем и не са с реално IP. Нещото като операция отнема най-много 5 минути и се сещам за поне 4 (четири) начина да бъде направено (единият обаче е telnet достъп до модема ... успех smile.gif ). Само трябва отнякъде да се изнамерят възможните user/pass на БТК модемите (на около десетте машини, на които съм правил подобни неща, паролата беше една и съща, колеги обаче казват, че има още 3-4 комбинации).

Варианти - бол, стига да има маалко мозък cool.gif

Успех, devels! И пускайте отвреме навреме някоя новинка как върви проектът smile.gif

P.S. Ако си спомнях малко повече детайли от Ц-то - със сигурност щях да се включа ...
Mitak
QUOTE(Blackened @ Aug 6 2008, 12:18 PM) *
Бе струва ми се, че повече хора могат да си отворят портове. Въпросът е в това колко от тях (все още) са в IRC ..


Решение: кратък manual по отваряне на портове за БТК модеми, предполагам, че в голяма степен важи и за всички останали, които имат някакъв подобен модем и не са с реално IP. Нещото като операция отнема най-много 5 минути и се сещам за поне 4 (четири) начина да бъде направено (единият обаче е telnet достъп до модема ... успех smile.gif ). Само трябва отнякъде да се изнамерят възможните user/pass на БТК модемите (на около десетте машини, на които съм правил подобни неща, паролата беше една и съща, колеги обаче казват, че има още 3-4 комбинации).

Варианти - бол, стига да има маалко мозък cool.gif

Успех, devels! И пускайте отвреме навреме някоя новинка как върви проектът smile.gif

P.S. Ако си спомнях малко повече детайли от Ц-то - със сигурност щях да се включа ...


Не ти трябва никакъв достъп до модема.
Логвш се в профила си на my.contact.bg, от там - в "моята мрежа", NATP настройки.
Blackened
smile.gif Mitak, нуждата от достъп до модема е в основата на 2 от начините (уеб интерфейса и телнет), третият е този, който ти споменаваш, четвъртият (не знам дали още го поддържат) е това със звъненето в хелпдеск-а ...
Btw, не вярвам много хора (в най-общия случай на възраст м/у 14 и 18 години) да успеят да намерят договора си с бТК, където пише юзър/парола за my.contact.bg, за да ги използват по предназначение ... затова UI-методът ми се струва най-ефективен smile.gif

However, май все още няма нищо написано като код, така че тази дискусия остава за по-далечно бъдеще wink.gif

HF,
Black
Това е семпла версия на форума. За да видиш пълната версия, която има повече информация, по-добра подредба и снимки, натисни тук.
Invision Power Board © 2001-2008 Invision Power Services, Inc.