オブジェクトファイルとは
AviUtlの「オブジェクトファイル」について。
タイムファイル上で右クリック>ファイル>オブジェクトファイルのエクスポートを選択すると、拡張子「exo」の付いたファイルが書き出せる。
これを逆にインポート or タイムファイル上にドラッグ&ドロップすると、読み込める。
このオブジェクトファイルを、AviUtlを通さずに生成するコトができれば、動画の作成が楽になるかもシレナイてコトで、調査/帖佐(鹿児島県 姶良市)を開始。
オブジェクトファイルの中身
ムァヅ、オブジェクトファイルの中身がゐかナるモノであるか、調べる必要がある。
AviUtlで1280×720の新規プロジェクトを用意し、テキスト「柿の種」だけを入れた状態で、オブジェクトファイルをエクスポートする。
エクスポートしたオブジェクトファイルはShift-JISであり、テキストエディタで開ける。
その内容は、以下の通り。
-----
[exedit]
width=1280
height=720
rate=30
scale=1
length=30
audio_rate=44100
audio_ch=2
[0]
start=1
end=30
layer=1
overlay=1
camera=0
[0.0]
_name=テキスト
サイズ=300
表示速度=0.0
文字毎に個別オブジェクト=0
移動座標上に表示する=0
自動スクロール=0
B=0
I=0
type=0
autoadjust=0
soft=1
monospace=0
align=4
spacing_x=0
spacing_y=0
precision=1
color=ffffff
color2=000000
font=MS UI Gothic
text=ff676e302e7a00000...(以下略)
[0.1]
_name=標準描画
X=0.0
Y=0.0
Z=0.0
拡大率=100.00
透明度=0.0
回転=0.00
blend=0
-----
テナ形で、動画のサイズ(width/height)、テキストのサイズや位置、色、フォント(MS UI Gothic)などが読み取れるが、テキストだけが「謎の文字列」。
文字数を調べると4096、右側が「0」で埋められた固定長となっている。
他の部分はソノムァ々読ムェルのに、テキストだけ「謎の文字列」なのは、オブジェクトファイルがShift-JISだからか?
「ff676e302e7a」で「柿の種」なので
柿:ff67
の:6e30
種:2e7a
となる。
文字コード検索で調べると、UTF-16だね、コレ。
PHPで生成
任意のテキストを、この「謎の文字列」に変換するコードを拵(コシラ)ゑた。
# 動作環境の文字コードはUTF-8。
-----
function text_to_exo($text){
$pairs = array_chunk(unpack('C*',mb_convert_encoding($text,'UTF-16','UTF-8')),2) ;
foreach($pairs as &$pair){
$pair = vsprintf('%2$02x%1$02x',$pair) ;
}
$pairs = implode($pairs) ;
$pairs = str_pad($pairs,4096,'0',STR_PAD_RIGHT) ;
return $pairs ;
}
print text_to_exo('柿の種') ;
-----
コレで、先ほどの謎の文字列(ff676e302e7a00000...)が得られた。
他の部分は普通のテキストなので、Shift-JISとして成型し、拡張子「exo」で書き出せば、オブジェクトファイルが生成できる。
DB内にあるデータを利用して動画を作成するなどの活用方法があるが、当方の環境では活用場面が見ツからナゐ...
同時に、サーバー上にある音声読上げソフトにテキストを投げれば、音声ファイルも手に入るンで、字幕+音声の動画も作れそうだが、二次利用(YouTube含む)は禁止されているコトがアるンで注意/中尉が必要。
関連:AviUtlが6年ぶりに更新、キャッシュサイズの上限が拡大!
関連:rigaya氏のAviUtlの出力プラグインの削除方法
関連:AviUtlのプラグイン出力にQSVEncが2ツ出る重複問題