TOPへ
ソース一覧
利用許諾
FAQ
お問い合わせ
関連資料

フレキシブル制作システム

概要

放送局では、これまで番組の制作や保存に用いてきたVTRテープに代わり、ハードディスクやメモリーを利用するファイルベースの番組制作システムの導入が進められています。NHKではファイルベースシステムのさらに先のシステムとして、より効率的なワークフローを目指し、フレキシブル制作システムを提案しました。
フレキシブル制作システムでは、ファイル化された番組素材や放送番組は、拡張が可能な分散ストレージにすべて保存し、どこからでも利用することができます。また、従来の放送局機器はすべてソフトウェア化され、これらがすべて広帯域のネットワークを介してどこからでも利用出来ることを想定しています。番組制作者は、特別なハードウェアやソフトウェアを導入することなく、ウェブブラウザを用いて番組素材を管理し、編集をおこなうことができます。
データやソフトウェアのリソースを集約して仮想化し、ユーザはコンピューターをネットワークに接続するだけで、集約されたリソースの中から必要なものだけを利用する形態をクラウド・コンピューティングといいますが、フレキシブル制作システムは放送局をクラウド・コンピューティング化するシステムといえます。

システム構成概要

図1はシステムの全体構成です。


図1.全体構成 (概要)

フロントエンドはウェブブラウザを用いた編集インターフェースと番組編集用ウェブサーバで構成されます。番組編集用ウェブサーバは、ウェブブラウザ上にノンリニア編集のインターフェースを提示します。ユーザは編集インターフェースを用いて番組編集をおこないます。編集用ウェブサーバは、インターフェース上で操作がおこなわれるたびに画面を更新し、操作の結果を編集記述として出力します。

番組編集用ウェブサーバで出力された編集記述は編集用グリッドクライアントが解析し、ウェブ編集用グリッドミドルウェアを用いたサービス群で分散処理されます。ウェブ編集用グリッドミドルウェアは、グリッド・コンピューティングの標準的ライブラリであるGlobus Toolkitを用いて構築されています。編集用グリッドクライアントは、リソース選択サービスを用いて適切なサービスを選択し、編集記述に従って、ファイル転送サービスに映像カットの転送を要求します。またスーパーインポーズの合成や色変換などの映像処理をおこなう必要があるときは、映像処理サービスに映像処理の要求をおこないます。
ファイル転送サービスは、編集の要求があったカットの転送をおこないます。ファイル転送サービスは、分散ファイルシステムを構成するファイルサーバのうち、素材ファイルを保存したファイルサーバから、編集されている番組(完成番組)のファイルを保存するサーバに、編集に必要なカットの転送をおこないます。映像処理の要求があった場合には、映像処理サービスを中継しながらファイル転送をおこなうことで、映像処理の要求があったカットの映像処理をおこないます。

番組素材ファイルはすべてMXF(Material Exchange Format) を用いてファイル化されて保存されます。これらのファイルは、複数のファイルサーバを1つの仮想的なファイルサーバとして扱うことのできる分散ファイルシステムによって管理されます。
分散ファイルシステム内の映像カットの転送は、高速ファイル転送システム(FMFTP)を用いておこなわれます。映像処理をおこなうときは、映像処理サービスを中継しながら転送し、1フレームごとに映像処理をおこないます。
分散ファイルシステムを構成する各ファイルサーバは、編集インターフェースの要求に応じて、番組素材ファイルや編集中の番組ファイルを編集インターフェースに映像フレーム単位で送信することができます。これによって、この分散ファイルシステムに保存されている素材ファイルや編集しているタイムライン上の番組ファイルを、編集インターフェースの動画再生ウィンドウでプレビューすることができます。

図2はフレキシブル制作システムのプロトコルスタックです。


図 2 プロトコルスタック

システム構成

フレキシブル制作システムを構成する各プログラムは以下のようになっています(図3)。


図 3システム構成図

番組編集用ウェブサーバは、ウェブブラウザにノンリニア編集のための画面表示をおこない、ブラウザ上での動作にあわせてプロジェクトデータベースおよび素材ファイルデータベースを操作して編集記述を作成し、編集用グリッドクライアントを起動し、その編集記述を渡します。編集用ウェブサーバプログラムはPythonで書かれておりapache2上で動作します。編集インターフェースはHTMLやJavaScriptで記述されています。

プロジェクトデータベースは、編集中のタイムライン上の編集データ全体や編集作業環境を管理します。プロジェクトデータベースは編集用ウェブブラウザと同じサーバにある必要はなく、複数の編集用ウェブサーバが1つのプロジェクトデータベースサーバを利用することで場所にとらわれることのないシームレスな編集作業環境を提供できます。プロジェクトデータベースはMySQLを用いたデータベースです。

