Новые сообщения Участники Правила Поиск

Страница 1 из 11
Модератор форума: SLAwww, thecre, RealCrazyMan 
Форум » Serious Sam » Серьёзное редактирование » Проигрываем видео в Classic Serious Sam (Для программистов)
Проигрываем видео в Classic Serious Sam
SLAwww Среда, 19.03.2014, 04:16 | Сообщение # 1


Рряа? ^..^
Сообщений: 2374
Награды: 28
Замечания: 0%
 
В общем, эта штука разрабатывалась для ССО, но мне кажется, она будет полезна очень многим, а до выхода ССО ждать не хочется. По-моему, это не должно быть эксклюзивной фишкой ССО (их там и так навалом).
Сразу оговорюсь, что полную работоспособность я не гарантирую. Но если кто-то сообщит о баге, это будет очень здорово. :)
Инструкция:
1) Подключите пять файлов из архива к своему проекту. Если подключаете к GameMP, то ничего менять не надо, а если к EntitiesMP - поменяйте в СРР-файлах #include "stdafx.h" на #include "stdh.h".
2) Подключите к проекту vfw32.lib. Она должна быть где-то у вас на компьютере. Возможно, придётся подключить ещё gdi32.lib.
3) Посмотрите в PlayVideo.h - здесь всё просто. Названия функций говорят сами за себя. AviPlay нужно вызывать из кадрового метода (например, из RedrawGameView в CGame) с текущим DrawPort'ом самого старшего порядка (желательно).
4) Следует применять видео-файлы БЕЗ звуковой дорожки. Предпочтительный кодек - XVID, но должны работать и другие. Звук к видео вы можете воспроизводить чисто игровыми средствами.

Имеющиеся недочёты:
- Пока что видео немного обгоняет звук. Видео, не обгоняющее звук, будет эксклюзивной фишкой ССО. :Р
- Я тут использовал одну жутко-deprecated штуковину, которую Microsoft может похоронить любым свежим апдейтом 8-й винды.
- Работоспособность на 64-битных системах не проверялась.
- 44 уорнинга при компиляции. #pragma warning disable не помогает.

Прикрепления: PlayVideo.zip(6Kb)


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
BuIlDaLiBlE Среда, 19.03.2014, 08:13 | Сообщение # 2


Сообщений: 593
Награды: 12
Замечания: 0%
 
Воу, круто. А CCO когда выйдет?
---
Супир, выдавать пред это мы умеем, а отвечать на нужные вопросы - нет.
Сообщение отредактировал BuIlDaLiBlE - Воскресенье, 23.03.2014, 11:13



Bp Services ©:
serioussam.ucoz.ru/bpservices
--uGh--zAn-- Воскресенье, 30.03.2014, 15:40 | Сообщение # 3


Сообщений: 115
Награды: 2
Замечания: 20%
 
Чтобы не обгоняло звук, можно попробовать ускорить сам звук %)

Для меня заблокирована ЛЮБАЯ активность. Могу только страницы просматривать. Можно мне писать на форуме? Админы? Модераторы?
Minster20012 Воскресенье, 30.03.2014, 20:47 | Сообщение # 4


Сообщений: 230
Награды: 0
Замечания: 0%
 
--uGh--zAn--, Ускоренный звук будет искажён и слушать его будет ну очень фигово

Super-Trash-Unnamed-Map-P|atformer: 0.01%
Kadath Понедельник, 31.03.2014, 09:37 | Сообщение # 5


Son of Anubis
Сообщений: 2434
Награды: 20
Замечания: 0%
 
Добавить задержку в начале видео. Что может быть проще?

Мои работы
DeadKadath's Showcase
Minster20012 Понедельник, 31.03.2014, 09:49 | Сообщение # 6


Сообщений: 230
Награды: 0
Замечания: 0%
 
Kadath, а ведь и правда)

Добавлено (31.03.2014, 09:49)
---------------------------------------------
Kadath, а ведь и правда)

Super-Trash-Unnamed-Map-P|atformer: 0.01%
Mechanixx Понедельник, 31.03.2014, 19:43 | Сообщение # 7


Сообщений: 1230
Награды: 2
Замечания: 0%
 
Или просто подогнать звуr на манер Sony Veges.

Хотел бы посмотреть на Максиган. Все мои видео на rutube.ru




Я тут больше не задержусь...
SLAwww Вторник, 01.04.2014, 00:28 | Сообщение # 8


Рряа? ^..^
Сообщений: 2374
Награды: 28
Замечания: 0%
 
На самом деле, фишка в том, чтобы рассчитывать не относительное время ожидания кадра (1 / фреймрейт), а абсолютное время его отображения (номер_кадра / фреймрейт) при каждом рендере.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
vanya109 Воскресенье, 08.03.2015, 15:45 | Сообщение # 9


Сообщений: 229
Награды: 5
Замечания: 0%
 
Я установил пять файлов в GameMP


А теперь скажите, видео будет воспроизводится где: в игре(в карте) или при запуске игры?

И что нужно написать в playvideo.ccp чтобы воспроизводить видео?



