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
calcola expressionN, converte il risultato
in una stringa e mette il risultato in un file.
La variabile "run-time" current_frame è impostata
in modo tale che si possa usare in una "expression"
(questo funziona in modo analogo di ScriptClip, per maggiori info
guardare la sua documentazione).
current_frame è impostato a -1 quando lo script è caricato
e a -2 quando è chiuso.
WriteFile
genera un output ad ogni frame, WriteFileIf
genera un output solo se la prima espressione è true
, non
c'è output al momento dell'apertura dello script o alla sua chiusura.
WriteFileStart
e WriteFileEnd
generano output solo
al momento dell'apertura dello script o alla sua chiusura, nessuna azione ad
ogni frame.
Quando append = true
, il risultato sarà accodato
ad un file esistente.
Quando flush = true
, il file è chiuso e riaperto
dopo ogni operazione in modo tale che si può verificare il risultato
immediatamente.
Per WriteFileStart
e WriteFileEnd
flush
è sempre true
.
Il default per append è sempre true
, ecceto che
per WriteFileStart
(dove è false
).
filename = "c:\myprojects\output.txt" # create a test video to get frames Version() # l' espressione qui è solo una variabile, che è attualizzata ed inserita nel file # si ottiene un file col framenumber in ogni linea WriteFile(filename, "current_frame") # qu è scritta una riga all'apertura dello script WriteFileStart(filename, """ "This is the header" """) # e qui quando viene chiuso WriteFileEnd(filename, """ "Now the script was closed" """)
Osservate come si possono usare le triple-quotes per digitare una stringa in una stringa!
Se l'espressione non può essere attualizzata, al suo posto è
scritto un messaggio di errore.
Nel caso succeda ciò con If-expression in WriteFileIf
il
risultato si assume sia true
.
# ne risulta un "I don't know what "this" means" WriteFile(filename, "this is nonsense")
... con questo esempio vedete come si usano le "runtime functions" assieme a FrameEvaluate:
# Version.FadeIn(50).ConvertToYV12 # questo stampa il frame number, un ":" ed il luma medio colon = ": " WriteFile("F:\text.log", "current_frame", "colon", "AverageLuma")
O forse volete stampato anche l' actual time:
# create a test video to get different frames Version.FadeIn(50).ConvertToYV12 # questo stampa il frame number, il current time e l'average luma # le triple quotes sono necessarie per inserire quotes dentro una stringa WriteFile(last, filename, "current_frame", """ time(" %H:%M:%S") """, "AverageLuma")
In WriteFileIf
la PRIMA espressione deve essere boolean (true
o false).
Solo se essa è TRUE vengono attualizzate le altre espressioni e viene
stampata una riga.
(Ricordare: && è AND, || è OR, == è EQUAL, != è
NOT EQUAL)
# create a test video to get different frames Version.FadeIn(50).ConvertToYV12 # questo stampa il frame number, ma solo dei frames in cui AverageLuma è tra 30 e 60 WriteFileIf(last, filename, "(AverageLuma>30) && (AverageLuma<60)", "current_frame", """ ":" """, "AverageLuma")
$Date: 2004/10/03 21:26:01 $