素材ファイルデータベースは、ノンリニア編集機のクリップビンにあたる番組素材を管理するデータベースです。これもMySQLを用いたデータベースです。素材ファイルデータベース管理デーモンは、分散ファイルシステムに保存されている番組素材ファイルやタイムライン上で編集している完成番組ファイルを、定期的にチェックしメタデータやサムネイルを作成して、素材ファイルデータベースに登録します。番組素材ファイルのMXFを解析し、ファイルサイズなどのメタデータを作成は、素材ファイルメタデータ生成プログラムがおこないます。また編集画面のクリップビンに表示する番組素材ファイルのサムネイルの作成は、サムネイル画像生成プログラムがおこないます。

新規の番組編集のために新しくプロジェクトが生成されたとき、編集用ウェブサーバプログラムはプロジェクトデータベースに新しいプロジェクトを登録し、分散ファイルシステム上に、番組の長さだけのフレーム数を持ち、各フレームサイズが0のMXFファイルを新規に生成します。このファイルを生成はMXF生成プログラムがおこないます。

編集画面上で分散ファイルシステムに保存されている素材ファイルや編集しているタイムライン上の番組ファイルの動画再生は、編集インターフェースから分散ファイルシステムに保存されている目的のファイルに直接アクセスして再生します。再生するファイルが、分散ファイルシステムを構成するファイルサーバのうち、どのファイルサーバに再生をおこなうファイルが保存されているのかの探索は、再生サーバ名前解決プログラムがおこないます。

ウェブ編集用グリッドミドルウェアは、番組編集用ウェブサーバとフレキシブル制作システム上の各サービスとの間、および各サービス間で通信をおこなうための基本となるミドルウェアです。番組編集用ウェブサーバが各サービスへ要求をおこない、リソース選択サービスが各サービスの負荷状態を収集する通信に用います。各サービス上ではGlobus Toolkitが提供するWS-CコンテナとWS-Javaコンテナが起動します。各サービスのWS-Cコンテナは、編集用グリッドクライアントからの要求に対してエージェントプログラムを起動し、サービスが提供する処理を実行します。ファイル転送サービスと映像処理サービスでは、各ホストの負荷状態を検出するGanglia (Ganglia Monitoring Daemon)というプログラムを起動します。このGangliaが収集した情報をWS-Javaコンテナを用いてリソース選択サービスのMDS(Monitoring and Discovery System)に登録します。

編集用グリッドクライアントは、番組編集用ウェブサーバから出力されたXML形式の編集記述を解析し、カットごとの処理に分割し、ファイル転送サービスと映像処理サービスへ要求するための記述に変換します。処理に必要となるサービスをどのホストにあるサービスに処理させるかの決定はリソース選択サービスがおこないます。編集用グリッドクライアントは、リソース選択サービスから通知されたホストで起動しているファイル転送サービスや映像処理サービスに対して、それぞれファイル転送と映像処理の要求をおこないます。これらのグリッドミドルウェア上のサービス間での通信はGlobus Toolkitが定義するSOAPによっておこなわれます。

ファイル転送サービスは、要求された映像カットの転送をおこないます。ファイル転送エージェントは、高速ファイル転送を要求するターミナルの役割を果たし、ファイル転送サービスプログラムから要求された転送元と転送先のファイルサーバを接続し、指定された番組素材ファイルの指定されたフレームだけを転送します。映像処理が必要な場合は、ファイルサーバ間に指定された映像処理サービスを中継して接続します。

映像処理サービスは、要求された映像カットの映像加工処理をおこないます。映像処理エージェントは、高速ファイル転送処理と協調し映像加工処理をおこなうため、高速ファイル転送プログラムを起動します。番組素材ファイルが映像フレーム単位で圧縮符号化されている場合は、デコード→映像加工処理→エンコードをおこないながら映像フレーム単位で転送することができます。

リソース選択サービスは、編集用グリッドクライアントからリソース選択要求があったとき、MDSに登録されている負荷状態とそれまでの各サービスの利用回数に基づいて、サービスを決定し、そのホストアドレスを通知します。映像処理サービスはカラーコレクションやスーパーインポーズなど映像処理内容がサービスによって異なりますが、サービス名からその処理内容のサービスが起動している映像処理サービスがどれかを判断します。

分散ファイルシステムは、複数のファイルサーバでファイルを分散して保管、管理します。利用者からは1台のファイルサーバとしてマウントでき、通常のディスクと同等にディレクトリおよびファイルを作成できます。各ファイルサーバ、番組編集用ウェブサーバ、素材ファイルデータベース、ファイル転送サービスでは分散ファイルシステムプログラムを起動させます。

