LVS

Aus WiFX - The Karaoke Wiki for ASSCalc, NyuFX, Lua, AFX, Tenfex & Templater
Version vom 28. September 2013, 13:50 Uhr von Youka (Diskussion | Beiträge) (Beispiele erweitert)

Wechseln zu: Navigation, Suche

LVS

LVS.png

LVS ("Lua Video Sync") ist ein Filter-Plugin für die populären Windows Frameserver Avisynth, VirtualDub und DirectShow. Durch Angabe eines Skriptes (Lua Code enthaltend) als Parameter zum durch das Plugin registrierten Filter lassen sich Videobearbeitungen vornehmen (unter Avisynth auch Audio).

Die Macht der Lua Programmiersprache in Version 5.2, erweitert u.a. durch eine einfache, mächtige 2D Grafikbibliothek, ermöglicht eindrucksvolle grafische Bearbeitung von streamenden Video Frames in hoher Geschwindigkeit und mit vielen Mitteln.

Geschichte

Die Entwicklung von LVS begann im Jahre 2013 durch den Fansubber "Youka".

Inspiriert von Overlua wurde LVS als Nachfolger jenes unausgereiften Projektes beschlossen und sollte dessen großes Potenzial, programmatisch (live) zu rendern und manipulieren, in einem frischen Gewand ausschöpfen. Als Alternative zu AFX zum typesetten komplexerer Erscheinungen und als mächtigeres Karaoke-FX Werkzeug fand es seinen Nutzen bei Fansubbern.

Definition

Frameserver plugin

Grafikprogrammierung

Erweiterungen

Beispiele

Folgende Beispiele sind mögliche Skripte zur Videobearbeitung mit LVS.

Minimal

Farben aller Frames werden invertiert.

function GetFrame(frame, frame_i)
	frame:invert()
end

Zeichnen

"Hello world!" mit einem rot-zu-grün Farbverlauf wird auf Frames gemalt.

-- Text position
local pos = {
	x = 100,
	y = 100
}
-- Text and his style
local text_properties = {
	"Hello world!",	-- Text
	"Arial",	-- Font
	50,	-- Size
	true,	-- Bold?
	true,	-- Italic?
	true,	-- Underline?
	true	-- Strikeout?
}
-- Text dimensions
local text_extents = {g2d.text_extents(table.unpack(text_properties))}

-- Process current frame
function GetFrame(frame, frame_i)
	-- Create drawing context for frame
	local ctx = frame:get_context()
	-- Define path as color destination
	ctx:path_add_text(pos.x, pos.y, table.unpack(text_properties))
	-- Set linear gradient as color
	ctx:set_source(
		g2d.create_lgradient(pos.x, pos.y, pos.x + text_extents[1], pos.y + text_extents[2])
		:add_color(0, 1,0,0)
		:add_color(1, 0,1,0)
	)
	-- Fill path with color
	ctx:fill()
end

Karaoke

Screenshots

Links