1時間200円の動画編集環境(構築編)

AWSAmazon Web Services)上にDaVinci Resolveの動画編集環境を作ろうと思いまずは料金を試算してみたところ、Linux環境の方がWindows環境より3割程安かったのと面倒なインストール作業が不要な便利なAMI(Amazon Machine Image)があることが分かったので、AWS上にLinux版DaVinci Resolveの動画編集環境を構築していくことにした。

環境構成(おさらい)

GPU搭載EC2インスタンスと、NICE DCV(リモートデスクトップソフト)やNVIDIA GPUドライバが入ったAmazon Linux 2ベースのAMIを使う。EBSはとりあえず100GBだけ確保する。

AWSサービス スペック 備考
EC2 g4dn.4xlarge(16 vCPU、64MBメモリ、1 GPU、225GB NVMe SSD 225GBストレージ付き。ただし停止/起動で内容はクリアされる
EBS 汎用SSD(gp2)100GB -
AMI NICE DCV for Amazon Linux 2 -

事前準備

g4dnインスタンスを起動する前の準備として、EC2 vCPUの制限引き上げリクエストを行う。デフォルトでは、G系インスタンスの利用可能vCPU数は0なので、必要に応じて16なり32なりへ変更する。やり方は以下が参考になる。

aws.amazon.com

EC2

ステップ1:Amazonマシンイメージ(AMI)

AWS Marketplaceから「NICE DCV for Amazon Linux 2」を選択する。 f:id:davmemos:20220306150835p:plain

ステップ2:インスタンスタイプの選択

セットアップ中はマシンパワーは不要なので、g4dnシリーズの最低スペック(g4dn.xlarge)をまずは選択する。 f:id:davmemos:20220306151129p:plain

ステップ3:インスタンスの詳細の設定

基本的にはデフォルトのままでOKだが、EC2インスタンスからNICE DCVのライセンス情報(専用のS3バケット)へのアクセス権が必要なので、ここを参考にポリシーとEC2へアタッチするロールを新たに作成し、作成したIAMロールを以下のように設定しておく。 f:id:davmemos:20220306163004p:plain

ステップ4:ストレージの追加

ルートボリュームのサイズを100GBへ変更する。 f:id:davmemos:20220306151346p:plain

ステップ5:タグの追加

何も追加せず次へ。

ステップ6:セキュリティグループの設定

デフォルトのままだとすべてのIPアドレスにポートが解放されてしまうので、TCP/UDP共にマイIPを設定しておく。また、SSH接続用のポートも追加しておく。 f:id:davmemos:20220306152426p:plain

あとは、キーペアを選択(or 新規作成)してEC2インスタンスを起動しておく。

パスワード設定

起動したEC2インスタンスに、設定したキーペアとユーザ名ec2-userを使ってログインし、ec2-userのパスワードを設定する。

$ sudo passwd ec2-user

詳しくはNICE DCV for Amazon Linux 2(Marketplace)の「Usage Instructions:」を参照。

NICE DCV

セッションの作成

EC2インスタンスでパスワード設定後、さらに以下のコマンドをec2-userで実行し、リモートデスクトップ接続のためのセッションを作っておく。

$ dcv create-session ec2-user-session
$ dcv list-sessions
Session: 'ec2-user-session' (owner:ec2-user type:virtual)

NICE DCVクライアント

NICE DCVクライアントはWindows版、Linux版、MacOS版に加え、Webブラウザをクライアントとしても使うことができる(Webブラウザを使う場合は https://public_dns:8443 (public_dnsはEC2インスタンスのパブリック IPv4 DNSやアドレス)で接続可能)。簡単なのはWebブラウザだが、今後DaVinci Resolve Speed Editorをリモート接続して使ってみたいので、Windows版クライアントをインストールする。

docs.aws.amazon.com

NICE DCVクライアントを起動したら、接続先のホスト名とec2-user、先ほど設定したパスワードを入力すると、EC2インスタンス上のデスクトップ環境にアクセス可能になる。 f:id:davmemos:20220306160936p:plain f:id:davmemos:20220306161011p:plain f:id:davmemos:20220306164028p:plain

DaVinci Resolve

Chromium

DaVinci ResolveをEC2サーバ上で直接ダウンロードするためにChromiumGoogle Chromeオープンソース版)をインストールする。

$ sudo amazon-linux-extras install epel
$ sudo yum install chromium

DaVinci Resolveダウンロード&インストール

ChromiumブラウザでBlackmagic Designのサイトへ行き、DaVinci Resolve(無料版)のLinux版をダウンロードする。 f:id:davmemos:20220306221831p:plain

以下を実行し、DaVinci Resolveをインストールする。

$ unzip DaVinci_Resolve_17.4.4_Linux.zip
$ chmod +x ./DaVinci_Resolve_17.4.4_Linux.run
$ sudo ./DaVinci_Resolve_17.4.4_Linux.run -i

無事にインストールされたようだ。 f:id:davmemos:20220306222709p:plain

起動してみると、GPUNVIDIA Tesla T4)も問題なく認識された。 f:id:davmemos:20220306222816p:plain f:id:davmemos:20220306222848p:plain