各ファイルサーバには番組素材ファイルの転送をおこない、要求に基づいた編集をおこなうためにいくつかのプログラムが起動しています。
高速ファイル転送プログラムは、ファイルサーバ間で、番組素材ファイルのうち、カット編集や映像処理に必要な映像フレームを高速に転送するためのプログラムです。映像処理が必要な場合は、映像処理サービスを中継してファイル転送をおこないます。
MXF高速編集プログラムは、完成番組ファイルに対して必要な映像フレームのみ挿入、削除、上書きなどの編集操作を高速におこなうためのプログラムです。ファイルに対して、映像フレームの部分的な挿入、削除といった操作を、高速におこなうために挿入削除機能付きファイルシステムを用います。

各ファイルサーバには、編集インターフェース上で番組素材ファイルや完成番組ファイルをプレビューするためにMXF動画再生プログラムが起動されています。番組編集用ウェブサーバからの再生の要求に基づき、編集インターフェースから要求された映像フレームのデータを直接転送します。編集インターフェースは、VLC Media Playerを用いて動画を再生します。

動作環境

下記の環境で動作確認しています。

また、プログラムによって表のソフトウェアやライブラリ、パッケージが必要となります。コンパイルにはgccを用いています。各プログラムのコンパイル、インストール、動作環境、バージョン、起動については各プログラムの説明書を参考にしてください。

編集用グリッドクライアント ウェブ編集用グリッドミドルウェア ファイル転送サービス 映像処理サービス リソース選択サービス
Globus Toolkit
Ganglia
Xerces-c++

分散ファイルシステム
omniORB
FUSE

番組編集用ウェブサーバ プロジェクトデータベース 素材ファイルデータベース MXF動画再生サーバ 編集インターフェース
python
mysql
python-mysql
apache2
apache2-mod_python
apache2-mod_php5
php,
php5-mbstring,
php5-mysql ,
mcrypt,
php5-mcrypt
Firefox
VLC Media Player Plug-in

インストール、設定手順

フレキシブル制作システムをインストールするための全体の手順を説明します。各プログラムのインストール方法は、それぞれのプログラムの説明書を参照してください。
ここでは、2台のサーバ(ホスト名はfs01、fs02とします)でファイルサーバを構成し、1台のサーバ(ホスト名はws01)に番組編集用ウェブサーバ、プロジェクトデータベース、素材ファイルデータベースをインストールし、1台のサーバ(ホスト名はgs01)にリソース選択サービス、1台のサーバ(ホスト名はgs02)にファイル転送サービス、1台のサーバ(ホスト名はgs03)に映像処理サービスをインストールする場合を例に、その手順を説明します。各ホストのファイアーウォールは設定しないか、起動するプログラムの通信がおこなえるよう適切に設定してください。

1. ファイルサーバのインストール

サーバfs01、fs02へファイルサーバをインストールします。手順は以下のとおりです。

サーバfs01、fs02に挿入削除機能付ファイルシステムをインストールします。挿入削除機能付きファイルシステムでフォーマットしたハードディスクのパーティションを/raidディレクトリにマウントします。

サーバfs01、fs02で分散ファイルシステムをコンパイルします。分散ファイルシステムプログラム(node)の実行に用いるディレクトリを/raidディレクトリ下にするため、/raidディレクトリにpoolとcacheという名前でディレクトリを作成し、bigpoolディレクトリ下にシンボリックリンクを作成します。

root# chmod 777 /raid
gtuser% mkdir /raid/pool
gtuser% mkdir /raid/cache
gtuser% cd ~/bigpool
gtuser% ln -s /raid/pool ./pool
gtuser% ln -s /raid/cache ./cache

分散ファイルシステムを起動します。
サーバfs01でストレージノード(node)を起動し、/bigpoolにマウントします。

