picture home | art | events | music | rack extensions | downloads | pixel blog

omino pixel blog

pixels, motion, and scripting
entries for category "after effects"
david van brink // Thu 2007.11.15 22:07 // {after effects extendscript}

Binary Files in ExtendScript

Adobe’s done a real whiz-bang job with their scripting support, known as ExtendScript. They’ve filled in some important missing pieces to make JavaScript into a full-featured programming environment, include network communications, XML, and graphic UI elements. These are uniformly available across all their scriptable applications (with, alas, minor variations with the UI support).

This post shows a little example of how to use the humble File object.

Like all good library writers, they’ve designed File to shield us from the absolute blazing stupidity of different linefeed characters. It detects CR, LF, LFCR, and CRLF and still chugs along reading your files, line by line, correctly. No, really, it does work!

So the exciting case of course is, how to defeat that and read or write binary files? This example demonstrates the recipe.


// adobe extendscript writing binary data
var f = new File("/Users/poly/junk/jsbinTest.bin");
f.encoding = "BINARY";

f.open ("w");

for(i = 0; i < 256; i++)
	f.write(String.fromCharCode (i));

f.write("this file is: " + f.fsName + "\n");

f.close();

They've got this highly-developed notion of "encoding", but, in truth, you can usually either ignore it, for text, or set it to the magic value BINARY. Easy peasy!

Note also the standard JavaScript String.fromCharCode(integer).

And here's the file created by that ExtendScript code snippet.

