ГлавнаяФорумЧатКланыСервераФотоФайлыСтатьиСсылкиПочтаЧасы
Меню пользователя
Вторник
30.04.2024, 20:54

Приветствую Вас
Гость

Логин:
Пароль:


Опрос
Какой взнос за участие в Турнире по CA Вы готовы внести?
Всего ответов: 594

Поиск

TOP 30 Users

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: hnrReactor  
Форум - Quake-III ClanArena Russian Community » Софт » Movie Making » Захват видео из q3mme 1.6 с помощью скрипта
Захват видео из q3mme 1.6 с помощью скрипта
hnrReactorДата: Пятница, 02.07.2010, 03:44 | Сообщение # 1
Легенда
Группа: Модераторы
Сообщений: 431
Репутация: 183
Статус: Offline
Награды: 11
Оригинал Инструкции здесь. Однако там на английском и без подробностей, поэтому переписываю на русский более понятно (по просьбе TCR).
Но сразу оговорюсь, мой скрипт работает не до конца, он только капчурит, а изначально он еще может не только капчурить, но и преобразовывать в AVI, если закапчурить в TGA. Но я капчурю в TGA и сразу вставляю в Sony Vegas как секвенцию, т.е. последовательность файлов и этого достаточно.

Итак, для начала потребуется готовый проект q3mme с указанием границ времени.
Чтобы создать простейший проект, нужно:
1. Запустить демку
2. Нажать 3 - редактирование Line
3. Перемотать на начало нужного момента и нажать T
4. Перемотать на конец нужного момента и нажать G
5. Написать в консоли Save имя_проекта имя_списка_проектов, например save 1 list.txt, чтобы по быстрому. Тогда создаться текстовый файл list.txt со строкой данного проекта
Файл проекта сохраняется в папке Project как обычный текстовый файл
Далее можно загрузить другую демку, написать тоже save 1 list.txt и в лист добавиться новая демка с проектом 1 и ляжет в отдельную папку в папке Project.
p.s. Кстати, загрузив заного демку и написав в консоли load 1, можно загрузить этот проект и продолжить работать над ним.

Теперь самое главное, лист с проектами готов, его нужно закапчурить скриптом:

1. Подготовка к запуску.
Скрипт написан с помощью программы Microsoft Powershell. И для его запуска прийдется установить её.
Скачать можно с офф. сайта: http://www.microsoft.com/windows....ad.mspx
После установки, её надо запустить и настроить, т.к. по умолчанию она не запускает не подпписанные скрипты ради безопасности. Чтобы разрешить ей выполнить наш скрипт, надо прописать set-executionpolicy remotesigned и нажать enter. Теперь её можно закрыть.

2. Корректировка готового скрипта.
Скрипт уже написан, его нужно только подправить под себя, прописав пути к q3mme.
У меня для q3mme лежит отдельный квейк, папка с которым называется q3mme, а диск V:\ Вот это и надо подправить под себя.
Мой скрипт:

Code
    #===============DEFINE================= v 1.4
       $demolist = "v:\q3mme\mme\dl10.txt"
       $mmePath = "v:/q3mme/mme/capture"
       $mme = "v:/q3mme/mme"
       $basepath = "v:/q3mme"
       $mmeSavePath = "v:/q3mme/avi"
       $mmeRunSettings = "v:/q3mme/mme/ps/mmeRunSettings.txt"
       $virtualDubPath = "C:\Program Files (x86)\VirtualDub"
       $virtualDubSetting = "v:\q3mme\mme\ps\defaultVD.txt"
       $imageType = "tga" #jpg, tga, pgn, *, anything u want
       #======================================
       Get-Date
       $i = 1; $notFound = 0; $currentpath = Get-Location; $runSettings = gc $mmeRunSettings
       Write-Host "`n Q3MME RUN SETTING: `n $runSettings `n"

       foreach
       ($vrstica in Get-Content $demolist)
       {
       $parse = $vrstica.Split(""""); $path = $parse[1]; $project = $parse[3]

       #=============== RUN Quake3MME CAPTURE ===============
       Write-Host "`n== $i == Quake3MME CAP ====" -f green
       Write-Host "DEMO: $path `nPROJECT: $project"
       sc $mme/xgoDL.txt $vrstica #.Substring(0,$foo.LastIndexOf("\"))
       $p = [diagnostics.process]::Start("v:\q3mme\quake3mme.exe", "$runSettings +set fs_basepath $basepath +demolist xgoDL.txt +set mme_demoListQuit 1")
       $p.WaitForExit()

       $firstImage = ""; $firstImage = dir $mmePath$path/$project*.$imageType -name

       if($firstImage -eq $null)
       {
       $notFound++
       Write-Host ====== COULDNT FIND IMAGE FILE $notFound ****** ======
       Write-Host $mmePath$path/$project*.$imageType -name
       }
       else
       {
       $firstImage = $firstImage[0]
       $wavFile = dir $mmePath$path/$project.wav -name

       #=============== CREATE VirtualDub SCRIPTO ===============
       $aviPath = $path.Substring($path.LastIndexOf("/")+1)
       $defaultVD = Get-Content $virtualDubSetting

       $scripta = "VirtualDub.Open(U""$mmePath$path/$firstImage"", """", 0);
       VirtualDub.audio.SetSource(U""$mmePath$path/$wavFile"");
       $defaultVD
       VirtualDub.SaveAVI(U""$mmeSavePath/$aviPath-$project.avi"");
       "

       #=============== WRITE VirtualDub SKRIPTO ===============
       $scripta | Out-File $virtualDubPath\VirtualDubMod.jobs -encoding "ASCII"
       Write-Host " "
       Write-Host "VdScripta: " -f yellow
       Write-Host CAP DIR: $mmePath$path
       Write-Host IMAGE: $firstImage
       Write-Host WAV: $wavFile
       Write-Host SAVE: $mmeSavePath/$aviPath.avi
       Write-Host " "
       #================ $i. RUN VirtualDub SKRIPTO =================
       cd $virtualDubPath
       .\vdub.exe /s VirtualDubMod.jobs
       cd $currentpath

       #============== DELETE CAPTURE IMAGES =================
       #CAREFULL WITH THIS ONE
       #Write-Host "`n==== DELETING ====" -f red
       #Write-Host "dir" $mmePath$path/$project*.$imageType
       #Remove-Item $mmePath$path/$project*.$imageType

       $i++
       }
       Write-Host "==========================================================`n"
       }
       Write-Host "`n==== Number of not found image files: $notFound ====`n" -f red
       Get-Date

Его нужно полностью скопировать, создать у себя текстовый файл с именем captureAvi.ps1 и вставить туда этот текст скрипта, после чего подправить пути.

$demolist = "v:\q3mme\mme\dl10.txt" - это лист с проектами, например list.txt
В нем должен быть список проектов, например:
"/demo0001" "1"
"/demo0002" "1"
А в папке project должны были создаться папки demo0001 с файлами проектов 1.cfg

$mmePath = "v:/q3mme/mme/capture" - сюда будут капчуриться проекты, если папки capture нет, её нужно обязательно создать.
Дальше думаю понятно все что нужно исправить.
$mmeSavePath = "v:/q3mme/avi" - это на случай если потом пережимать в avi, лучше тоже создать эту папку на всякий случай.

$mmeRunSettings = "v:/q3mme/mme/ps/mmeRunSettings.txt" - это файл с настройками, которые будут импортироваться перед началом захвата.
Мои например такие:
+set fs_game mme +set fs_extraGames defrag +set mme_renderWidth 1280 +set mme_renderHeight 720
fs_extraGames - можно указать любой мод, например osp, смотря с каким работа идет.
+set mme_renderWidth 1280 +set mme_renderHeight 720 - это очень важные параметры. Какого формата мы хотим захватить видео. Капчурить скрипт может в любом разрешении, т.к. захват идет в фоновом режиме. Сейчас стандарт 720р наиболее оптимальный, поэтому я рендерю всегда в нем, но это дело каждого.
Важное дополнение: т.к. скрипт записывает в конфиг mme_renderWidth 1280 +set mme_renderHeight 720, то зайти в q3mme будет проблематично, он будет запускаться также в фоновом режиме. Поэтому в запускной файл, обычно это quake3mme.start.cmd стоит дописать +set mme_renderWidth "0" +set mme_renderHeight "0"
+set r_multisample 8 - Для видеокарт ATI уровень сглаживаия ступенек, чтобы не было ступенчатости на углах геометрии. Если видеокарта Nvidia, то нужен другой параметр: seta r_multiSampleNvidia "8"
Самое значение зависит от параметров видеокарты, если параметр сбрасывается а видео лесенкой, значит видеокарта не тянет такое число, надо глянуть в видеодрайвере сколько максимум, например, если 4, то надо 4 поставить.
+set r_anisotropy 16 - уровень анизотропной фильтрации текстур, для большей четкости текстур. Опять же зависит от видеокарты конкретное число.
+set r_picmip 0 - отключить размывку текстур, на всякий случай.

$virtualDubPath = "C:\Program Files (x86)\VirtualDub" не понадобиться если не переводить секвенцию в AVI

$virtualDubSetting = "v:\q3mme\mme\ps\defaultVD.txt" - настройки для перевода в AVI, тоже не понадобятся, но вот дефолт:

Code
VirtualDub.audio.SetMode(0);
VirtualDub.audio.SetInterleave(1,500,1,0,0);
VirtualDub.audio.SetClipMode(1,1);
VirtualDub.audio.SetConversion(0,0,0,0,0);
VirtualDub.audio.SetVolume();
VirtualDub.audio.SetCompression();
VirtualDub.audio.EnableFilterGraph(0);
VirtualDub.video.SetInputFormat(0);
VirtualDub.video.SetOutputFormat(7);
VirtualDub.video.SetMode(3);
VirtualDub.video.SetSmartRendering(0);
VirtualDub.video.SetPreserveEmptyFrames(0);
VirtualDub.video.SetFrameRate2(50,1,1);
VirtualDub.video.SetIVTC(0,0,-1,0);
VirtualDub.video.SetCompression(0x75796668,0,10000,0);
VirtualDub.video.filters.Clear();
VirtualDub.video.filters.Add("resize");
VirtualDub.video.filters.instance[0].Config(50,50,1,4,3,1,320,240,4,3,0,7,1,0x000000);
VirtualDub.video.filters.Add("sharpen");
VirtualDub.video.filters.instance[1].Config(22);
VirtualDub.audio.filters.Clear();

$imageType = "tga" #jpg, tga, pgn, *, - в каком формате производить захват видео. Оптимально в tga

$p = [diagnostics.process]::Start("v:\q3mme\quake3mme.exe", "$runSettings +set fs_basepath $basepath +demolist xgoDL.txt +set mme_demoListQuit 1") - путь к quake3mme.exe и запуск демолиста xgoDL.txt, теоретически должен сам создаваться на базе dl10.txt - листа с проектами

По сути это все настройки. Если кто разберется с переводом в AVI с помощью скрипта, объясните.

Мой скрипт, который возможно содержит ошибку:
captureLenght.ps1

