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 $