poly@Omino-Lux: hexdump -C ~/junk/jsbinTest.bin 
00000000  00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  |................|
00000010  10 11 12 13 14 15 16 17  18 19 1a 1b 1c 1d 1e 1f  |................|
00000020  20 21 22 23 24 25 26 27  28 29 2a 2b 2c 2d 2e 2f  | !"#$%&'()*+,-./|
00000030  30 31 32 33 34 35 36 37  38 39 3a 3b 3c 3d 3e 3f  |0123456789:;<=>?|
00000040  40 41 42 43 44 45 46 47  48 49 4a 4b 4c 4d 4e 4f  |@ABCDEFGHIJKLMNO|
00000050  50 51 52 53 54 55 56 57  58 59 5a 5b 5c 5d 5e 5f  |PQRSTUVWXYZ[\]^_|
00000060  60 61 62 63 64 65 66 67  68 69 6a 6b 6c 6d 6e 6f  |`abcdefghijklmno|
00000070  70 71 72 73 74 75 76 77  78 79 7a 7b 7c 7d 7e 7f  |pqrstuvwxyz{|}~.|
00000080  80 81 82 83 84 85 86 87  88 89 8a 8b 8c 8d 8e 8f  |................|
00000090  90 91 92 93 94 95 96 97  98 99 9a 9b 9c 9d 9e 9f  |................|
000000a0  a0 a1 a2 a3 a4 a5 a6 a7  a8 a9 aa ab ac ad ae af  |................|
000000b0  b0 b1 b2 b3 b4 b5 b6 b7  b8 b9 ba bb bc bd be bf  |................|
000000c0  c0 c1 c2 c3 c4 c5 c6 c7  c8 c9 ca cb cc cd ce cf  |................|
000000d0  d0 d1 d2 d3 d4 d5 d6 d7  d8 d9 da db dc dd de df  |................|
000000e0  e0 e1 e2 e3 e4 e5 e6 e7  e8 e9 ea eb ec ed ee ef  |................|
000000f0  f0 f1 f2 f3 f4 f5 f6 f7  f8 f9 fa fb fc fd fe ff  |................|
00000100  74 68 69 73 20 66 69 6c  65 20 69 73 3a 20 2f 55  |this file is: /U|
00000110  73 65 72 73 2f 70 6f 6c  79 2f 6a 75 6e 6b 2f 6a  |sers/poly/junk/j|
00000120  73 62 69 6e 54 65 73 74  2e 62 69 6e 0a           |sbinTest.bin.|

So why interact with binary files and, oh, say, After Effects? I have some ideas...

oh, i dont know. what do you think?


david van brink // Thu 2007.11.8 00:30 // {after effects}

A Thing About Machines

I was going to write a short post about using After Effects expressions to capture the “feel” of machines. But I got so distracted by this simple example I put together:

++more

oh, i dont know. what do you think?


david van brink // Thu 2007.10.25 22:38 // {after effects}

Synthetic Camera Motion

Why I Like HD

++more

3 comments
Pedro // Mon 2009.09.21 01:431:43 am

Hello David. Iร‚ยดm working exactly as you are and would just like to know how you animated that wide angle distortion when movind the cam. Can you tell me if it is it a plugin or a native AFX function? Today I only do rescaling and repositioning..

david van brink // Mon 2009.09.21 05:145:14 am

Hi Pedro — you will laugh when I tell you. I used a 3d layer, and the pan/zoom is done with camera angling. It’s kind-of strange looking… but in a different way than 2d pan/zoom. ๐Ÿ™‚

Imran // Sat 2009.12.26 12:2112:21 pm

Hey David.
I saw your synthetic motion video on youtube over a year ago and I’ve been trying to emulate that for the longest time! I have an HV30 and After Effects CS3 as well.

I looked everywhere for a tutorial or a how-to video or anything without any luck so finally I thought I’ll ask the creator himself… If you can, please show us a video tutorial on how you did that? I’d really appreciate it. Thanks and keep up the good work ๐Ÿ™‚

oh, i dont know. what do you think?


david van brink // Tue 2007.10.23 22:08 // {after effects gear}

HV20 at 24P

Canon HV20

Finally got a pretty decent video camera: a Canon HV20. Just came out earlier this year, and seems to be all the rage; lucky for me it was also what our little town of Santa Cruz had available on a moment’s notice, at Circuit City.

Nice enough. Not as macho as I’d prefer. I got spoiled borrowing a Canon GL2 from work (they use it to make really really bland training videos). This HV20 is tiny, and doesn’t have the overhead microphone/carry-handle and square sunshade of a real indie camera. Adding a gen-u-ine Canon wide angle adapter and accessory-shoe microphone (not a handle!) helps to bulk it up a little. Oh, and to shoot nicer video, too.

The menu system is all right; after a day or two of attention I learned all of it. You can override the focus and the exposure settings somewhat. It has a variable-speed zoom lever; a ring would be nicer.

24P

The HV20 records SD or HD video, apparently at a full 1920 by 1080, which is nice (for reasons I’ll demonstrate in an imminent post). It can record at either 30fps interlaced, or 24fps progressive. That’s cool.

(To recap — interlaced video is full of annoying horizontal stripes, and progressive isn’t. And 24 is the magic frame rate of real movies, so we take it as axiomatic that it’s “better” than 30 or 60 frames per second.)

Unfortunately, it doesn’t tag the firewire stream with the appropriate 24p markers, and applies a 3:2 pulldown automatically. And I read somewhere on the internetz that this was a specific choice by Canon because it’s a “consumer grade” product.

But! No matter. After Effects can fix it, trivially. Just capture the footage at full resolution. I used iMovie to capture, which works great. It offers a choice to capture at 960 by 540 half resolution; don’t do it!

Then import the footage to After Effects. Right click on the asset and choose the “Interpret Footage” menu item. Click the “Guess 3:2 Pulldown” button and ho ho! it doesn’t guess right every time, you may have to try all 10 combinations of upper/lower and five pulldown cadences.

And here are two QuickTimes showing the same footage as captured, and deinterlaced by After Effects 7.0.

24p in glorious 24p
24p with ugly 3:2

These were shot with a 1/1000th second shutter speed, at 33 1/3rd rpm. These movies show a tiny cropped area from the vast HD capture…

Try the QuickTime single step buttons (or left/right arrow keys) to see the difference between glorious 24fps and ugly, ugly 3:2 pulldown at 30fps. Glorious!

3 comments
Eugenia // Mon 2007.10.29 00:1412:14 am

The second footage is not ugly. You simply forgot to de-interlace before you export. If you had de-interlaced, it would have looked the same.

david van brink // Wed 2007.10.31 10:1810:18 am

Thanks for the pointer!

So… deinterlace on export? I’m not familiar, but it sounds like it would obtain the same result as deinterlace on import? I guess the key is to be sure to do one or the other?

My assumption was that you want to remove the pulldown as early as possible — on the interpret footage, right at the source — so that any further manipulation has flat frames.

The first ae comp is 24fps, with interpreted 24p footage,
The second ae comp is 30fps, with non-interpreted 60i footage — shot with the “24p” setting on the camera. The intent was to show how to extract the flat frames.

I’m still learning my way around the “video” aspects of ae.

Jonas Hummelstrand // Sun 2008.03.9 16:024:02 pm

No, no. David is correct, with the NTSC version of the HV-20 you need to remove the pulldown to get 24P. On the PAL version, you get 25P without all the hassles…

oh, i dont know. what do you think?



Deprecated: Function the_block_template_skip_link is deprecated since version 6.4.0! Use wp_enqueue_block_template_skip_link() instead. in /home/polyomino/omino.com/pixelblog/wp-includes/functions.php on line 6114

0.0253s
(c) 2003-2023 omino.com / contact poly@omino.com