Topic: Доработка программы

Существует такая программа, с открытыми исходными кодами, для прямого контроля компьютера сервера с передачей видео без задержек, зовется она Single Player Game Transmitteritter http://sourceforge.net/projects/spgt/ и всё бы ничего, но если просто так рассказывать о ней то было бы глупо создавать топик, по этому я здесь что бы обратить внимание местных именитых гуру кодирования и декодирования видео на данную программу. Проблема в том что она пока использует xvid (или опционально не использует сжатие вообще), который сам по себе староват и жмет весьма посредственно, даже с неприличным качеством передача хотя бы 20 кадров в секунду на 100 мегабитном канале не завершается успехом.
По структуре, как очевидно уже в начале люди поняли это клиент-серверное приложение и соответственно дописыванию поддержки, например vp8 или h264, нуждаются обе части приложения. На счет того как точно это дело работает я с большой уверенностью сказать не могу, бегло просмотрев код и комментарии к нему (кстати они почти все, как скорее всего и разработчик, русские и весьма понятны) был сделан вывод что происходит передача неких коротких кадровых отрезков, сопровождаемых звуковыми отрезками с устройства записи по умолчанию. То есть подключается библиотека xvid и она обрабатывает кадры с параметрами, ввод которых вынесен в командную строку. Остальные, радминоподобные части программы присутствуют и функционируют, пожалуй кроме управления мышью в некоторых играх, исправно.
Вот собственно так не грамотно и не точно я попытался описать как работает приложение и почему создаю для него тему, но надеюсь на понимание и то, что кто нибудь заинтересуется и доработает или просто скооперируется с автором программы.

Re: Доработка программы

Программы удаленного управления:
- Удаленный рабочий стол Windows;
- TeamViewer;
- RAdmin;
- NetOp Remote Control.

Это только та небольшая часть программ этого класса, которыми я пользовался.

flashlight
Так может выбрать одну из них и не париться? hmm

Re: Доработка программы

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

Хм, не осталось ни одного приложения из небольшой части программ этого класса... Приложение не зря имеет в имени "Game".

Re: Доработка программы

flashlight

давайте вычеркнем
Смело big_smile И главное очень обоснованно lol
Чувствуется талант и опыт... вычеркивания wink

отсутствие задержки
Такого не бывает. Все современные устройства отображения имеют задержку. Все программы удаленного управления тоже имеют свою задержку. Надо только определиться какая задержка допустима.

И не было сказано самого главного: зачем нужна минимальная задержка?
- если играть? ИМХО бесполезная трата времени пытаться играть по удаленке;
- окошки таскать? тогда у всех перечисленных программ задержки приемлемые. Сотые и десятые доли секунды.

нормальное количество кадров
Прошу озвучить это число. 60 к/сек достаточно? 30 к/сек? 15 к/сек?

для отзеркаливания происходящего на дисплее в удаленный хост
Вот тут точно нужно описать требования:
- для чего требуется "зеркалить" картинку?
- управлять удаленно уже не надо, только транслировать?
- на какие расстояния? может просто взять разветвители и удлинители кабеля и подключить нужное количество мониторов.
- какие параметры важней: качество картинки (разрешение, глубина цвета)? частота кадров? умение работать на 100 Мбит канале? Чем-то придется жертвовать. hmm

5 (edited by flashlight 22-01-2013 01:22:21)

Re: Доработка программы

Отсутствие задержки подразумевает приемлимую задержку, то есть реакция на нажатия клавиши или движение мыши должна быть практически не различима глазу, естественно не доли миллисекунды но и логично что быстрее чем демонстрация дисплея скайпа который неплохо вмещается в мегабитные каналы с чуть лучше чем посредственным качеством.
Окошки таскать можно и на клиенте, смысл то. Здесь важны мощности которыми клиент не располагает, логично что конкретно для игр.
Считаю что было бы успехом иметь ~25 кадров, расстояния ближние в пределах локальной 100 мегабитной сети но нет, просто прийти на хост нельзя - не создавал бы тему.
Параметры первостепенно частота указанная выше, далее в принципе хватило бы 800*600 с глубиной 16 бит. А качество сгодилось бы в таком виде, в котором наблюдаем 480p на ютубе на не слишком динамичных сценах.

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

