前回の記事はこちら
【開発効率100倍】Google EarthとGISデータを連動させて「鉄道展望動画」を完全自動生成するパイプラインを開発してみた
はじめに
前回の記事の最後に、こっそりこんなことを書きました。
「このパイプライン、実は左右の車窓動画も同時に生成できます」
今回はその続きです。同じパイプラインを使いながら、2つのことに挑戦しました。
- 路線を東海道新幹線・東京→京都(全区間)に拡大
- カメラを3方向同時(前・左45°・右45°)に増やして1画面に合成
まず動画をご覧ください。
(※https://youtu.be/MAFw9t18dgw)
動画について正直に言うと
新幹線は速いです。非常に速いです。
小田原城も富士山も「一瞬だけ映る」くらいのスピード感で、展望動画としての見やすさという意味では、前回の在来線(東海道線・横浜〜小田原)のほうが風景をじっくり楽しめます。
ただ、俯瞰からの3方向同時映像という形式は、実際に乗っているときには絶対に見えない角度を見せてくれる点が面白いと思っています。特に左右の斜め映像は、トンネルの連続する区間や、富士山がどのくらい長い間見えているかを実感できます。
前回からの変更点:何が増えて、何が難しくなったか
変更① カメラが1本→3本になった
前回は「前方を向いた1台のカメラ」だけでした。今回はこれに加えて、左右それぞれ45度横を向いた2台を追加し、合計3台分の動画を生成しています。
3台分とはいえ、カメラのルートデータ(パス)は同じものを使い回しています。Google Earth Studio上で「カメラの向きだけ変えた別バージョン」を書き出すことで対応しました。
最終的にこの3本の動画を、動画合成フレームワーク「Remotion」上で1画面に重ねています。
┌───────────┬────────────────────┬──────────┐
│ LEFT 45° │ │ RIGHT 45° │
│ (小窓) │ 前方展望(メイン) │ (小窓) │
└───────────┴────────────────────┴──────────┘
│ 日英バイリンガル字幕 │
└───────────────────────────────────────────┘
変更② 区間が大幅に長くなった
| 項目 | 前回 | 今回 |
|---|---|---|
| 路線 | 東海道線(在来線) | 東海道新幹線 |
| 区間 | 横浜→小田原(約50km) | 東京→京都(約513km) |
| 動画の尺 | 約2分 | 約5分19秒(9574フレーム) |
区間が10倍以上になりましたが、パイプラインの仕組み自体は前回と同じです。OSMから路線の座標データを読み込み、カーブや勾配を計算してカメラの動きに変換する——この流れはそのまま使えました。
変更③ ナレーションを19箇所に追加した
前回は字幕・ナレーションなしのサイレント動画でしたが、今回はAzure TTS(テキスト読み上げAI)で英語ナレーション19箇所+日本語字幕を追加しています。
ナレーションは事前に音声ファイルとして生成しておき、Remotion上でフレーム番号を指定してシーケンスに配置します。「このフレームのときにこの音声を流す」をコードで書くわけです。
// このような形で各ナレーションの開始タイミングを定義しています
{ startFrame: 1820, text: "見て、左!小田原城だ!あっという間に過ぎ去ってしまう!" },
{ startFrame: 1970, text: "ここから一気に箱根の山岳地帯へ突入!" },
{ startFrame: 2380, text: "うわぁ、すごい!富士山がすぐ目の前に迫ってきた!" },
ここが今回一番地道な作業でした。全速力で走る新幹線なので、たとえば小田原城が映っている区間はわずか数秒。プレビューを見ながら何度もフレーム番号を調整する繰り返しです。
変更④ トンネル区間の自動検出
OSMの地図データにはトンネルの位置情報も含まれています。今回はこのデータを活用して、トンネルに入ったとき自動的に左右の小窓を黒くする処理を追加しました。
実際の新幹線でも、トンネル内では窓の外は真っ暗です。それを再現しています。東京〜京都の区間には23箇所のトンネルがあり、特に熱海〜富士川にかけての区間はトンネルが連続します。
この処理も人手でトンネル位置を入力しているわけではなく、OSMデータをそのまま使っています。
苦労した点
技術的に一番悩んだのは「動画を一時停止する機能」でした。
品川や新横浜で停車するとき、「動画を止めてナレーションが終わるまで待つ」という挙動を実装しようとしました。ところがRemotionのVideo再生の仕組み上、これがうまく動かず、最終的には一時停止機能なし・ナレーションのタイミング調整だけで対応する方針に切り替えました。
そういう意味では、「完璧な仕上がり」というより「現時点でできる範囲の実装」という位置付けです。
まとめ:パイプラインの拡張可能性
今回の取り組みで確認できたのは、前回構築したパイプラインは路線データさえあればスケールするということです。
東海道線(在来線)→東海道新幹線(高速鉄道)と対象を変えても、OSMデータの取り込みからカメラパス生成・動画合成の流れは同じ手順で動きました。カメラを3方向に増やす対応も、パイプライン側の大きな改修なしに実現できています。
動画の完成度という意味では課題もあります。新幹線は速すぎて風景の説明が追いつかないという問題や、停車駅でのフリーズ機能が実装できていない点などです。在来線のゆっくりとした速度感のほうが、展望動画としては説明しやすいかもしれません。
次のステップとしては、より低速な路線(山岳鉄道など)での試みか、あるいは停車駅のフリーズ機能の実装あたりを検討しています。
最後まで読んでいただきありがとうございました。
#動画制作 #鉄道 #新幹線 #GoogleEarth #自動生成 #Remotion #東海道新幹線 #プログラミング


コメント