42秒の紹介動画を編集ソフトなしで:動く地図を1フレームずつ計算して撮る
「迷子のペットを探す」のために42秒の短編を作りました。編集ソフトは一度も開かず、画面収録もしていません。映像は1コマずつ計算して出しています。やり方と、途中で失敗した6つの版を書いておきます。
2026-08-31 作者 William Hsu
まず完成品
構成は単純です。犬の写真 → 写真が地図上のピンに縮む → 地図がズームアウトして案件が増えていく → 台湾全土 → ピンが飛び出してサイトの表紙に並ぶ。
冒頭の犬は生成したもの。これは先に言っておきます
冒頭のダックスフントはローカルの動画生成モデル(MiniMax H3、自宅のグラフィックボードで実行)で生成したもので、 その「迷子案件」は撮影用のブラウザの中にしか存在しません。スクリプトで一時的に地図へ差し込んだだけで、 本番サイトにそのデータはありません。理由は単純で、あのサイトは本物のペットを探すために使われているからです。 偽のデータを混ぜるのは、他人の注意を撮影素材として使うようなものです。見た目はまったく同じで、データベースはきれいなまま。
動画に出てくる他のピンはすべて地図上の実在の通報で、「8千匹以上」も政府オープンデータの数字です。
地図は画面収録では撮れない
いちばん素直なのはブラウザにカメラ移動をさせて画面収録することです。1回試してやめました。 密度を最大にすると画面に写真ピンが400個以上あり、連続ズームでは激しくコマ落ちして、 20秒かけた引きが収録では一瞬で飛んでしまいます。
そこで静止画を撮って繋ぐ方式に。6段階のズームで底図を1枚ずつ撮り(1段ごとに1.68レベル、約3.2倍差)、 その間のトランジションはWeb Mercatorの投影式で自前計算します。各ショットの中心の緯度経度とズームレベルが分かれば、 「前のショットの視野」が「次のショット」のどこに当たるかを算出でき、指数補間で切り出して拡大すれば等速の引きになります。 600フレーム、1枚ずつ書き出しました。

ピンは底図と分けて処理する
最初の版はスクリーンショットをそのまま拡大していて、すぐ指摘が入りました。 地図上のピンは画面上で常に68ピクセル固定で描かれていて、地図の拡大縮小では大きさが変わりません。 スクリーンショット全体を拡大すると、ピンまで大きくなったり小さくなったりして、区間が変わるたびに「脈打つ」のです。
正解は底図とピンを分けること。底図は普通に拡大縮小し、ピンは別に撮って緯度経度から画面位置を換算し、 一定の大きさで1コマずつ貼り戻します。こうすると引いていくとき案件が1個ずつ「湧いて」出てきて、ピンの大きさは常に一定です。
ピンの撮り方はさらに3回作り直しました。どれも人の目で見つかった問題です。
- スクリーンショット全体から1個分を切り出して背景を抜く——密集地では隣のピンまで入ってしまい、1枚の中に犬が3匹
- ピンを1個ずつ表示して撮り、「ピンあり引くピンなし」で背景を抜く——ピンの影は半透明なので、 引き算すると影の輪の中に下の道路名まで取り込まれてしまう
- 最終的に:撮影時は地図を全部隠し、ページの背景を透明にして、本物のアルファ付きPNGを直接得る。これで影を半透明の影としてきれいに保持できた

ナレーションと音楽も合成
ナレーションはマイクロソフトの台湾男性ボイス(edge-tts)を8%遅くして、映像のタイムラインに1文ずつ合わせました。 音楽はフリー素材を探すつもりでしたが、結局プログラムで合成しました。フェルトピアノ風のアルペジオで、 どの音にもアタックとディケイのエンベロープをつけています。最初の版は純粋な正弦波で、電話のプッシュ音のような唸りでした。 楽器らしく聞こえるかどうかは、エンベロープで決まります。
7版目でようやく完成
この動画は全部で7版出ました。どの問題もプログラムのエラーではなく、人が見て気づいたものです。 隣のピンまで写り込む、影が底図を連れてくる、目撃マーカーがスプライトに混ざる、画質がSDのまま、 最後のナレーション1文を3回書き直し。AIは動画を撮れますが、「ここがおかしい」は全部人が指摘するしかない。 これがこの件でいちばん正直な分業だったと思います。
ツール本体は lazetool.com/lost-pet(中国語)。