mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 13:23:46 +03:00
71 lines
2.0 KiB
Lua
71 lines
2.0 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
|
|
local vid_width = CreateConVar( "vid_width", "640", { FCVAR_ARCHIVE + FCVAR_DONTRECORD }, "Specifies the width of the recorded video. The height will be adjusted automatically based on your aspect ratio" )
|
|
local vid_fps = CreateConVar( "vid_fps", "30", { FCVAR_ARCHIVE + FCVAR_DONTRECORD }, "The FPS of the recorded video" )
|
|
local vid_sound = CreateConVar( "vid_sound", "1", { FCVAR_ARCHIVE + FCVAR_DONTRECORD }, "Enable sound recording" )
|
|
|
|
local activeVideo
|
|
local videoStart
|
|
|
|
concommand.Add( "gm_video", function()
|
|
if ( activeVideo ) then
|
|
activeVideo:Finish()
|
|
activeVideo = nil
|
|
|
|
local time = SysTime() - videoStart
|
|
MsgN( string.format( "Finished recording. Length: %.1fs", time ) )
|
|
|
|
return
|
|
end
|
|
|
|
local dynamic_name = game.GetMap() .. " " .. util.DateStamp()
|
|
|
|
local width = math.Round( vid_width:GetFloat() )
|
|
local height = math.Round( ScrH() * ( width / ScrW() ) )
|
|
local fps = math.Round( vid_fps:GetFloat() )
|
|
|
|
local err
|
|
|
|
activeVideo, err = video.Record( {
|
|
name = dynamic_name,
|
|
container = "webm",
|
|
video = "vp8",
|
|
audio = "vorbis",
|
|
quality = 0,
|
|
bitrate = 1024 * 64,
|
|
width = width,
|
|
height = height,
|
|
fps = fps,
|
|
lockfps = true
|
|
} )
|
|
|
|
if ( !activeVideo ) then
|
|
MsgN( "Couldn't record video: ", err )
|
|
return
|
|
end
|
|
|
|
activeVideo:SetRecordSound( vid_sound:GetBool() )
|
|
|
|
videoStart = SysTime()
|
|
|
|
MsgN( string.format( "Recording %ix%i@%iFPS video to \"videos/%s.webm\"...", width, height, fps, dynamic_name ) )
|
|
|
|
end, nil, "Starts and stops the recording of a .webm (VP8/Vorbis) video. See vid_* convars for settings.", { FCVAR_DONTRECORD } )
|
|
|
|
hook.Add( "DrawOverlay", "CaptureFrames", function()
|
|
|
|
if ( !activeVideo ) then return end
|
|
|
|
activeVideo:AddFrame( FrameTime(), true )
|
|
|
|
end )
|