Re: Доработка программы

flashlight
конкретно для игр
H.264 не подходит для этой задачи.

Для передачи видео с минимальной задержкой нужно понимать, что форматы сжатия, используемые для кино, не подходят. Что xvid, что H.264, они оба используют межкадровое сжатие, которое требует наличие ключевых кадров (I) и дельта-кадров (P,B). Кодирование с двунаправленными дельта-кадрами (B) требует наличие двух ближайших I- или P-кадров, один из прошлого, один из будущего. По стандарту эти кадры чередуются IBBPBBPBBP... Для кодирования второго кадра в этой последовательности нужен четвертый кадр, т.е. задержка в два кадра обеспечена уже на этапе кодирования. Если отказаться от B-кадров, то ожидание кадров из будущего уже не требуется, но тогда сильно падает степень сжатия, а при ограничении потока падает качество.

Какое железо на сервере (способно ли оно параллельно с 3D-игрой жать H.264 в реальном времени)?
Какое железо на клиенте (способно ли оно распаковывать H.264 в реальном времени)?

"Киношные" кодеки сжатия и постоянная частота кадров, ниже 60 fps - это тупик. Нужен иной подход.
И этот подход блестяще реализован во множестве программ удаленного управления. Какие именно программы Вы пробовали и чем они не устроили?

---

Считаю что было бы успехом иметь ~25 кадров
Считаю странным хотеть частоту кадров, которая не кратна мониторной частоте обновления экрана. 25 подходит только, если частота обновления 75 или 100 Гц.

"приемлимую" пишется через е.

wink

Re: Доработка программы

flashlight
неужели увеличенный в десятки раз канал не спасет от уменьшения задержки под кодировние?

каким образом скорость трафика должна уменьшить задержки? hmm

Re: Доработка программы

%username% wrote:

flashlight
неужели увеличенный в десятки раз канал не спасет от уменьшения задержки под кодировние?

каким образом скорость трафика должна уменьшить задержки? hmm

топик не читай @ сразу пиши?

MAG79,
Для начала не важно что частота не кратна и она меньше 60 кадров, если железо на клиенте не способно поднять то, что способно поднять железо на сервере, то клиент перебьется и вертикальными разрывами и не киношными не плавными <60 фпс.
Далее сервер располагает мобильным i5, 8 гигами оперативной памяти и gtx 660m, и всё это на ocz vertex 3 если это вас интерисует. Другой блестящий подход, который реализован во множестве программ удаленного управления совсем не вмещается с указанный канал, при этом конечно обеспечивают чудесное качество и если отбросить фпс - отличный отклик

когда кадр сменится
. Эти vncподобные программы не в состоянии транслировать игры что бы за ними нормально наблюдать и управлять. Пожалуй самая близкая к заявляемым требованиям кроме spgt будет splashtop streamer первой версии у которого есть клиент для компа (во второй по не актуальным данным клиент только для мобильных устройств), но и она не особо радует... Как и попытки порекомендовать софт, задуманный для администрирования, но никак не игр. Я здесь совсем не для пререканий и демонстрации скудных познаний в кодировании и его принципах

Re: Доработка программы

дык, OnLive smile
правда "The hardware used is a custom set up consisting of OnLive's proprietary video compression chip", это к вопросу о лаге

Re: Доработка программы

Chainik wrote:

дык, OnLive smile
правда "The hardware used is a custom set up consisting of OnLive's proprietary video compression chip", это к вопросу о лаге

Надо было сразу про него написать, к тому что всё возможно, при использовании xvid проблемы с нагрузкой процессора не испытывал даже на мобильном i3 первого поколения, а здесь i5 третьего, в общем h264 или vp8 все равно лучше чем xvid, но программа пока поддерживает только его...

Re: Доработка программы

http://streammygame.com есть такое решение.

12 (edited by flashlight 25-01-2013 08:16:58)

Re: Доработка программы

NightFox
была попытка с ним познакомиться, ничего кроме предложения закинуть деньжат он мне показать не смог, но спасибо за интерес smile