QTの情報を取り出す(初歩)

作品制作時は、大きく2つの面のバランスで成り立っています。運用と表現。

AppleScriptで運用面を強化すると、巡り巡って、映像表現にも差が表れます。表現に割ける時間が増えるからです。

しかし、どんなに運用面を強化して、快適で鉄壁な制作現場を構築しても、それはあくまで「作品表現が豊かになる『お膳立て』が出来た」に過ぎません。理想的なワークフローを築き上げても、面白い作品を作れるか否かは、無惨な言い方ですが「作り手の映像表現の才能」次第です。

でも、ワークフローがグチャグチャだと、どんなに才能豊かな人材を集めても、ロスが大きくて、作品表現に届く前に半減してしまいます。

要は、運用と表現の両面を、磨き続けるココロが必要なわけです。

まあ、往々にして、映像表現力に自信を持つ人は運用を軽んじ、作業を回す事を重視する人は映像表現に疎くなる傾向があります。どちらに偏り過ぎてもマズいのよね‥‥と、よく自己批判します。



今回のスクリプトは、QTの扱いの基礎です。

QuickTimeムービーファイルが、どのような仕組みなのかを、AppleScriptを使って探ってみます。

AppleScriptで簡単にQTの内容を調べるには、「QuickTime Player 7」を使います。「X」じゃダメです。

QuickTime Player 7で何か適当なQTファイルを開いて、そのファイルの様子を探ります。

探り方は、以下のようなスクリプトを書いて、調べます。

tell application "QuickTime Player 7"
    properties of document 1
end tell

「document 1」とは、一番手前に表示されているムービーの事です。

すると、以下のような「ドキュメント」情報が返されます。

{video brightness adjustment:0.0, name:"f.mov", play all frames:false, current node:missing value, id:1, max time loaded:2640, resizable:normal, time:0, show detailed movie info window:false, natural dimensions:{1920, 1080}, color table:missing value, default node:missing value, show sound controls:false, show video controls:false, show movie info window:false, class:document, show hot spots:false, preferred audio balance track:missing value, fast start:false, output muted:false, poster frame time:0, href:"", pan range:{0.0, 0.0}, selection duration:0, video contrast adjustment:0.0, current chapter:missing value, sound balance:0, sound volume:256, auto quit when done:false, savable:true, pan angle:0.0, time scale:24, presentation mode:normal, bass gain:0, tilt range:{0.0, 0.0}, scale:half, treble gain:0, streaming status message:"", preferred audio gain track:missing value, playing:false, auto close when done:false, aperture:clean, auto play:false, video tint adjustment:0.0, controller type:«constant ****Quic», dimensions:{960, 540}, duration:2640, pan tilt speed:0.0, data size:389908742, field of view:0.0, play selection only:false, live stream:false, looping:false, current chapter track:{}, auto present:false, preferred rate:1.0, video color adjustment:1.0, path:"/Volumes/外付けのHDD/Render/f.mov", stored stream:false, index:1, modified:true, saveable:true, selection start:0, local playback:true, done:false, palindrome:false, current matrix:{{0.5, 0.0, 0.0}, {0.0, 0.5, 0.0}, {0.0, 0.0, 1.0}}, rate:0.0, tilt angle:0.0, language:"SystemDefault", preview:{0, 0}, streaming status code:0, presentation background color:{0, 0, 0}, selection:0, quit when done:false, close when done:false, data rate:3545923, original file:file "外付けのHDD:Render:f.mov", plugin settings:{}, display state:normal, field of view range:{0.0, 0.0}, zoom rate:0.0, load state:complete}

‥‥いっぱいありますネ。

例えば、「natural dimensions」のラベルの値を見てみると、{1920, 1080}になっています。ナチュラルディメンションとは、自然な寸法、つまりQTファイルの「素の状態の」ピクセル寸法が解るわけです。

一方、「dimensions」は、{960, 540}になっています。これはつまり、現在表示している状態のピクセル寸法です。私が1/2の大きさで表示してたので、この値になっているのですネ。

重要なのは、time scaleとdurationの項です。このドキュメントは、time scaleは「24」、durationは「2640」となっています。1秒をどのようなスケールで扱うかがtime scale、そのtime scaleに基づいてムービーの尺を表したのがdurationです。

つまり、このドキュメントの尺は「2640/24」で110秒です。今回流用したムービーファイルは、前にフリッカー参考例で出したファイルなのですが、確かに1分50秒です。After Effectsで、24.0fpsでレンダリングしたので、とても歯切れの良い簡単な数値「24」になってくれたのです。

fpsが23.976の場合は、ちょっと状況が変わってきます。「time scaleは23.976になるのでは?」と思うかも知れませんが、「time scaleは整数で扱う」事と決められているので、そうはなりません。私の手元のQTで調べたところ、

23.976fpsのtime scale → 24000

‥‥でした。ちなみに、23.976fpsのQTの1フレームのデュレーションは

duration of frame 1 of track 1 of document 1 → 1001

‥‥でした。つまり1フレームの長さが1001という設定なのです。これを計算してfpsを求めると、

「24000/1001」=23.976024

‥‥です。まあ、たしかに。末尾の「024」という端数にそこはかとない不安が残りますが、概ね‥‥。


計算しやすいように、今度は1分ジャストの23.976fpsムービーを開いて調べてみます。

23.976fpsの1分のQTファイルのdurationは、1441440でした。

これを慌てて、「duration/time scale」なんていう計算をすると、めっちゃ誤差が出ます。

1441440/24000=60.06

結果は「60.06秒」‥‥たしかに。でも現場ではあくまで60秒として扱わなければなりません。

ドロップフレームではなく、ノンドロップフレームの「ご都合」をちゃんと考慮して計算式を組み立てましょう。

こんな感じに。

duration/フレームのデュレーション/(round (time scale/フレームのデュレーション))

round」とは四捨五入の事です。今回の場合は「23.976024を四捨五入」という事ですネ。

つまり、

1441440/1001/24=60.00

で、正しいデュレーションが返ります。あくまで「ビデオ上の時間軸」の‥‥ですネ。

こんな感じで、QTから様々な情報を得て計算すると、映像制作の各場面で用いる事ができます。

しかしなあ‥‥、こういう計算をしていると、心が荒んでくるのよネ。30fpsが29.97になったいきさつ、そして、29.97のノンドロップが生まれた背景‥‥。そして、さらに23.976 (24p)や59.94 (60p)に拡大して‥‥。「29.97DF」「29.97NDF」「30.0」の3つが混在する状況って‥‥。

それらの経緯を踏まえて、今回のような「23.976と24.0の二枚舌」のスクリプトを作らなければなりません。仕方ない事とは言え‥‥ねえ。

96fpsも「どうせ」96.0fpsにはならんのでしょうね。

アソシエーションの偉いさんたち、どこかで一回、リセットしてくれませんかネ。‥‥ハードの互換性とか言ってたら、この先何百年もずっと呪いから逃れられないよ。アレな廃棄物と同じで「解決は未来の人間に任せばよい」ってか。

その場しのぎの結果オーライ。面倒な運用を延々と引きずる。‥‥プロの現場が理路整然としているのでは決して無い‥‥事の証ですネ。


calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    
<< October 2017 >>

selected entries

categories

archives

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM