JP2012044306A - 分散トランスコーディングシステム並びに方法、及びトランスコーディング装置 - Google Patents

分散トランスコーディングシステム並びに方法、及びトランスコーディング装置 Download PDF

Info

Publication number
JP2012044306A
JP2012044306A JP2010181727A JP2010181727A JP2012044306A JP 2012044306 A JP2012044306 A JP 2012044306A JP 2010181727 A JP2010181727 A JP 2010181727A JP 2010181727 A JP2010181727 A JP 2010181727A JP 2012044306 A JP2012044306 A JP 2012044306A
Authority
JP
Japan
Prior art keywords
task
video
transcoding
node
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010181727A
Other languages
English (en)
Other versions
JP5412385B2 (ja
Inventor
Luis Loyola
ロヨラ ルイス
Sanson Horacio
サンソン ホラシオ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SKILL UP JAPAN CORP
Original Assignee
SKILL UP JAPAN CORP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SKILL UP JAPAN CORP filed Critical SKILL UP JAPAN CORP
Priority to JP2010181727A priority Critical patent/JP5412385B2/ja
Publication of JP2012044306A publication Critical patent/JP2012044306A/ja
Application granted granted Critical
Publication of JP5412385B2 publication Critical patent/JP5412385B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

【課題】シングルポイント障害及びシステム拡張の際のボトルネック問題を解消することができる分散トランスコーディングシステムを提供する。
【解決手段】複数のノード5〜9と、少なくとも一つのデータベース4とを有する分散トランスコーディングシステム1であって、前記複数のノード5〜9は、前記データベース4上のトランスコーディングに関するタスクリストから取得したタスクを実行するタスク実行部5a〜9aと、前記タスク実行部5a〜9aが前記取得したタスクを実行した後に実行されるべき少なくとも一つのタスクを生成し、前記タスクリストを更新するタスク生成部5b〜9bと、を備える。
【選択図】図1

Description

本発明はマルチメディアデータの分散トランスコーディングシステム並びに方法、及びトランスコーディング装置に関するものである。
YouTube(登録商標)のようなユーザが作成したコンテンツを掲載するサイトや、インターネットを介してテレビコンテンツをオンデマンドに配信するフールー(Hulu)のような企業の出現により、インターネットビデオに革命が起こりつつある。これに伴い、オーディオビジュアルコンテンツの作成、編集及び配信に使用されるビデオコーデックも増加している。これらのコーデックには、H.264/AVC、Theora、MPEG4のような非常に複雑なものも含まれる。
他方、様々な端末装置や再生装置においてこれらのインターネットビデオを再生するためには、様々なビデオフォーマットが要求される。例えば、携帯電話は3GP又は3GP2に、PCはAVI、MPEG4、Windows Media又はFLVに、IPTV(Internet Protocol Television)のセットトップボックスはMPEG2に、それぞれ対応している。
従って、同じインターネットビデオを、様々な装置及びプラットフォームで再生するためには、様々なビデオフォーマットに変換する必要がある。このためには、ビデオ配信会社は、膨大な量のビデオトランスコーディングタスクを行わなくてはならない。
要求されるフォーマットやコーデックによっては、トランスコード処理は非常に複雑であり時間がかかる。例えば、一つのフルハイビジョン動画をH.264/AVC動画に変換するためには、比較的高スペックのPC(Quad Core 2.9GHz, 4GB RAM)を用いても、動画自体の長さの約8倍〜10倍の時間がかかる。トランスコードにこれ程の時間がかかると、ビデオ配信会社が、数百〜数千ものビデオを様々な出力フォーマット及びコーデックにトランスコードする際に、タイミングよくトランスコーディングシステムを動作させることが非常に難しくなる。更に、一つの装置により一つの動画データをトランスコードするシステムは、装置の故障に対して非常に脆弱である。
そこで、トランスコーディングに複数の装置を用いるトランスコーディングシステムが開発されてきた。例えば、特許文献1に記載のシステムは、スケジューラを内蔵するソースサーバを備える。ソースサーバは、動画データをセグメントに分割し、各セグメントを各トランスコード装置へ送信する。そして、各トランスコード装置は、トランスコードした動画データを結合サーバへと送り、結合サーバはそれらを結合する。このように、複数のトランスコード装置によりトランスコード処理を並列的に実行するため、処理効率が向上する。
特開2005−176069号公報
しかし、このようなシステムは、ソースサーバに備えられたスケジューラがどのセグメントをどのトランスコード装置に送信するかを決定し、分配するため、シングルポイント障害に対して脆弱である。更には、従来の分散トランスコーディングシステムは、システムの拡張性にも欠いていた。例えば、処理を高速化するために、何百又は何千ものトランスコード装置を用いる分散トランスコーディングシステムを構築することを想定した場合、スケジューラの負荷が増大してしまうため、トランスコード装置の数を増やしても、スケジューラがボトルネックとなって、タスク処理の迅速性を十分に向上させることができない。
したがって、かかる点に鑑みてなされた本発明の目的は、シングルポイント障害及びシステム拡張の際のボトルネック問題を解消することができる分散トランスコーディングシステムを提供することにある。
上記目的を達成する第1の観点に係るシステムの発明は、
複数のノードが協調して一つのデータベースを構築する分散トランスコーディングシステムであって、
前記複数のノードは、
前記データベース上のトランスコーディングに関するタスクリストから取得したタスクを実行するタスク実行部と、
前記タスク実行部が前記取得したタスクを実行した後に実行されるべき少なくとも一つのタスクを生成し、前記タスクリストを更新するタスク生成部と、を備える
ことを特徴とするものである。
第2の観点に係る発明は、第1の観点に係るシステムであって、
前記タスク生成手段は、前記タスク実行手段が所定のタスクを実行した後に複数のタスクを生成する、ことを特徴とするものである。
上記目的を達成する第3の観点に係る方法の発明は、
複数のノードと、少なくとも一つのデータベースとを用いる分散トランスコーディング方法において、
前記複数のノードが、
データベース上のトランスコーディングに関するタスクリストから取得したタスクを実行するステップと、
前記取得したタスクを実行した後に実行されるべき少なくとも一つのタスクを生成し、前記タスクリストを更新するステップと、を含む
ことを特徴とするものである。
第4の観点に係る発明は、第3の観点に係る方法であって、
前記複数のノードが、所定のタスクを実行した後に複数のタスクを生成する、ことを特徴とするものである。
上記目的を達成する第5の観点に係る方法の発明は、
少なくとも一つのデータベースを有する分散トランスコーディングシステムに含まれるノードであって、
前記データベース上のトランスコーディングに関するタスクリストから取得したタスクを実行するタスク実行部と、
前記タスク実行部が前記取得したタスクを実行した後に実行されるべき少なくとも一つのタスクを生成し、前記タスクリストを更新するタスク生成部と、を備える
ことを特徴とするものである。
本発明によれば、シングルポイント障害及びシステム拡張の際のボトルネック問題を解消することができる分散トランスコーディングシステムを提供することができる。
本発明の一実施の形態に係る分散トランスコーディングシステムの概略構成を示す図である。 本発明の一実施の形態に係る分散トランスコーディングシステムにおける処理の流れを示すフローチャートである。 本発明の一実施の形態に係る分散トランスコーディングシステムにおける、段階的なタスクの実行を説明する図である。 本発明の一実施の形態に係る分散トランスコーディングシステムにおける、タスクの選択、実行、生成過程を示す概略フローチャートである。
以下、本発明の実施の形態について、図を参照して説明する。
図1は、本発明の一実施の形態に係る分散トランスコーディングシステムの概略構成を示す図である。分散トランスコーディングシステム1は、ネットワーク2に接続するデータベースサーバ3、複数のノード5〜9、ストレージ10、クライアント11を有する。ネットワーク2は、例えば、LAN(local area network)やインターネットである。データベースサーバ3は、例えば、リレーショナルデータベースマネジメントシステム(RDBMS)を有する。更に、データベースサーバ3はデータベース4を有し、データベース4は、例えば、MySQL Clusterのようなトランザクションをサポートするクラスタデータベースとして実装される。データベース4は、トランスコーディングに関連するタスクリストを有する。
トランスコーディングに関連する基本的なタスクには、ビデオソースファイルをシステムに取り込む「取り込みタスク」と、ビデオデータとオーディオデータとを分離する「分離タスク」と、「ビデオデコードタスク」と、「ビデオフィルタリングタスク」と、「ビデオ分析タスク」と、「ビデオセグメンテーションタスク」と、「オーディオデコードタスク」と、「オーディオフィルタリングタスク」と、「オーディオ分割タスク」と、「エンコードタスク」と、「結合タスク」と、「多重化タスク」とが含まれる。これらのタスクの間には実行順序依存関係がある。
例えば、「ビデオ分析タスク」の完了後でなければ「ビデオセグメンテーションタスク」を実行できず、「ビデオセグメンテーションタスク」の完了後で無ければ「ビデオエンコードタスク」を実行できず、「エンコードタスク」の完了後でなければ、「結合タスク」を実行できない。
ノード5〜9は、例えば、サーバやPC(personal computer)である。そして、ノード5〜9は、それぞれ、データベース4上のタスクリストから取得したタスクを実行するタスク実行部5a〜9aと、一つのタスクの実行を完了すると次に実行されるべきタスクを生成し、データベース4上のタスクリストを更新するタスク生成部5b〜9bを備える。このようにして、タスク生成部5b〜9bは、タスク間の実行順序依存関係を担保する。また、タスクの実行にあたって、タスク実行部5a〜9aは、自ノード内のリソースが許容する場合に、タスクリストからタスクを取得し、実行する。尚、タスク実行部5a〜9a及びタスク生成部5b〜9bは、例えば、CPU(Central Processing Unit)により構成される。
ここで、タスク実行部5a〜9a又はタスク生成部5b〜9bは、タスクの実行や完了に基づいて、タスクの状態が、(1)未処理、(2)実行中、(3)完了、(4)失敗、(5)失効のうちの何れの状態であるかを、協調してデータベース4上のタスクリストに更新する。以下に各状態について説明する。
(1)「未処理」とは、各タスクの初期状態であり、タスクが新規に作成されたものであり、且つ処理を待機している状態を指す。
(2)「実行中」とは、何れかのノードがタスクを取得し、実行中であることを示す。
(3)「完了」とは、タスクが完了し、更なる処理が不要な状態であることを示す。
(4)「失敗」とは、何らかの問題によりタスクが完了せず、問題回復のための措置を必要としている状態を指す。
(5)「失効」とは、「実行中」状態のタスクが、所定時間以上ノードにより更新されない状態を指す。このような状態は、例えば、ネットワークやハードウェアに何らかの障害が生じたことにより、ノードがタスク状態を「失敗」に変更することができなかった場合に発生する。
データベース4はトランザクションをサポートしているため、仮に、2つのノードが同時に同じタスクを取得し、実行しようとしたとしても、コリジョンが生じない。
また、タスク実行部5a〜9a及びタスク生成部5b〜9bは、ストレージ10にアクセス可能である。ストレージ10は、例えば、従来の集中システムにおいて一般的に用いられていたようなNAS(network attached storage)や、MogileFS及びHadoopファイルシステムのような分散ファイルシステムである。
さらに、クライアント11は、トランスコーディングジョブを分散トランスコーディングシステム1に提出するためのジョブ提出部12を有する。ジョブ提出部12が提出するトランスコーディングジョブは、例えば、XMLファイルのようなテキストデータであり、ビットレート、フレームレート、解像度、画像サイズ、適用すべきフィルタ、エンコード方式等のトランスコードに関連する全てのパラメータや、トランスコードすべきデータ(ソースファイル)の場所を示す、URIのようなポインタを含む。エンコード方式は、例えばCBR(Constant Bit Rate)方式と、VBR(Variable Bit Rate)方式がある。
図2は、本発明の一実施の形態に係る分散トランスコーディングシステム内のタスク処理の概要を示すフローチャートである。タスク実行部5a〜9aは、適宜、自ノードの空きリソースや、ネットワーク状態をモニタリングしているものとする。これにより、それぞれのノードにおいて、適切なタスクを取得し実行することが可能になる。
タスク実行部5a〜9aの何れかが、クライアント11からの、新たなトランスコーディングジョブを検出することによりトランスコーディング処理が開始する。タスク実行部5aがトランスコーディングジョブを検出したとすると、タスク生成部5bは、トランスコーディングジョブの内容に基づいて、ソースファイル読み込みタスクを作成し、データベース4上のタスクリストを更新する(ステップS11)。
タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、ソースファイル取り込みタスクを自ノードで行うか否か決定する。このときの決定方法は、図4を参照して後述する方法に従う。
ここでは、ノード6のタスク実行部6aがソースファイル取り込みタスクを行うことを決定したとする(ステップS12)。ステップS12において、タスク実行部6aは、トランスコーディングジョブに含まれるポインタ情報(URI)に示された場所からソースファイルをコピーし、ストレージ10に保存する。これにより、分散トランスコーディングシステム1内の全てのノード5〜9が、ソースファイルにアクセスできるようになる。さらに、ステップS12ではタスク生成部6bは次に行うべきタスクであるビデオ/オーディオ分離タスクを生成し、データベース4上のタスクリストを更新する(ステップS12)。
ステップS12と同様に、タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、ビデオ/オーディオ分離タスクを自ノードで行うか否かを決定する。
ここでは、ノード7のタスク実行部7aがビデオ/オーディオ分離タスクを行うことを決定したとする(ステップS13)。ステップS13において、タスク実行部7aは、ストレージ10からソースファイルをダウンロードし、ソースファイルをオーディオデータとビデオデータとに分離し、分離した各データをストレージ10にアップロードする。アップロードが完了すると、タスク生成部7bは、次に行うべきタスクであるビデオデコードタスクと、オーディオ分割タスクとを生成する。
先ず、ステップS14におけるビデオデコードタスクについて説明する。タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、ビデオデコードタスクを自ノードで行うか否かを決定する。
ここでは、ノード8のタスク実行部8aがビデオデコードタスクを行うことを決定したとする(ステップS14)。ステップS14において、タスク実行部8aは、ストレージ10からステップS13において分離されたビデオデータをダウンロードし、元のフォーマットから、例えば、YUV422又はRGBのようなローフォーマットにデコードし、ストレージ10にアップロードする。デコードを完了すると、タスク生成部8bは、次に行うべきタスクであるビデオフィルタリングタスクを生成し、データベース4上のタスクリストに更新する(ステップS14)。
タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、ビデオフィルタリングタスクを自ノードで行うか否かを決定する。
ここでは、ノード9のタスク実行部9aがビデオフィルタリングタスクを行うことを決定したとする(ステップS15)。ステップS15において、タスク実行部9aは、ストレージ10からステップS14においてローフォーマットにデコードされたデータ(ローデータ)をダウンロードし、いくつかのフィルタリング処理を実行し、ストレージ10にアップロードする。そして、タスク生成部9bは、次に行うべきタスクであるビデオ分析タスク(ステップS16)又はビデオ分割タスク(ステップS17)を生成し、データベース4上のタスクリストに更新する(ステップS15)。
ステップS15において、タスク実行部9aが使用するフィルタは、例えば、デインターレースフィルタ、逆テレシネフィルタ、解像度変換フィルタ、ビデオフレームレートリサンプリングフィルタである。
このとき、タスク生成部7bは、以下に述べる理由により、エンコード方式がCBRのビデオを出力する場合に限って、ビデオ分析タスクを生成する。出力ビデオのエンコード形式がVBRの場合は、ビデオ分析タスクは行われない。
CBRエンコーディングを行う場合には、トランスコード後のファイルにおけるビットレートの制約に基づいてビデオの分割ポイントを選択する必要がある。仮に、ステップS17におけるビデオ分割タスクにおいて、ランダムに分割ポイントを選択した場合、トランスコード済みのファイル内でのビットレート分布が不均一となるおそれがあるためである。
一方、VBRエンコーディングを行う場合には、ビットレート制約に関わらず、ビデオ全体を通じて品質が一定であることが望ましい。この場合、エンコード後のビデオ内におけるビットレート分布をどのようなものにするかに関わらず、自由にビデオを分割することができるため、「分析」タスクが必須ではない。以下、タスク実行部タスク実行部5a〜9aはCBRエンコーディングを行うものとして各ステップについて説明する。
タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、ビデオ分析タスクを自ノードで行うか否かを決定する。
ここでは、ノード5のタスク実行部5aがビデオ分析タスクを行うことを決定したとする(ステップS16)。ステップS16において、タスク実行部5aは、ストレージ10からステップS15においてフィルタリングされたデータをダウンロードし、分析する。例えば、タスク実行部5aは、ファストパスエンコーディングを実行し、例えば、キーフレームやIフレーム(イントラ符号化フレーム)を特定し、又はビットレート分布などの統計情報を取得する。そして、タスク生成部5bは、得られたフレーム情報や統計情報を含むビデオ分割タスクを生成して、データベース4上のタスクリストを更新する(ステップS16)。
なお、CBRエンコーディングにおいては、2以上のエンコーディングパスを用いることが可能である。それぞれのパスにおいて、現在又は次のパスにおけるビット分布を改良するために、それより前のパスにおいて分析された統計値を活用する。
次に、タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、ビデオ分割タスクを自ノードで行うか否かを決定する。
ここでは、ノード6のタスク実行部6aがビデオ分割タスクを行うことを決定したとする(ステップS17)。ステップS17において、タスク実行部6aは、ストレージ10からローデータをダウンロードし、ビデオ分割タスクにおいて取得されたフレーム情報及び統計情報を参照して、ローデータを分割する。「分割」と記載したが、必ずしもローデータを物理的に分割する必要は無く、例えばXML、又はJSONのような構造化テキストファイルに、ローデータにおける最適な分割ポイントの情報を記載することで、後続のタスクの実行に際して各ノードがダウンロードすべきローデータを部分を特定し、部分ダウンロードを実行することも可能である。そして、タスク生成部6bは、分割ポイントの情報を含む、複数のビデオセグメントエンコードタスクを生成して、データベース4上のタスクリストを更新する(ステップS17)。
ここで、CBR、VBRエンコーディングのいずれの場合においても、ビデオ分割タスクの実行時において決定するセグメントの数は、2の階乗とすることが好ましい。これにより、ビデオ結合タスクにおいて、結合相手となるセグメント(ペアセグメント)を探索することが容易になる。
ここでは、それぞれ異なるノード8、9、5、及び6がステップS14〜S17までの処理を行うものとして説明した。しかし、ローデータのデータ量は非常に大きいか、又はアップロードチャネルが遅ければ、データの、ダウンロード及びアップロードに時間がかかる。これを回避するために、ステップS14〜S17において実行されたタスクを、一つのタスクとして生成し、一つのノードにおいて行うことも可能である。
次に、タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、ビデオセグメントエンコードタスクを自ノードで行うか否かを決定する。
ここでは、タスク実行部5a〜9a全てがビデオセグメントエンコードタスクを自ノードで行うことを決定したとする(ステップS18)。ビデオセグメントエンコードタスクを取得したタスク実行部5a〜9aは、ビデオセグメントエンコードタスクにおいて取得された分割ポイントの情報に基づいて、ストレージ10からローデータのフラグメントを部分ダウンロードし、トランスコーディングジョブに含まれる種々のパラメータに従って、部分ダウンロードしたローデータをエンコードする。エンコードが完了すると、タスク実行部5a〜9aは、それぞれ、エンコード済みのデータをストレージ10にアップロードする。タスク生成部5b〜9bは、それぞれ、次に行われるべきタスクであるビデオ結合タスクを生成して、データベース4上のタスクリストを更新する(ステップS18)。
次に、タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、ビデオ結合タスクを自ノードで行うか否かを決定する。
ここでは、タスク実行部5aが、一つのビデオ結合タスクを取得したとする。図3に示すように、タスク実行部5aは、ビデオ結合タスクを段階的に実行する。ここで、結合タスクは、共通のタスクID(「タスクR」とする)、ステージ番号(「+n」とする)、連続番号(「_n」とする)からなる、例えば、「TaskR+1_1」のような識別情報を含んでいる。
ビデオ分割タスクにおいて、タスク実行部6aは、2のm乗個のセグメントにローデータを分割したものとし、タスク生成部6bは、一つのビデオ分割タスクの生成後に生成した全てのビデオ結合タスクについては、同一のタスクIDが付す。また、ここでは、2m=nの関係が成り立つものする。ステージ番号は、結合タスクの段階が進むほどに大きくなる番号である。1つのビデオ結合タスク(識別情報[タスクID、ステージ番号、シリアル番号]を有する)を取得した一つのタスク実行部は、原則的に以下の規則に従って、結合相手となるタスク(ペアタスク)を取得する。
(1)連続番号が奇数の場合は、識別情報[タスクID、ステージ番号、シリアル番号+1]を有するビデオ結合タスクを探索する。
(2)連続番号が偶数の場合は、識別情報[タスクID、ステージ番号、シリアル番号−1]を有するタスクを探索する。
例えば、タスク実行部5aが取得したタスクが、識別情報[タスクID、ステージ番号、シリアル番号]=[102、3、1]を有する場合には、タスク実行部5aは、結合相手として、識別情報[102、3、2]を有するタスクをタスクリスト上で探索する。そして、結合相手である、識別情報[102、3、2]を有するタスクが取得可能であれば、タスク実行部5aは、当該タスクを取得し、タスクに記載されたURIなどのポインタ情報に基づいて、ストレージ10から2つのエンコード済みデータをダウンロードする。そして、タスク実行部5aはこれら2つのエンコード済みデータを結合し、結合タスクが完了すると、タスク生成部5bは、新しいビデオ結合タスクを生成する。タスク生成部5bは、この新しいビデオ結合タスクに付与すべき識別情報の算出にあたって、ステージ番号については、1を加え、シリアル番号については、結合した2つのエンコード済みデータのそれぞれに対応するビデオ結合タスクのシリアル番号1及び2を比較して、大きい方の値である2を2で除算する(以後、max(1,2)/2と示す)。すなわち、タスク生成部5bは、新しいビデオ結合タスクについて識別情報[102、3+1、max(1,2)/2]=[102、4、1]を付与する。
一方、他のノード6のタスク実行部6aが、識別情報[102、3、3]を有するビデオ結合タスクと、識別情報[102、3、4]を有するビデオ結合タスクの実行を完了すると、当該ノードのタスク生成部6bは、新しいビデオ結合タスクとして、識別情報[102、3+1、max(3、4)/2]=[102、4、2]を有する結合タスクを生成し、データベース4上のタスクリストに更新する。すると、他のノード7のタスク実行部7aが識別情報[102、4、1]を有するビデオ結合タスクと、[102、4、2]を有するビデオ結合タスクとをデータベース4上のタスクリストから取得し、実行する。ビデオ結合タスクの実行が完了すると、当該ノードのタスク生成部7bは、新たなビデオ結合タスクとして、識別情報[102、4+1、max(1、2)/2]=[102、5、1]を有する新たな結合タスクを生成し、タスクリストにアップロードする。
データベース4上に残ったタスクが、識別情報[102、m、1]を有するビデオ結合タスクのみであれば、タスク実行部5a〜9aは、2のm乗個(n個)のセグメントの全てに対応するビデオ結合タスクが完了したことを判断する。そして、タスク実行部5a〜9aビデオ結合タスクが完了したことを判断すると、タスク生成部5b〜9bの何れかは、次に行われるべきタスクであるビデオ多重化タスクを生成し、データベース上のタスクリストを更新する(ステップS19)。
上述においては、タスク実行部5a〜9aがCBRエンコーディングを行うものとして説明してきた。しかし、タスク実行部5a〜9aは、VBRエンコーディングを行う場合には、ビデオ分析タスク(ステップS16)は行わず、ビデオ分割タスク(ステップS17)においては、例えば、ビデオフィルタリングタスク(ステップS15)において取得されたビデオの長さ情報、トランスコーディングシステム全体のスペック、各ノードのスペック、及びチャネル特性等に基づいて決定した分割後のセグメント数に基づいてビデオを分割する。
次に、オーディオデータに係るステップS20〜S24について説明する。タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、オーディオ分割タスクを自ノードで行うか否かを決定する。
ここでは、タスク実行部7aがオーディオ分割タスクを行うことを決定したとする(ステップS20)。ステップS20において、タスク実行部7aは、ストレージ10からステップS13においてソースファイルから分離したオーディオデータをダウンロードし、セグメントではなく、オーディオチャネルごとに分割し、ストレージ10にアップロードする。そして、タスク生成部7bは、次に行われるべきオーディオチャネルデコードタスクを生成し、データベース4上のタスクリストを更新する(ステップS20)。
タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、オーディオチャネルデコードタスクを自ノードで行うか否かを決定する。
ここでは、タスク実行部5a〜9a全てがオーディオチャネルデコードタスクを行うことを決定したとする(ステップS21)。ステップS21において、タスク実行部5a〜9aは、それぞれ、ストレージ10からデコードすべき一つのオーディオチャネルをダウンロードし、ローフォーマットにデコードし、ローフォーマットのオーディオチャネルファイルをストレージ10にアップロードする。デコードを完了すると、タスク生成部5b〜9bは、次に行うべきタスクであるオーディオチャネルフィルタリングタスクを生成し、データベース4上のタスクリストに更新する(ステップS21)。
タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、オーディオチャネルフィルタリングタスクを自ノードで行うか否かを決定する。
ここでは、タスク実行部5a〜9a全てがオーディオチャネルフィルタリングタスクを行うことを決定したとする(ステップS22)。ステップS22において、タスク実行部5a〜9aは、ストレージ10からステップS21においてローフォーマットにデコードされたデータをダウンロードし、いくつかのフィルタリング処理を実行し、ストレージ10にアップロードする。フィルタリングを完了すると、タスク生成部5b〜9bは、次に行うべきタスクであるオーディオチャネルエンコードタスクを生成し、データベース4上のタスクリストに更新する(ステップS22)。
ステップS22において、タスク実行部5a〜9aが使用するフィルタは、例えば、オーディオリサンプリングフィルタ、チャネルリサンプリング及びダウン・アップミキシングフィルタ、音量調整フィルタ、及びオーディオサンプリング調整フィルタである。
次に、タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、オーディオチャネルエンコードタスクを自ノードで行うか否かを決定する。
ここでは、タスク実行部5a〜9a全てがオーディオチャネルエンコードタスクを自ノードで行うことを決定したとする(ステップS23)。オーディオチャネルエンコードタスクを取得したタスク実行部5a〜9aは、ストレージ10からオーディオチャネルのローデータをダウンロードし、トランスコーディングジョブに含まれる種々のパラメータに従って、ダウンロードしたローデータをエンコードする。エンコードが完了すると、タスク実行部5a〜9aは、エンコード済みのデータをストレージ10にアップロードする。タスク生成部5b〜9bは、次に行われるべきタスクであるオーディオ結合タスクを生成して、データベース4上のタスクリストを更新する(ステップS23)。
ここでは、それぞれ異なるノード8、9、5がステップS21〜S23までの処理を行うものとして説明した。しかし、ローデータのデータ量は非常に大きく、ダウンロード及びアップロードに時間がかかるため、ステップS21〜S23は一つのノードにおいて行うことも可能である。
次に、タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、オーディオ結合タスクを自ノードで行うか否かを決定する。
ここでは、タスク実行部6aがオーディオ結合タスクを取得したとする。タスク実行部6aは、オーディオデータについては、チャネルごとに分割したデータを結合する。この結合タスクは、非常に負荷が少ない。したがって、ビデオ結合タスクのように段階的に実行する必要は無く、全ての結合タスクを一つのタスク実行部6aにおいて処理することが可能である。そして、タスク実行部6aが全ての音声データの結合タスクを終了し、結合相手となるタスクが存在しないことを判断すると、タスク生成部6bは、ビデオ/オーディオ多重化タスクを生成し、データベース4上のタスクリストを更新する(ステップS24)。
ここでは、オーディオデータはチャネル毎に分割し(ステップS20)、後続の処理、すなわち、デコード(ステップS21)、フィルタリング(ステップS22)、及びエンコード(ステップS23)は、それぞれ、チャネル毎に行うものとして記載した。しかし、ビデオデータと同様に、オーディオデータについても、ステップS20においてセグメント毎に分割し、デコード(ステップS21)、フィルタリング(ステップS22)、及びエンコード(ステップS23)を各セグメントについて行うようにトランスコーディングシステムを構成することも可能である。この際、タスク実行部5a〜9aの一つ又は複数は、ステップS24におけるオーディオ結合タスクを、2段階で実行する。まず、第1段階として、タスク実行部5a〜9aの一つ又は複数は、各オーディオチャネルのセグメント又はフラグメントを結合して、1つのオーディオチャネルのオーディオファイルとする。そして、第2段階として、タスク実行部5a〜9aの一つ又は複数は、2つ又は複数のオーディオチャネルを一つのオーディオファイルに多重化する。そして、タスク実行部5a〜9aの一つ又は複数は、多重化したオーディオファイルをストレージ10にアップロードし、タスク生成部5b〜9bは、ビデオ/オーディオ多重化タスクを生成し、データベース4上のタスクリストを更新する(ステップS24)。
タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、ビデオ/オーディオ多重化タスクを自ノードで行うか否かを決定する。
ここでは、ノード7のタスク実行部7aが、ビデオ/オーディオ多重化タスクを行うことを決定したとする(ステップS25)。タスクリストから、ビデオ/オーディオ多重化タスクを取得すると、タスク実行部7aは、データベース4上のタスクリスト内において、対応するオーディオ(ビデオ)多重化タスクを探索する。ここで、タスク実行部7aは、多重化すべきタスクを例えばタスクIDのような識別情報によって識別することができる。データベース4上のタスクリストから、多重化すべき2つの多重化タスクを取得すると、タスク実行部7aは、ストレージ10から結合済みのビデオ及びオーディオデータをそれぞれダウンロードし、これらのデータの多重化を実行する。多重化したデータは、例えば、MP4、3GP、FLV、WMV、AVIのような、クライアント11からのトランスコーディングジョブに含まれる所望のフォーマットである。多重化タスクが完了すると、タスク実行部7aは多重化したデータ(トランスコード済みデータ)をストレージ10にアップロードし、タスク生成部7bはトランスコード済みデータを送信すべき場所のURIの情報を含むアップロードタスクを生成し、データベース4上のタスクリストを更新する(ステップS25)。
タスク実行部5a〜9aは、それぞれ、自ノード内の空きリソース、ネットワーク状態等に基づいて、アップロードタスクを自ノードで行うか否かを決定する。
ここでは、ノード8のタスク実行部8aがアップロードタスクを自ノードで行うことを決定したとする(ステップS26)。タスクリストからアップロードタスクを取得すると、タスク実行部8aは、トランスコード済みファイルをアップロードすべきURIに対して、トランスコード済みのファイルをストレージ10からコピーして転送する。このときの転送方法は多様であり、例えば、FTP(File Transfer Program)、SFTP(Secure File Transfer Program)、及びWebDav等が挙げられる。
図4は、タスク実行部5a〜9aがタスクを選択、実行し、タスク生成部5b〜9bがタスクを生成する過程を示す概略フローチャートである。以下、タスク実行部5a〜9a及びタスク生成部5b〜9bは、単に「タスク実行部」及び「タスク生成部」として示す。タスク実行部は、まず、データベース4上のタスクリストから「失効」状態のタスクのリストを取得する(ステップS31)。これは、「失効」状態のタスクは、本来であれば既に処理が完了しているべきタスクであり、優先的に処理を行う必要性が高いからである。
「失効」状態のタスクが無ければ、タスク実行部は「未処理」状態のタスクをタスクリストから取得する(ステップS32のY、ステップS33)。「未処理」状態のタスクがあれば、タスク実行部は、タスクを選択する(ステップS34のN、ステップS35)。一方、「未処理」状態のタスクが無ければ、タスク実行部は所定時間の間スリープモードに移行する(ステップS34のY、ステップS36)。
ステップS35においてタスクを選択するにあたって、タスク実行部は、例えば、自ノードの負荷状態、利用可能リソース、タスク作成日時、タスク処理負荷等に基づいて、実行すべきタスクを選択する。タスク作成日時の古いものは新しいタスクに優先して選択される。また、例えば、CPU(Central Processing Unit)の速度が遅く、メモリ容量が小さいタスク実行部は、分割、結合、多重化などの処理負荷の小さいタスクを選択する。逆にCPUの処理速度が速いノードは、オーディオ/ビデオエンコード又は分析タスクを選択する。また、特定のコーデックやフォーマットのデータについてのエンコード及び多重化にのみ対応するタスク実行部は、それらのデータのエンコード及び多重化タスクだけを実行する。そのようなタスク実行部を備えるノードは、例えば、ウィンドウズ・メディアコーデックを用いたエンコードや多重化にのみ対応しているウィンドウズプラットフォームである。
一旦タスクを選択すると、タスク実行部はタスクをロックする(ステップS37)。ここで、「タスクをロックする」とは、タスクリスト上におけるタスクの状態を「未処理」から「実行中」へと変更することをいうものとする。これにより、他のタスク実行部が同じタスクを取得することを回避する。ロックが完了すると、タスク実行部は、タスクがペアとなるタスクを必要とするか否かを判定する(ステップS37のY、S38)。ここで、「ペアとなるタスク」を必要とするタスクの一例としては、図2のステップS19及び図3に示す結合タスクが挙げられる。結合タスクは、タスクの実行にあたって、結合相手となる結合タスクを必要とするものである。
一方、ロックに失敗すると、タスク実行部は、他のタスク実行部が既に当該タスクをロックしていると認識し、所定時間の間スリープモードに移行する(ステップS37のN、S36)。
ステップS38において、タスクがペアとなるタスクを必要とするか否かを判定するにあたって、タスク実行部は、タスクに含まれる識別情報(例えば、[タスクID、ステージ番号、シリアル番号])を参照する。そして、ペアとなるタスクが必要であると判断した場合、タスク実行部は、そのタスクを探索し、ロックする(ステップS38のY,ステップS39)。ステップS39において、ペアとなるタスクのロックに成功した場合、タスク実行部はタスクを実行する(ステップS40)。
一方、ステップS38において、ペアとなるタスクが不要であると判断した場合、タスク実行部は、タスクを実行する(ステップS40)。そして、タスクが完了すると、タスク生成部は次に行われるべきタスクを生成する(ステップS41のY、S42)。例えば、ペアとなるタスクが不要であるタスクの一例である分離タスクを完了した後には、タスク生成部は、後続するデコードタスクを生成する。このようにして、タスク生成部は、タスク間の順序依存性を担保する。
そして、タスクが完了すると、タスク実行部はタスクリストを更新してタスクの状態を「完了」に変更する(ステップS43)。一方、選択したタスクの処理中にエラーが発生した場合には、タスク実行部はタスクの状態を「失敗」に変更する(ステップS41のN、S43)。エラー原因としては、取り込みファイルについてのURIが不正であること、ストレージからソースファイルを取り込めないこと、システム内のいずれのノードも対応していないエンコーディングパラメータがトランスコーディングジョブに含まれていること、等が挙げられる。
このように、本実施の形態に係る分散トランスコーディングシステムによれば、システムを構成する各ノードのタスク生成部において順次タスクを生成することにより、タスク間の順序依存性が担保される。このため、分散トランスコーディングシステムを構成するにあたってスケジューラが不要となり、シングルポイント障害及びシステム拡張の際のボトルネック問題を解消することができる。これにより、インターネットビデオのトランスコーディングのための所要時間を大幅に短縮することができる。また、分散トランスコーディングシステムを構成する全てのノードは、必要に応じてタスクリストを取得できるため、一つのノードが故障しても、当該ノードに代わって、他のノードがタスクを処理することが可能であり、システム全体として耐久性が高い。
以上、本発明の一実施の形態に係る分散トランスコーディングシステムについて説明したが、本発明は上記実施形態に制限されること無く、本発明の範囲内で自由に変更が可能である。
1 分散トランスコーディングシステム
2 ネットワーク
3 データベースサーバ
4 データベース
5〜9 ノード
5a〜9a タスク実行部
5b〜9b タスク生成部
10 ストレージ
11 クライアント
12 ジョブ提出部

Claims (5)

  1. 複数のノードと、少なくとも一つのデータベースとを有する分散トランスコーディングシステムであって、
    前記複数のノードは、
    前記データベース上のトランスコーディングに関するタスクリストから取得したタスクを実行するタスク実行部と、
    前記タスク実行部が前記取得したタスクを実行した後に実行されるべき少なくとも一つのタスクを生成し、前記タスクリストを更新するタスク生成部と、を備える
    ことを特徴とする分散トランスコーディングシステム。
  2. 前記タスク生成部は、前記タスク実行部が所定のタスクを実行した後に複数のタスクを生成する、ことを特徴とする請求項1に記載の分散トランスコーディングシステム。
  3. 複数のノードと、少なくとも一つのデータベースとを用いる分散トランスコーディング方法において、
    前記複数のノードが、
    データベース上のトランスコーディングに関するタスクリストから取得したタスクを実行するステップと、
    前記取得したタスクを実行した後に実行されるべき少なくとも一つのタスクを生成し、前記タスクリストを更新するステップと、を含む
    ことを特徴とする分散トランスコーディング方法。
  4. 前記複数のノードが、所定のタスクを実行した後に複数のタスクを生成する、ことを特徴とする請求項3に記載の分散トランスコーディング方法。
  5. 少なくとも一つのデータベースを有する分散トランスコーディングシステムに含まれるノードであって、
    前記データベース上のトランスコーディングに関するタスクリストから取得したタスクを実行するタスク実行部と、
    前記タスク実行部が前記取得したタスクを実行した後に実行されるべき少なくとも一つのタスクを生成し、前記タスクリストを更新するタスク生成部と、を備える
    ことを特徴とするノード。
JP2010181727A 2010-08-16 2010-08-16 分散トランスコーディングシステム並びに方法、及びトランスコーディング装置 Active JP5412385B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010181727A JP5412385B2 (ja) 2010-08-16 2010-08-16 分散トランスコーディングシステム並びに方法、及びトランスコーディング装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010181727A JP5412385B2 (ja) 2010-08-16 2010-08-16 分散トランスコーディングシステム並びに方法、及びトランスコーディング装置

Publications (2)

Publication Number Publication Date
JP2012044306A true JP2012044306A (ja) 2012-03-01
JP5412385B2 JP5412385B2 (ja) 2014-02-12

Family

ID=45900148

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010181727A Active JP5412385B2 (ja) 2010-08-16 2010-08-16 分散トランスコーディングシステム並びに方法、及びトランスコーディング装置

Country Status (1)

Country Link
JP (1) JP5412385B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016046578A (ja) * 2014-08-20 2016-04-04 日本放送協会 画像分散処理装置
CN105898554A (zh) * 2015-12-18 2016-08-24 乐视云计算有限公司 实时转码的监控方法和实时转码系统
JP2016541178A (ja) * 2013-11-21 2016-12-28 グーグル インコーポレイテッド サブチャンキングを用いたメディアストリームのトランスコーディング
CN111093095A (zh) * 2019-12-16 2020-05-01 黔南民族师范学院 基于spark平台的视频转码方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153327A (ja) * 1997-08-01 1999-02-26 Nec Yonezawa Ltd マルチプロセッサシステム
JP2001297070A (ja) * 2000-04-11 2001-10-26 Sharp Corp デジタル信号処理装置
JP2005176069A (ja) * 2003-12-12 2005-06-30 Ntt Data Corp 分散並列トランスコーダシステム及び分散並列トランスコード方法
JP2005352699A (ja) * 2004-06-09 2005-12-22 Canon Inc 情報処理装置、並びに、その制御方法および情報処理方法
JP2006295586A (ja) * 2005-04-12 2006-10-26 Hitachi Ltd コンテンツ変換装置及びトランスコードシステム
JP2007188259A (ja) * 2006-01-12 2007-07-26 Hitachi Ltd 情報処理装置及び情報処理システム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153327A (ja) * 1997-08-01 1999-02-26 Nec Yonezawa Ltd マルチプロセッサシステム
JP2001297070A (ja) * 2000-04-11 2001-10-26 Sharp Corp デジタル信号処理装置
JP2005176069A (ja) * 2003-12-12 2005-06-30 Ntt Data Corp 分散並列トランスコーダシステム及び分散並列トランスコード方法
JP2005352699A (ja) * 2004-06-09 2005-12-22 Canon Inc 情報処理装置、並びに、その制御方法および情報処理方法
JP2006295586A (ja) * 2005-04-12 2006-10-26 Hitachi Ltd コンテンツ変換装置及びトランスコードシステム
JP2007188259A (ja) * 2006-01-12 2007-07-26 Hitachi Ltd 情報処理装置及び情報処理システム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016541178A (ja) * 2013-11-21 2016-12-28 グーグル インコーポレイテッド サブチャンキングを用いたメディアストリームのトランスコーディング
JP2016046578A (ja) * 2014-08-20 2016-04-04 日本放送協会 画像分散処理装置
CN105898554A (zh) * 2015-12-18 2016-08-24 乐视云计算有限公司 实时转码的监控方法和实时转码系统
CN111093095A (zh) * 2019-12-16 2020-05-01 黔南民族师范学院 基于spark平台的视频转码方法及系统

Also Published As

Publication number Publication date
JP5412385B2 (ja) 2014-02-12

Similar Documents

Publication Publication Date Title
US11570491B2 (en) Media distribution and management platform
US11477521B2 (en) Media presentation description patches for video streaming
JP5897134B2 (ja) モバイルマルチメディアリアルタイムトランスコーディングシステム、装置、記憶媒体、および方法
CA2841377C (en) Video transcoding services provided by searching for currently transcoded versions of a requested file before performing transcoding
JP5412385B2 (ja) 分散トランスコーディングシステム並びに方法、及びトランスコーディング装置
JP2023517484A (ja) 遠隔要素分解のクライアントベースの記憶装置
US11765039B2 (en) System and method for optimizing deployment of a processing function in a media production workflow
US9369510B2 (en) Cost and resource utilization optimization in multiple data source transcoding
WO2020155957A1 (zh) 播放音视频的方法、装置、计算机设备及可读存储介质
KR20230047719A (ko) 컨텐츠 풀 기반 방송 시스템 및 그 방법
KR20210004877A (ko) 미디어 데이터 프로세싱 방법 및 장치
KR20230047718A (ko) 컨텐츠 풀 기반 방송 시스템 및 그 방법
Pereira et al. The Split&Merge Architecture
NZ623572B2 (en) Mobile multimedia real-time transcoding system, device, storage medium and method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120906

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130730

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131029

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131111

R150 Certificate of patent or registration of utility model

Ref document number: 5412385

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250