WriteFile
(clip, string filename, string expression1,
... , string expression16, bool "append", bool "flush")
WriteFileIf
(clip, string filename, string expression1,
... , string expression16, bool "append", bool "flush")
WriteFileStart
(clip, string filename, string expression1,
... , string expression16, bool "append")
WriteFileEnd
(clip, string filename, string expression1,
... , string expression16, bool "append")
WriteFile
vyhodnocuje výraz expressionN , převádí výsledek na řetězec
a vloží ho do souboru.
"Run-time" proměnná current_frame se nastavuje tak, že ji použijete ve výrazu "expression"
(pracuje to podobně jako ScriptClip, pro více podrobností se podívejte do jeho dokumentace).
current_frame je nastaven na -1 když je skript načten a na -2 když je skript zavřen.
WriteFile
vyhodnocuje výrazy ''expression'' a generuje výstup do každého snímku. WriteFileIf
je podobný, ale generuje výstup jen když je první výraz true.
V obou případech se při otvírání nebo zavírání skriptu žádné výstupy negenerují. Všimněte si, že
protože je výstup produkován jen pro ''rendrované'' snímky, nebude žádný výstup na žádných snímcích,
pokud výsledek filtru není použit v odvození finálního výsledku
skriptu.
WriteFileStart
a WriteFileEnd
generují výstup pouze u otvíraného nebo zavíraného skriptu, neprovádí nic se žádnými snímky.
V obou případech jsou výrazy ''expression'' vyhodnocovány přesně jednou, na místě filtru ve skriptu.
Když je append =
true , pak bude výsledek připojen k existujícímu souboru.
Když
je flush = true , pak
je soubor zavřen a znovu otevřen po každé operaci, takže můžete ihned vidět výsledky (může to být pomalejší).
Pro WriteFileStart
a WriteFileEnd
je flush vždy true .
Výchozí nastavení append je vždy true
, kromě WriteFileStart
(zde je false).
filename = "c:\myprojects\output.txt" # vytvoříme zkušební video Version() # výrazem je zde pouze proměnná, která je vyhodnocena a vložena do souboru # dostanete soubor s číslem snímku v každém řádku WriteFile(filename, "current_frame") # tento řádek je napsán při otevření skriptu WriteFileStart(filename, """ "Toto je zahlavi" """) # a tento, když je skript zavírán WriteFileEnd(filename, """ "Nyni byl skript ukoncen" """)
Podívejte se jak můžete použít trojité uvozovky pro napsání řetězce uvnitř řetězce!
Pokud výraz nemůže být vyhodnocen, zobrazí se chybová zpráva.
V tomto případě nastane, že se u výrazu If ve funkci WriteFileIf
předpokládá hodnota true
.
# povede ke sdělení "I don't know what "toto" means" WriteFile(filename, "toto je nesmysl")
... na tomto příkladu vidíte jak použít vyhodnocovací funkce ("runtime functions") spolu s FrameEvaluate:
# vytvoří zkušební video pro obdržení různých snímků Version.FadeIn(50).ConvertToYV12 # toto natiskne číslo snímku, dvojtečka ":" a průměrný jas (luma) tohoto snímku colon = ": " WriteFile("F:\text.log", "current_frame", "colon", "AverageLuma")
Nebo můžete natisknout aktuální čas:
# vytvoří zkušební video Version.FadeIn(50).ConvertToYV12 # toto natiskne číslo snímku, aktuální čas a průměrný jas (luma)tohoto snímku # trojité uvozovky jsou nutné pro vložení uvozovek místo řetězce WriteFile(last, filename, "current_frame", """ time(" %H:%M:%S") """, "AverageLuma")
Ve WriteFileIf
je PRVNÍ výraz předpokládán logický (true nebo false).
Pouze pokud je TRUE , tak budou další výrazy vyhodnocovány a řádky tištěny.
(Pamatujte: && je AND, || je OR, == je EQUAL, != je NOT EQUAL)
Způsob jakým můžete zcela vynechat řádky ve výstupním souboru je:
# vytvoří zkušební video pro obdržení různých snímků Version.FadeIn(50).ConvertToYV12 # toto natiskne číslo snímku, ale jen u snímků kde AverageLuma je mezi 30 a 60 WriteFileIf(last, filename, "(AverageLuma>30) && (AverageLuma<60)", "current_frame", """ ":" """, "AverageLuma")
$English Date: 2008/12/21 09:23:02 $
Český překlad:12.2.2009