gtuser% cd ~/bigpool
gtuser% cp ./pool.org/* ./pool/    ←00000.ino, 00000.dirがコピーされる(これはfs01のみで実行してください)
gtuser% ./node -p 9000 -i

root# mkdir /bigpool        ←ここからは別のコンソールで実行する
root# chmod 777 /bigpool
gtuser% cd ~/bigpool
gtuser% ./start_mnt.sh /bigpool


サーバfs02も同様に、ストレージノード(node)を起動し、/bigpoolにマウントします。

gtuser% cd ~/bigpool
gtuser% ./node -p 9000 -h fs01:9000 -i

root# mkdir /bigpool        ←ここからは別のコンソールで実行する
root# chmod 777 /bigpool
gtuser% cd ~/bigpool
gtuser% ./start_mnt.sh /bigpool

以上で/bigpoolディレクトリがサーバfs01とサーバfs02で共有されます。/bigpoolディレクトリに適当なファイルを保存して、2台のサーバ間で共有できているか確認してください。

サーバfs01、fs02に高速ファイル転送システムをインストールします。サーバへ転送された映像カットのデータが保存されるディレクトリとして、/raidディレクトリ下にcmdディレクトリを作成します。FMFTPサーバプログラムの起動は以下のようになります。ルート権限で実行してください。iオプションはフルパスで指定してください。

root# mkdir /raid/cmd
root# chmod 777 /raid/cmd
root# ./fmftpd -o /raid/pool -e /raid/cmd -i /home/gtuser/FMFTP/FMFTPD/main.ini

サーバfs01、fs02でMXF高速編集プログラムをコンパイルします。MXF高速編集プログラムを以下のように起動します。

gtuser% cd ~/mxfeditd
gtuser% ./mxfeditd /raid/pool /raid/cmd

サーバfs01、fs02にMXF動画再生サーバをインストールします。MXF動画再生サーバを説明書通り起動します。

2.1. ウェブ編集用グリッドミドルウェア、各サービスのインストール

サーバws01、gs01、gs02、gs03に各種サービスをインストールします。手順は以下のとおりです。

Globus Toolkitのインストールと設定はここを参考にしてください。

2.2. 高速ファイル転送システムのインストール

サーバgs02に高速ファイル転送システムをインストールします。transtermをコンパイルしたあと、実行ファイル(transterm)をnhkgrid/binディレクトリ下にコピーしてください。起動はファイル転送エージェントがおこないます。

サーバgs03に高速ファイル転送システムをインストールします。FMFTPサーバプログラムを説明書通り起動してください。

2.3. 分散ファイルシステムのインストール

サーバgs02で分散ファイルシステムプログラムをコンパイルします。
次に、ファイル転送エージェントが、転送要求があったカットの素材ファイルがどのファイルサーバに保存されているかを検索するために利用するディレクトリを作成します。nhkgridディレクトリ下にtmpというディレクトリを作成してください。次に検索用ノード(tap_kvd)を起動します。分散ファイルシステムですでに起動しているファイルサーバがfs01、ポート番号が9000の場合、起動コマンドは以下のようになります。

gtuser% ~/nhkgrid/tmp
gtuser% chmod 777 ~/nhkgrid/tmp
gtuser% cd ~/bigpool
gtuser% mkdir ./pool
gtuser% mkdir ./cache
gtuser% ./tap_kvd -p 11001 -h fs01:9000 -d /home/gtuser/nhkgrid/tmp -i

3.1. 番組編集用ウェブサーバのインストール

サーバws01で分散ファイルシステムプログラムをコンパイルします。
次に、/bigpoolディレクトリを作成し、fs01とfs02から構成される分散ファイルシステムをここにマウントします。分散ファイルシステムプログラムを展開したディレクトリで以下のコマンドを実行してください。分散ファイルシステムプログラムを展開するディレクトリ名と、分散ファイルシステムをマウントするディレクトリ名が同じなので注意してください。

gtuser% cd ~/bigpool
gtuser% mkdir ./pool
gtuser% mkdir ./cache
gtuser% ./tap_svr -p 11000 -h fs01:9000

root# mkdir /bigpool        ←ここからは別のコンソールで実行する
root# chmod 777 /bigpool
gtuser% cd ~/bigpool
gtuser% ./start_mnt_sh /bigpool

次に、番組編集用ウェブサーバの再生サーバ名前解決プログラムと素材ファイルデータベース管理デーモンが利用するディレクトリ/raidを作成し、検索用ノード(tap_kvd)を起動します。分散ファイルシステムですでに起動しているファイルサーバがfs01、ポート番号が9000の場合、起動コマンドは以下のようになります。tap_kvdの起動はtap_svrを起動したコンソールとは別のコンソールで起動します。

root# mkdir /raid
root# chmod 777 /raid
gtuser% cd ~/bigpool
gtuser% ./tap_kvd -p 11001 -h fs01:9000 -d /raid -i

3.2. 各データベースのインストール

サーバws01にプロジェクトデータベース、素材ファイルデータベースをインストール、設定し、素材ファイルデータベース管理デーモンをインストールします。手順は以下のとおりです。

3.3. 番組編集用ウェブサーバのインストール

サーバws01に番組編集用ウェブサーバをインストールします。手順は以下のとおりです。

関連文献

商標

NovellならびにSUSEは米国および日本におけるNovell, Inc.の登録商標です。
LinuxはLinus Torvals氏の登録商標です。
Globus Toolkitはシカゴ大学の商標です。
MySQL は日本およびアメリカ合衆国、欧州連合およびその他の国におけるMySQL ABの登録商標です。
CORBAはObject Management Group, Inc.の登録商標です。