Цитата SLAwww ()
AviPlay нужно вызывать из кадрового метода (например, из RedrawGameView в CGame) с текущим DrawPort'ом самого старшего порядка (желательно).

Это я не понял!

Извините что много вопросов я задал, но мне правда очень нужно это сделать!


http://i.imgur.com/GllGyPA.gif
SLAwww Воскресенье, 08.03.2015, 17:29 | Сообщение # 10


Рряа? ^..^
Сообщений: 2374
Награды: 28
Замечания: 0%
 
Видео будет воспроизводиться тогда, когда ты вызовешь AviPlay, и будет занимать весь экран (или всё окно, если игра работает в оконном режиме). В PlayVideo.cpp не нужно ничего писать, там уже всё готово. Писать вызов AviLoad/AviPlay/AviClose надо в том месте, откуда ты хочешь вызывать воспроизведение. Например, внутри RedrawGameView. И прежде, чем спрашивать, что такое RedrawGameView, выполни поиск по файлам.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
vanya109 Пятница, 01.05.2015, 09:09 | Сообщение # 11


Сообщений: 229
Награды: 5
Замечания: 0%
 
AviPlay вызывается с помощью энтитие? Просто я создал Avi.ecl в папке classes и не получается добавить http://i.imgur.com/hwLUkit.jpg
"Package: TFNM Bin\Game.dll
Class: CPlayVideo
"
В PlayVideo.h надо просто менять AviPlay, а остальные не трогать:
"void AviClose();

BOOL AviIsPlaying();
"
, (RedrawGameView,CGame, лучше DrawPort так и оставлю!)?


http://i.imgur.com/GllGyPA.gif
ST27 Пятница, 01.05.2015, 11:35 | Сообщение # 12


Сообщений: 435
Награды: 5
Замечания: 0%
 
В самих файлах ничего не надо менять. Ты должен создать свой класс, что не сделал и получил ошибку, что такого класса нет. Потому, что его действительно нет.

Добавлено (01.05.2015, 11:35)
---------------------------------------------
И ещё, написано же, что AviPlay - это BOOL, и она ничего не воспроизводит, а проверяет, что воспроизводится...

kill me.
SLAwww Пятница, 01.05.2015, 12:22 | Сообщение # 13


Рряа? ^..^
Сообщений: 2374
Награды: 28
Замечания: 0%
 
Видеоплеер - даже не класс, а просто набор функций, которые можно вызывать из любого подходящего места.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
ST27 Пятница, 01.05.2015, 12:56 | Сообщение # 14


Сообщений: 435
Награды: 5
Замечания: 0%
 
SLAwww, тем более

kill me.
CAHEK Пятница, 01.05.2015, 15:09 | Сообщение # 15


Сообщений: 730
Награды: 11
Замечания: 0%
 
А можно пример включения видео откуда нибуть. Ну скажем при из обычного тригера.

Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Пятница, 01.05.2015, 17:51 | Сообщение # 16


Рряа? ^..^
Сообщений: 2374
Награды: 28
Замечания: 0%
 
Вот, дописал в конец функции CGame::GameRedrawView:
Код
// =======================================================================================
  // VIDEO PLAYER  
  // =======================================================================================
  if (gfx_strAviFile.Length() > 0)
  {
   if (gfx_strAviFile == "stop")
   {
    AviClose();    
   }
   else
   {
    CTString strFilePath(CTString("..\\") + gfx_strAviFile);
    AviLoad(strFilePath);
   }

   gfx_strAviFile.Clear();
  }  
  if (AviPlay(pdpDrawPort))
   return;

В данном случае, видео включается и останавливается с помощью консольной команды, которая подключена к переменной gfx_strAviFile. Если в консоли ввести /gfx_strAviFile = C:\MyVideoFile.avi, то будет воспроизведено это видео. Естественно, можно писать и относительные пути (если написать просто MyVideoFile.avi, то винда будет его искать сначала в папке Bin Сэма, а потом по всем путям из системной переменной PATH).


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
ST27 Вторник, 22.03.2016, 13:11 | Сообщение # 17


Сообщений: 435
Награды: 5
Замечания: 0%
 
Решил впихнуть эту штуку в исходники SE1.10, получил следующее:

Прикрепления: 2466321.png(34Kb)


kill me.
Cyborg Вторник, 22.03.2016, 16:05 | Сообщение # 18


Сообщений: 99
Награды: 7
Замечания: 0%
 
Цитата SLAwww ()
- Работоспособность на 64-битных системах не проверялась.


Эта штука работает на 32 битке, на 64 похоже не робит. У меня тоже самое было




Hell yeah! Полностью рабочий SS:TSE на 64 битке просто замечателен
SLAwww Вторник, 22.03.2016, 16:40 | Сообщение # 19


Рряа? ^..^
Сообщений: 2374
Награды: 28
Замечания: 0%
 
Просто TCHAR в новых студиях - это wchar_t, а не char. Тебе нужно написать
Код
CTString strFile = CStringA(file);


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
Форум » Serious Sam » Серьёзное редактирование » Проигрываем видео в Classic Serious Sam (Для программистов)
Страница 1 из 11
Поиск: