Захват видео из q3mme 1.6 с помощью скрипта, для мувмейкеров |
Здравствуйте, гость ( Вход | Регистрация )
Захват видео из q3mme 1.6 с помощью скрипта, для мувмейкеров |
15.08.2010 - 23:10
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 599 Регистрация: 6.04.2010 Пользователь №: 4137 |
Может кто будет делать мувик, пригодиться статейка.
Капчурить в q3mme достаточно долго каждое видео по отдельности, особенно с максимальным качеством блюрфрейма. Поэтому был сделан скрипт, который достаточно один раз запустить, например на ночь, а утром все демки будут преобразованы в видео. Оригинал Инструкции по использованию скрипта здесь. Однако там на английском и без подробностей, поэтому я переписал на русский более понятно. Но сразу оговорюсь, мой скрипт работает не до конца, он только капчурит, а изначально он еще может не только капчурить, но и преобразовывать в 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/windowsserver2003...l/download.mspx После установки, её надо запустить и настроить, т.к. по умолчанию она не запускает не подпписанные скрипты ради безопасности. Чтобы разрешить ей выполнить наш скрипт, надо прописать set-executionpolicy remotesigned и нажать enter. Теперь её можно закрыть. 2. Корректировка готового скрипта. Скрипт уже написан, его нужно только подправить под себя, прописав пути к q3mme. У меня для q3mme лежит отдельный квейк, папка с которым называется q3mme, а диск V:\ Вот это и надо подправить под себя. Мой скрипт: Код #===============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, тоже не понадобятся, но вот дефолт: Код 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 Код #===============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, скрипт запуститься, его можно оставить на ночь, если там очень много и качественно настроено, а утром будет все готово Правда если запускать скрипт правой кнопокой, то в конце,либо в случае неудачи программа PowerShell закроется. Поэтому лучше запустить программу PowerShell из меню пуск, перетащить файл captureAvi.ps1 на это окно и нажать enter. Если будет ошибка, он скажет что именно неполучается. Если ничего не понятно, надо проверить настройки более внимательно. p.s. Квейк во время захвата запускается в фоне, видна только консоль, это удобно, но гамма бывает глючит, повышается. У меня например на видеокарте ATI такое есть. Поэтому если я хочу капчурить днем, а не ночью, то когда гамма измениться на рабочем столе, я иду в настройки драйвера Catalyst, вкладка Графика - цвет и нажимаю кнопку Включить элементы управления цветом ATI. На NVIDIA возможно по другому Сообщение отредактировал uN*DeaD!HOX - 16.08.2010 - 11:01 -------------------- |
15.08.2010 - 23:14
Сообщение
#2
|
|
Strf0r Группа: Модераторы Сообщений: 4381 Регистрация: 11.06.2005 Из: Санкт-Петербург Пользователь №: 741 |
Полезная статья, прилепил.
Правда ещё пока не читал, попозже изучу, если соберусь делать чего-нибудь -------------------- Весна покажет, кто где срал!
|
16.08.2010 - 08:30
Сообщение
#3
|
|
Team defrag.ru: mapper Группа: Пользователи Сообщений: 1972 Регистрация: 10.05.2004 Из: Пермь Пользователь №: 176 |
Сурово!
-------------------- GT-Team site: http://admdefrag.narod.ru
http://gt-team.blog.ru Все по разработке Q3Bers лежит тут: http://q3bers.nm.ru инфо по Q3Bers http://wiki.quakegate.ru/q3bers PS а почему у моего профиля больше всего просмотров? Что там интересного? Смотрел, не понял :) PSS Зависаю в танках - GTAgressor |
30.03.2017 - 20:26
Сообщение
#4
|
|
Группа: Пользователи Сообщений: 8 Регистрация: 30.03.2017 Пользователь №: 4603 |
Отличная статья! Спасибо, думаю, пригодится!
|
20.10.2020 - 07:52
Сообщение
#5
|
|
Группа: Пользователи Сообщений: 6 Регистрация: 17.10.2020 Из: Россия,Кемеровская область, Киселёвск Пользователь №: 4695 |
Ого,надеюсь у меня получится.
|
Текстовая версия | Сейчас: 5.11.2024 - 04:21 |