Code
#===============DEFINE================= v 1.3
$demolist = "v:/q3mme/mme/dl10.txt"
$mmePath = "v:/q3mme/mme"
$oneFrame = 1.5 #size in MB
$fps = 50
$oneSecCapture = 20 #in sec for 1 second capture footage
$compressionTime = 5.8 #in sec for 1 sec captured footage
#======================================
$sum = 0
foreach
($vrstica in Get-Content $demolist)
{
$parse = $vrstica.Split(""""); $path = $parse[1]; $project = $parse[3]
$parser = "<", ">"

$file = Get-Content $mmePath/project$path/$project.cfg

foreach($text in $file)
{
if($text.IndexOf("<start>") -gt 0) {
$start = $text.Split($parser)[2]
}

if($text.IndexOf("<end>") -gt 0) {
$end = $text.Split($parser)[2]; break
}
}
$sum = $sum + ([int]$end - [int]$start)
}
$sec = $sum/1000
$min = $sum/60000

Write-Host Sec: $sec ::or:: Min: $min
Write-Host FPS = $fps :: One frame size = $oneFrame MB
Write-Host SIZE: ($sec*$fps*$oneFrame) MB
Write-Host Capture time: ([int]($sec*($oneSecCapture)/60)) min ::or:: (([int]($sec*($oneSecCapture)/36)/100)) hours
Write-Host Compression time: ([int]($compressionTime*$sec/60)) min

Нужно также создать текстовый файл captureLenght.ps1 и туда кинуть текст. Когда все отрендерено в tga, то теоретически, запустив этот скрипт, оно переведет в AVI.
Но это не нужно. Можно прямо в вегасе нажать открыть, выбрать первый файл из последовательности tga и поставить внизу галочку "открыть как диапазон". FPS можно выставить максимум 60. А капчурят обычно больше для лучшего качества моушн блюра. Поэтому тут надо рассчитать. Допустим я имортирую tga с FPS 30, проект у меня 30, а захват был с FPS 120. Поэтому я иду в свойства файла в вегасе и в поле Playback rate ставлю 4, чтобы ускорить видеоряд в 4 раза, тогда получиться правильная скорость.

3. Запуск.
Теперь на файл captureAvi.ps1 достаточно нажать правой кнопкой и выбрать - выполнить с помощью PowerShell, скрипт запуститься, его можно оставить на ночь, если там очень много и качественно настроено, а утром будет все готово smile
Правда если запускать скрипт правой кнопокой, то в конце,либо в случае неудачи программа PowerShell закроется. Поэтому лучше запустить программу PowerShell из меню пуск, перетащить файл captureAvi.ps1 на это окно и нажать enter. Если будет ошибка, он скажет что именно неполучается. Если ничего не понятно, надо проверить настройки более внимательно.
p.s. Квейк во время захвата запускается в фоне, видна только консоль, это удобно, но гамма бывает глючит, повышается. У меня например на видеокарте ATI такое есть. Поэтому если я хочу капчурить днем, а не ночью, то когда гамма измениться на рабочем столе, я иду в настройки драйвера Catalyst, вкладка Графика - цвет и нажимаю кнопку Включить элементы управления цветом ATI. На NVIDIA возможно по другому


 
tcr_asrДата: Пятница, 02.07.2010, 13:52 | Сообщение # 2
Noob4eveR
Группа: Проверенные
Сообщений: 555
Репутация: 245
Статус: Offline
Награды: 42
Спасибо. Буду пытаться.

2011 © |energy|Leon : срыв зависит от ... сенсы и ацеля
2011 © |energy|Leon : с cl_timenudge -20 мне проще просчитывать врага

 
GsDpROДата: Воскресенье, 01.01.2012, 23:01 | Сообщение # 3
^Я выучил Албанский^
Группа: Проверенные
Сообщений: 761
Репутация: 84
Статус: Offline
Награды: 30
biggrin Программа хорошая правда если снимать в Avi сразу такое дерьмецо выходит зазубреное с разрешением 320x240

THE GOD OF THE SKY <<



Сообщение отредактировал GsDpRO - Понедельник, 02.01.2012, 01:16
 
motiveДата: Понедельник, 02.01.2012, 03:53 | Сообщение # 4
Активист
Группа: Проверенные
Сообщений: 368
Репутация: 450
Статус: Offline
Награды: 15
Quote (GsDpRO)
Программа хорошая
если ты не gsd*pro


GLybina Rezkosti...
 
GsDpROДата: Понедельник, 02.01.2012, 11:19 | Сообщение # 5
^Я выучил Албанский^
Группа: Проверенные
Сообщений: 761
Репутация: 84
Статус: Offline
Награды: 30
Quote (motive)
если ты не gsd*pro

Скажи чтоб снимало в лутчем качестве bind f1 "capture avi 50 mymovie" dry


THE GOD OF THE SKY <<



Сообщение отредактировал GsDpRO - Понедельник, 02.01.2012, 12:07
 
GSTДата: Понедельник, 02.01.2012, 15:32 | Сообщение # 6
Старая школа
Группа: Проверенные
Сообщений: 777
Репутация: 224
Статус: Offline
Награды: 14
gsdpro = уве болл квейка 3
 
GsDpROДата: Вторник, 03.01.2012, 00:48 | Сообщение # 7
^Я выучил Албанский^
Группа: Проверенные
Сообщений: 761
Репутация: 84
Статус: Offline
Награды: 30
angry эй не флуди бо покараю angry GST я спросил как сделать качество сьемки лутче

THE GOD OF THE SKY <<

 
OverdoseДата: Четверг, 05.01.2012, 12:39 | Сообщение # 8
Мастер
Группа: Проверенные
Сообщений: 1099
Репутация: 326
Статус: Offline
Награды: 14
Про,снимай на телефон,у тебя это всегда ахуенно получалось!

Моё чувство юмора сильнее чем чувство жалости :)

Не спорьте с дибилом, иначе опуститесь до его уровня, а там он задавит вас своим опытом!

А ну быстро мне плюсико подкинули!=)+++

 
VVSДата: Четверг, 05.01.2012, 12:47 | Сообщение # 9
Нас предали...
Группа: Проверенные
Сообщений: 2285
Репутация: 256
Статус: Offline
Награды: 14
Quote (Overdose)
Про,снимай на телефон,у тебя это всегда ахуенно получалось!

последнее своё произведении он как будто и снял на телефон...

фраги конечно у него говно... но в принципе если бы он вывел на нормальную графику и сделал чёто с гамой.. то вполне можно было бы смотреть...


Много удачи, это уже скилл!!!

ЗАГОВОР!!!
 
motiveДата: Четверг, 05.01.2012, 13:17 | Сообщение # 10
Активист
Группа: Проверенные
Сообщений: 368
Репутация: 450
Статус: Offline
Награды: 15
Quote (VVS)
последнее своё произведении

Quote (VVS)
снял на телефон

Quote (VVS)
вывел на нормальную графику

Quote (VVS)
вполне можно

Quote (VVS)
смотреть


GLybina Rezkosti...
 
GsDpROДата: Пятница, 06.01.2012, 12:07 | Сообщение # 11
^Я выучил Албанский^
Группа: Проверенные
Сообщений: 761
Репутация: 84
Статус: Offline
Награды: 30
Quote (VVS)
фраги конечно у него говно.

angry нормальные фраги просто ты недоволен что тебя там небыло biggrin я снимал сразу в AVI в игре гамма не менялось было очень темно а снималось с повышенной гаммой dry


THE GOD OF THE SKY <<

 
Форум - Quake-III ClanArena Russian Community » Софт » Movie Making » Захват видео из q3mme 1.6 с помощью скрипта
  • Страница 1 из 1
  • 1
Поиск:








Правила поведения на сайте