なお、DaVinci Resolve(無料版)のLinux版だと、MP4ファイル出力に非対応なので、MP4ファイルを扱いたい場合はWindows環境を構築するか、Studio版を入手するしかなさそうだ。 f:id:davmemos:20220306223649p:plain

DaVinci Resolve Speed Editor

最後に、EC2上のDaVinci ResolveにSpeed Editorを接続してみる。

まずはここを参考に、Speed Editorが接続された手元のPCにてNICE DCVクライアントに付属の dcvusblist.exe というコマンドを実行し「DaVinciResolveSpeedEditor,255,・・・」という文字列を取得する(右クリックでCopy filter stringを選択するとエラーになることがあるので、その場合は見ながら次の作業をやる)。

次にここを参考にNICE DCVサーバ(先ほど作成したEC2インスタンス)の /etc/dcv/usb-devices.conf の最後に先ほどの「DaVinciResolveSpeedEditor,255,・・・」を追記し、NICE DCVサーバを再起動する(再起動後はもう一度NICE DCVセッションを作り直す)。

$ sudo vi /etc/dcv/usb-devices.conf
$ sudo systemctl stop dcvserver
$ sudo systemctl start dcvserver
$ dcv create-session ec2-user-session

NICE DCVクライアントを起動してEC2インスタンスにログイン後、ウィンドウ左上のSettingsメニューから「Removable Devices...」を開き、「DaVinci Resolve Speed Editor」のスイッチをONへ切り替える。 f:id:davmemos:20220306230615p:plain f:id:davmemos:20220306230657p:plain

そして、EC2インスタンス上でDaVinci Resolveを起動すると・・・Speed Editorが認識されてリモートデスクトップ経由で操作が可能になる(素晴らしい!)。

TODO

以上でAWS上にDaVinci Resolveの動画編集環境が整った。あとは作業内容に応じてインスタンスタイプを変更したり、EBSを追加したりすればそれなりの作業ができるかと思う。ただ・・・DCVセッションはサーバの停止・起動により毎回削除されるので、今のままだと作業のために起動するたびにSSHでログイン→セッション作成をしなければならないのが面倒だったりする。それと、g4dnインスタンスには揮発性のNVMe SSDが付属しているのが、ここまでの設定だけだと活用することができない。なので、次回以降、このあたりの細かい設定についてもう少し書いておこうと思う。

2022/3/7追記

EC2インスタンス起動時にNICE DCVセッションを自動的に作る設定について書きました。

davmemos.hatenablog.com

2022/3/8追記

NVMe SSDを活用するための設定について書きました。

davmemos.hatenablog.com

2022/3/9追記

性能を測定してみました。

davmemos.hatenablog.com