フォルダの構成およびスクリプトの設定

手術ビデオを保存するためのフォルダ (ディレクトリ) として、video の下に 手術ビデオ フォルダを用意します。

なお、NAS のコントロール画面の File Station では、DS920P > homes > DSAdmin > video > 手術ビデオ ですが、NAS の OS である Linux からみた実際のフォルダは /volume1/homes/DSAdmin/video/手術ビデオ および /var/services/homes/DSAdmin/video/手術ビデオ/ (エイリアス) となります。

タスクスケジューラーというアプリが NAS に用意されていますので、 それを使って手術ビデオ圧縮スクリプトを定期的に実行させる設定をします。

コントロールパネルのタスクスケジューラーを起動してください。

メニューから 作成 - 予約タスク - ユーザー指定のスクリプト を選択します。

全般 タブでタスクの名称を指定します。 ここでは、opvs-cron.php と指定しています。 ユーザーには、root を指定してください。 警告表示が出ますので、OK を押してください。

スケジュール タブでは、デフォルトが「毎日 00:00 に実行」となっています。 実行の間隔は「毎日」を推奨します。 実行の時刻は、手術ビデオファイルをアップロードする業務の終了後の時刻を適宜指定してください。 通常は 00:00 で構いませんので変更の必要はありません。

なお、万一圧縮処理に24時間以上かかってしまう場合があっても、ここで指定するビデオファイルの圧縮スクリプトは多重起動しないようにしてありますので心配ありません。 しかし実際には、後述の圧縮オプション指定にてソフトウェア圧縮が設定され、かつ、よほど手術数が多い病院様以外ではそれほど時間がかかるものではありません。

タスク設定 タブでは、起動するスクリプトを指定します。 ここでは、

php /var/services/homes/DSAdmin/dokuwiki/dokuwiki_data/scripts/opvs-cron.php -d 180 -q 26

と入力してください。 ここで、 -d 180 は「180日経過した元ファイルを削除」, -q 26 は「圧縮品質 26」 を意味します。

オプション指定の詳細

opvs-cron.php コマンドは、php スクリプトですので、php から起動します。 オプションは以下の通りです。

  usage: php opvs-cron.php
  options: -d/--days [圧縮前ファイル削除までの日数] (30以上のみ。指定しない場合は削除なし)
           -q/--qp [圧縮品質 1(最良)~51(最悪)] (指定しない場合はソフトウェアエンコード)
           -v/--verbose
           -h/--height [出力映像の height] (デフォルトは 720)
           -help

圧縮前のファイルを一定期間経過後に削除するには、-d にてその日数を指定します。 当初は -d 180 など長めに設定しておき、HDD 容量の残容量に応じて適宜変更してもよいでしょう。 30日以下には設定できません。 また、このオプションを設定しない場合は削除は行いません。

圧縮ビデオの画質は -q で設定します。 実用的な値は 20~30 で、20 が高画質で大容量、30 が低画質で低容量です。 26だと画質に問題なく概ね1/5~1/10に圧縮される場合が多いようです。 圧縮率や画質は元ファイルの解像度などによりますので、実際にお使いのシステムで圧縮結果を見て調整されることをお勧めします。

なお、-q を設定しないと、ハードウェアエンコーダーを利用しないソフトウェアモードでの動作となりますので、圧縮処理に10倍近く時間がかかります。

圧縮ビデオの解像度 (映像の高さ) は -h で設定します。 デフォルトは 720 ですが、自由に設定できます。 映像の幅は、自動的に設定されます。

オプション指定の例

デフォルト設定

php /var/services/homes/DSAdmin/dokuwiki/dokuwiki_data/scripts/opvs-cron.php -d 180 -q 26
  • 180日経過後に、元ファイルを削除します。
  • 圧縮品質は 26 で、映像の劣化がほぼわからない程度です。
  • 垂直解像度はデフォルトの 720 です。水平解像度はアスペクト比を保って自動計算されます。
  • ファイルサイズは、元ファイルが full HD (1980×1080) の場合に1/5程度となります (ファイルの条件により左右されます)。
  • 圧縮にかかる時間は、実再生時間の1/5程度となります。

高圧縮設定

php /var/services/homes/DSAdmin/dokuwiki/dokuwiki_data/scripts/opvs-cron.php -h 480 -d 30 -q 30
  • 30日経過後に、元ファイルを削除します。
  • 圧縮品質は 30 で、映像の劣化がやや気になります。
  • 垂直解像度は 480 です。水平解像度はアスペクト比を保って自動計算されます。
  • ファイルサイズは、元ファイルが full HD (1980×1080) の場合に1/15程度となります (ファイルの条件により左右されます)。
  • 圧縮にかかる時間は、実再生時間の1/6程度となります。

ウェブサーバーソフトウェアは、Docker を用いて起動しますが、 そのコマンドを NAS の起動時に自動的に実行するように設定します。

Docker を用いる理由は、セットアップを容易にすることと、最新の公式安定バージョンを利用するためです。 DockerSynology DS 720+ / DS920+ のセットアップの具体的手順 で導入済みです。

NAS の起動時に自動的に起動するよう設定するには、 先ほどと同様にタスクスケジューラーを利用します。

ここではメニューから 作成 - トリガーされたタスク - ユーザー指定のスクリプト を選択します。

全般 タブでタスクの名称を指定します。 ここでは、start opvs server と指定しています。

ユーザーには、root を指定してください。 警告表示が出ますので、OK を押してください。

タスク設定 タブでは、起動するスクリプトを指定します。 ここでは、

cd /var/services/homes/DSAdmin/dokuwiki/
docker-compose down
sleep 10
docker-compose up -d
cd ~

を設定してください。

ここでいったん docker-compose down としてから docker-compose up -d しているのは、何らかのエラーが生じた際に再起動するためです。 また、sleep 10 するのは、環境によってコンテナの起動に失敗することがあるのでそれを回避するためです。

OK を押しますと、タスクリストが表示されますので、以下のようになっていることを確認してください。

これで、NAS の起動時にサーバーが起動するようになりました。

この時点では、手術ビデオサーバーは起動されていませんので、 opvs-cron.php および start opvs server を右クリックメニューから手動で実行しておきます。

初回起動時は、手術ビデオサーバーに必要な Docker image をインターネットからダウンロードしてから起動します。
そのため、NASはインターネットに接続されている必要がありますし、起動には1~2分程度かかります。
起動が確認できた後は、必要に応じて NAS をインターネットから切り離すことが可能となります。