(本発明の基礎となった知見)
本発明者は、「背景技術」の欄において記載した上記特許文献1のファイル生成方法に関し、以下の問題が生じることを見出した。
上記特許文献1のファイル生成方法では、MPEG2−TSで多重化されたコンテンツを、一度、映像ストリーム、音声ストリーム、または字幕ストリームなどの各ストリームに戻した上で、そのコンテンツのファイルフォーマットをMP4に変換する必要がある。また、一般的に、光ディスクで配布される商用コンテンツは暗号化されている。したがって、変換の際には、一旦、暗号を解いてからファイルフォーマットを変換し、その後に、再度暗号化を行う必要がある。以下、MPEG2−TSのコンテンツの構造などについて詳細に説明する。
図1は、光ディスクに格納されているMPEG2−TSのコンテンツの構造の一例を模式的に示す図である。光ディスクには、コンテンツとしてStream Fileが格納される。図1に示す例では、光ディスクにはStream Fileが1つしか格納されていないが、複数格納されていてもよい。またここでは、Stream FileはXXXXX.M2TSというファイル名で記録されている。XXXXXには、番号が記載される。複数のコンテンツが格納される場合には、この番号によって、それらのコンテンツを個別に管理することが可能である。
Stream Fileは、それぞれ6144BytesのAligned Unitと呼ばれる複数の単位に区分される。Aligned Unitは暗号化の単位である。なお、Stream Fileのデータ量は、必ずしも6144Bytesの倍数にならない可能性がある。6144Bytesの倍数にならない場合には、コンテンツの末尾にNULL Dataを格納する等の方法によって、Stream Fileのデータ量を6144Bytesの倍数にすることが望ましい。
図2は、Aligned Unitの復号方法を説明するための図である。
光ディスク上のコンテンツは、データであるユニット鍵Kuを用いて暗号化されている。暗号化の際には、Aligned Unitに含まれる6144Bytesのデータは、先頭の16Bytesのデータと、残る6128Bytesのデータとに分離され、その残りの6128Bytesのデータが暗号化される。
Aligned Unitの復号の際には、AES_Eは、まず、先頭の16Bytesのデータに対して、ユニット鍵Kuを用いたAES(Advanced Encryption Standard)暗号方式の暗号化を行う。次に、この暗号化によって得られたデータと、先頭の16Bytesのデータとの排他的論理和の演算が行われる。AES_DCBCは、この排他的論理和の演算の結果を鍵として利用し、残る6128BytesのデータをAES−CBC(Cipher Block Chaining)モードで復号する。この復号によって得られる平文のデータに、先頭の16Bytesのデータが付け加えられる。その結果、Aligned Unitに対応する6144Bytesの平文が得られる。
図3は、平文の状態のAligned Unitの内部構造を示す図である。
Aligned Unitは、それぞれ192Bytesの32個のSource Packetから構成される。各Source Packetは、4BytesのヘッダであるTP_extra_headerと、TSパケットである188BytesのTransport Packetとから構成される。さらに188BytesのTransport Packetは、4BytesのTS Headerと、184BytesのTS Payloadとから構成される。TS Headerには、TS Payloadの属性を示す情報が記載されている。具体的には、TS Headerは、sync_byte(8bits)、transport_error_indicator(1bit)、payload_unit_start_indicator(1bit)、transport_priority(1bit)、PID(13bits)、transport_scrambling_control(2bits)、adaptation_field_control(2bits)、およびcontinuity_counter(4bits)から構成される。ここで、PIDは、TS Payload内に格納されるエレメンタリーストリームの種別、例えばビデオまたは音声などを識別するための情報である。また、音声が複数種類ある場合でも、このPIDによって、エレメンタリーストリームの音声の種類を識別することができる。
図4は、複数のTS Payloadから実際のElementary Streamを作成する方法を示す図である。同じPIDが割り当てられた複数のTS Payloadをつなぎ合わせることによって、PES_HeaderとElementary Streamが構成される。ここで、複数のTS Payloadのうちの最初のTS Payloadは、PES_Headerを含むように構成されている。なお、PES_HeaderとElementary Streamの少なくとも一部とからPES(Packetized Elementary Stream)またはPESパケットが構成される。
以上のように、MPEG2−TSのファイル(Stream File)は、Aligned Unitごとに暗号化されている。したがって、そのファイルをMP4のファイルに変換するためには、上述のような復号が行われ、さらに再暗号化が行われる。スマートフォンまたはタブレットなどの変換機器では、この復号および暗号化に時間がかかるという問題がある。さらに、一旦、平文のコンテンツを作成することとなるため、セキュリティ上の問題もある。
このような問題を解決するために、本発明の一態様に係るファイル生成方法は、MP4ファイルを生成するファイル生成方法であって、MP4と異なるファイルフォーマットで構成されている元ファイルを取得し、前記元ファイルに含まれていないデータを含む差分ファイルを取得し、前記MP4ファイルを生成するための手順を示す手順ファイルを取得し、前記手順ファイルに示される手順にしたがって、前記差分ファイルに含まれるデータと、前記元ファイルに含まれるデータとを組み合わせることによって、前記MP4ファイルを生成する。例えば、前記元ファイルの取得では、MPEG2−TSのファイルフォーマットで構成されている前記元ファイルを取得する。
これにより、予め定められた手順にしたがって、差分ファイルに含まれるデータと、元ファイルに含まれるデータとを組み合わせることによってMP4ファイルが生成される。したがって、MPEG2−TSなどのファイルフォーマットによって構成される元ファイルを、映像ストリームまたは音声ストリームなどの各ストリームに戻すことなく、MP4ファイルを簡単に生成することができる。また、元ファイルが暗号化されていてもそれを復号して再暗号化する必要がない。したがって、MP4ファイルを生成するための処理負荷を抑えることができる。
また、前記元ファイル、前記差分ファイルおよび前記手順ファイルの取得では、光ディスクから前記元ファイル、前記差分ファイルおよび前記手順ファイルを読み出すことによって取得してもよい。
これにより、MP4ファイルの生成に必要となる全てのファイルが1つの光ディスクから取得されるため、それらのファイルを探す手間を省くことができ、MP4ファイルをより簡単に生成することができる。
また、前記手順ファイルには、前記差分ファイルに含まれる部分の範囲と、前記元ファイルに含まれる部分の範囲とが交互に配列されるように、前記差分ファイルに含まれる複数の部分のそれぞれの範囲と、前記元ファイルに含まれる複数の部分のそれぞれの範囲とが記述され、前記MP4ファイルの生成では、前記手順ファイルに記述されている各範囲の順に、前記各範囲によって示される部分を組み合わせることによって、前記MP4ファイルを生成してもよい。
これにより、MP4ファイルに含まれる各部分をそのMP4ファイルの先頭側から順に生成することができ、後戻りすることがないため、MP4ファイルをより簡単に生成することができる。
また、前記差分ファイルに含まれる複数の部分のそれぞれの範囲は、データサイズによって前記手順ファイルに記述され、前記元ファイルに含まれる複数の部分のそれぞれの範囲は、当該部分の開始位置とデータサイズとによって前記手順ファイルに記述されていてもよい。
これにより、手順ファイルの記述に基づいて、差分ファイルおよび元ファイルから適切な部分をコピーまたは取得して組み合わせることができる。また、差分ファイルに含まれる部分の範囲の記述に開始位置が用いられないため、手順ファイルのデータサイズを抑えることができる。
また、前記手順ファイルには前記MP4ファイルのデータサイズが記述されてあり、前記ファイル生成方法は、さらに、前記手順ファイルに記述されている前記MP4ファイルのデータサイズに基づいて、前記MP4ファイルを記録するだけの空き容量がメディアにあるか否かを判定してもよい。
これにより、メディアにMP4ファイルを記録するだけの空き容量があるか否かが判定されるため、空き容量がない場合には、そのMP4ファイルの生成を事前に中止するなどの処理を行うことができる。つまり、エラーの発生を未然に防ぐことができる。
また、前記手順ファイルには前記MP4ファイルの属性が記述されてあり、前記ファイル生成方法は、さらに、前記手順ファイルに記述されている前記属性を読み出してもよい。
これにより、MP4ファイルの生成前にMP4ファイルの属性を手順ファイルから読み出せば、所望のMP4ファイルが生成されるか否かを事前に判断することができる。
また、前記手順ファイルには前記MP4ファイルの再生に必要なバッファサイズが記述されてあり、前記ファイル生成方法は、さらに、前記手順ファイルに記述されている前記バッファサイズを読み出してもよい。
これにより、MP4ファイルの再生に必要なバッファサイズを手順ファイルから読み出せば、MP4ファイルを解析することなく、そのMP4ファイルが再生可能か否かを簡単に判断することができる。
また、前記手順ファイルには、前記元ファイルの名称である第1のファイル名と前記差分ファイルの名称である第2のファイル名とが記述されてあり、前記ファイル生成方法は、さらに、前記手順ファイルに記述されている第1のファイル名のファイルを前記元ファイルとして特定し、前記手順ファイルに記述されている第2のファイル名のファイルを前記差分ファイルとして特定してもよい。
これにより、MP4ファイルの生成に用いられる元ファイルおよび差分ファイルを適切に取得することができる。
また、前記MP4ファイルの生成では、前記差分ファイルに含まれるデータであるMP4に対応するヘッダ情報を、前記元ファイルに含まれるデータと組み合わせてもよい。
これにより、MP4の適切なヘッダ情報を有するMP4ファイルを簡単に生成することができる。
また、前記元ファイルの取得では、平文の状態の前記元ファイルを取得し、前記MP4ファイルの生成では、生成された前記MP4ファイルを暗号化してもよい。
これにより、MP4への変換後に元ファイルを削除しておけば、その元ファイルに含まれていたデータをMP4ファイルとして残しておきながら、そのデータの秘匿性を確保することができる。
また、前記MP4ファイルの生成では、前記元ファイルを構成する部分が取得されるごとに、当該部分に対応する前記MP4ファイルの部分を生成して暗号化し、前記MP4ファイルを構成する部分が暗号化されるごとに、当該部分に対応する前記元ファイルの部分を削除してもよい。
これにより、平文の元ファイルに含まれる全てのデータが一時的にも記憶領域に格納されることを防ぐことができ、そのデータの秘匿性をより確実に確保することができる。
さらに、上記特許文献1のファイル生成方法では、2つのストリームを連続して再生することが考慮されていない。さらに、その2つのストリームのそれぞれの一部の再生のタイミングをオーバーラップさせことも考慮されていない。したがって、オーバーラップの再生に適したMP4ファイルを生成することができない。
このような問題を解決するために、本発明の一態様に係るファイル生成方法は、MP4ファイルを生成するファイル生成方法であって、2つのストリームが連続して再生されるように前記2つのストリームを統合することによって1つのMP4ファイルを生成し、前記2つのストリームのそれぞれにおいて再生のタイミングがオーバーラップする区間を示す情報を、生成された前記MP4ファイルに格納する。例えば、前記2つのストリームの統合では、それぞれMP4のファイルフォーマットで構成されている元ファイルの少なくとも一部である前記2つのストリームを統合する。また、例えば、前記2つのストリームの統合では、それぞれオーディオのデータを含む前記2つのストリームを統合する。
これにより、MP4ファイルには、オーバーラップの区間を示す情報が格納されている。したがって、そのMP4ファイルを再生する再生装置は、その情報を用いて、MP4ファイルから、オーバーラップの区間のデータを容易に特定することができる。その結果、再生装置は、そのオーバーラップの区間のデータを合成するなどによってそのデータを適切に再生することができる。つまり、オーバーラップの再生に適したMP4ファイルを生成することができる。
また、前記2つのストリームの統合では、前記2つのストリームのうちの何れか一方のストリームに含まれる複数のサンプルにわたって前記区間が存在する場合、 前記複数のサンプルのうちの少なくとも1つを削除した後に、前記2つのストリームを統合してもよい。
これにより、サンプルが削除されるため、オーバーラップの区間を短くすることができる。その結果、オーバーラップの区間に対する再生装置による特別な処理の負担を軽減することができる。
また、前記情報の格納では、前記区間の時間長を示す時間情報を前記情報として前記MP4ファイルに格納してもよい。
これにより、MP4ファイルを再生する再生装置は、その情報を用いて、オーバーラップの区間の時間長を容易に特定することができる。その結果、再生装置は、そのオーバーラップの区間のデータを合成するなどによって、特定された時間長内でそのデータを適切に再生することができる。
また、前記情報の格納では、前記MP4ファイルにおけるmoof内のtrafに前記時間情報を格納してもよい。
これにより、再生装置は、格納されている時間情報を適切に取得することができる。
また、前記ファイル生成方法では、前記情報を保持している装置または光ディスクから前記情報を取得してもよい。
これにより、わざわざオーバーラップの区間を示す情報を生成することなく、MP4ファイルにその情報を簡単に格納することができる。
また、本発明の一態様に係る再生方法は、MP4ファイルを再生する再生方法であって、再生対象のコンテンツにおいて再生のタイミングがオーバーラップする2つの区間を示す情報を前記MP4ファイルから抽出し、抽出された前記情報に基づいて前記コンテンツにおける前記2つの区間を特定し、当該2つの区間のそれぞれのデータに対する復号結果を合成して出力する。
これにより、再生装置は、MP4ファイルから、オーバーラップの区間のデータを容易に特定することができる。その結果、再生装置は、そのオーバーラップの区間のデータを適切に再生することができる。
また、本発明の一態様に係る記録媒体は、MP4ファイルを記録している記録媒体であって、前記MP4ファイルは、コンピュータに読み出されて再生されるコンテンツと、前記コンテンツにおいて再生のタイミングがオーバーラップする2つの区間を示す情報とを含む。
これにより、記録媒体からそのMP4ファイルを読み出して再生する再生装置は、その情報を用いて、MP4ファイルから上述の2つの区間のデータを容易に特定することができる。その結果、再生装置は、それらの区間のデータを合成するなどによってそのデータを適切に再生することができる。
さらに、上記特許文献1のファイル生成方法では、エレメンタリーストリームからプレイリストを用いてMP4ファイルを生成する際に、エレメンタリーストリームをプレイリストの情報を用いた演算を行うことで特定する必要がある。このため、特定する演算処理にかかる負荷が発生してしまう。
このような問題を解決するために、本発明の一態様に係るファイル生成方法は、エレメンタリーストリームからMP4ファイルを生成するファイル生成方法であって、複数のエレメンタリーストリームのそれぞれを示す識別情報が含まれるプレイリストを取得し、取得した前記プレイリストに含まれる所定の識別情報によって示されるエレメンタリーストリームを選択し、選択した前記エレメンタリーストリームに対応しているマニフェストファイルであって、所定のルールに基づいてファイルのフォーマットを変換するために必要なマニフェストファイルに基づいて、前記エレメンタリーストリームに含まれるデータをMP4のファイルフォーマットに変換することによって、前記MP4ファイルを生成する。
これによれば、プレイリストから選択したエレメンタリーストリームに含まれるデータについて、当該エレメンタリーストリームに対応しているマニフェストファイルに基づいて、MP4のファイルフォーマットに変換することができる。マニフェストファイルを用いることにより、例えば、プレイリストの所定の識別情報によって示されるエレメンタリーストリームを、演算することなく特定できるため、処理負荷を抑えることができる。
また、前記プレイリストは、さらに、前記所定の識別情報によって示されるエレメンタリーストリームの一部の区間を示す区間情報を含み、前記選択では、さらに、前記区間情報で示される前記エレメンタリーストリームの前記区間を選択し、前記変換では、選択された前記エレメンタリーストリームの前記区間をMP4のファイルフォーマットに変換してもよい。
これによれば、プレイリストから選択したエレメンタリーストリームの区間のデータについて、当該エレメンタリーストリームに対応しているマニフェストファイルに基づいて、MP4のファイルフォーマットに変換することができる。マニフェストファイルを用いることにより、プレイリストの区間情報によって示されるエレメンタリーストリームの区間を、演算することなく特定できるため、処理負荷を抑えることができる。
また、前記区間情報は、前記エレメンタリーストリームの復号または表示の時刻を示す時刻情報で示されており、前記マニフェストファイルは、前記時刻と前記エレメンタリーストリームにおける位置とが対応付けられた情報であり、前記変換では、前記マニフェストファイルから、前記プレイリストの前記区間情報により示される時刻情報に対応した、前記エレメンタリーストリームにおける前記区間の位置を特定し、特定した前記エレメンタリーストリームの前記区間を抽出し、抽出した前記エレメンタリーストリームの前記区間をMP4のファイルフォーマットに変換してもよい。
これによれば、マニフェストファイルには、復号または表示の時刻と、エレメンタリーストリームにおける位置とが予め関連付けられているため、プレイリストに示される区間情報から、容易にエレメンタリーストリームの区間の位置を特定できる。これにより、処理負荷を抑えることができる。
また、前記プレイリストは、第1エレメンタリーストリームを示す第1識別情報と、第2エレメンタリーストリームを示す第2識別情報とを前記所定の識別情報として、かつ、前記第1エレメンタリーストリームの第1区間を示す第1区間情報と、前記第2エレメンタリーストリームの第2区間を示す第2区間情報とを前記区間情報として含み、前記選択では、取得した前記プレイリストから、前記第1識別情報によって示される前記第1エレメンタリーストリームのうちの前記第1区間情報で示される前記第1区間と、前記第2識別情報によって示される前記第2エレメンタリーストリームのうちの前記第2区間情報で示される前記第2区間と、を選択し、前記変換では、選択した前記第1エレメンタリーストリームの前記第1区間と、前記第2エレメンタリーストリームの前記第2区間とを含むデータをMP4のファイルフォーマットに変換してもよい。
これによれば、プレイリストによって2つのエレメンタリーストリームのそれぞれの区間が選択されていても、容易に2つの区間を特定することができる。これにより、処理負荷を抑えることができる。
また、前記変換では、前記第1エレメンタリーストリームに対応している第1マニフェストファイルに基づいて、選択した前記第1エレメンタリーストリームの前記第1区間を抽出し、前記第2エレメンタリーストリームに対応している第2マニフェストファイルに基づいて、選択した前記第2エレメンタリーストリームの前記第2区間を抽出し、抽出した前記第1区間及び前記第2区間を含むデータをMP4のファイルフォーマットに変換してもよい。
これによれば、プレイリストによって2つのエレメンタリーストリームのそれぞれの区間が選択されていても、2つのエレメンタリーストリームのそれぞれに対応するマニフェストファイルを用いるため、容易に2つの区間を特定することができる。これにより、処理負荷を抑えることができる。
また、前記変換では、さらに、前記エレメンタリーストリームに対応する音声のMP4ファイルを取得し、選択した前記エレメンタリーストリームに対応しているマニフェストファイルに基づいて、当該エレメンタリーストリームに対応している映像のエレメンタリーストリームを抽出し、抽出した前記映像のエレメンタリーストリームと、選択した前記音声のMP4ファイルとを用いて、前記MP4ファイルを生成してもよい。
これによれば、音声のMP4ファイルをエレメンタリーストリームから変換して生成する必要がないため、処理負荷を抑えることができる。
また、前記選択では、ユーザーからの入力を受け付けるためのメニューを生成し、生成したメニューへの入力を受け付け、受け付けたメニューへの入力に応じて決定されたプレイリストからエレメンタリーストリームを選択してもよい。
これによれば、プレイリストにユーザーの意図を反映することができる。
また、本発明の一態様に係るファイル生成装置は、エレメンタリーストリームからMP4ファイルを生成するファイル生成装置であって、複数のエレメンタリーストリームのそれぞれを示す識別情報が含まれるプレイリストを取得する取得部と、取得した前記プレイリストに含まれる所定の識別情報によって示されるエレメンタリーストリームを選択する選択部と、選択した前記エレメンタリーストリームに対応しているマニフェストファイルであって、所定のルールに基づいてファイルのフォーマットを変換するために必要なマニフェストファイルに基づいて、前記エレメンタリーストリームに含まれるデータをMP4のファイルフォーマットに変換することによって、前記MP4ファイルを生成する生成部と、を備える。
また、本発明の一態様に係る記録媒体は、複数のMPEG2−TSファイルと、前記複数のMPEG2−TSファイルに含まれる複数のエレメンタリーストリームのそれぞれを示す識別情報が含まれるプレイリストと、選択した前記エレメンタリーストリームに対応しているマニフェストファイルであって、所定のルールに基づいてファイルのフォーマットを変換するために必要なマニフェストファイルと、を記録している。
以下、実施の形態について、図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態1)
図5は、本実施の形態におけるファイル生成装置の構成を示すブロック図である。
本実施の形態におけるファイル生成装置10は、MP4ファイルを生成する装置であって、元ファイル取得部11と、差分ファイル取得部12と、手順ファイル取得部13と、生成部14とを備える。元ファイル取得部11は、MP4と異なるファイルフォーマットで構成されている元ファイルを取得する。差分ファイル取得部12は、その元ファイルに含まれていないデータを含む差分ファイルを取得する。手順ファイル取得部13は、MP4ファイルを生成するための手順を示す手順ファイルを取得する。生成部14は、その手順ファイルに示される手順にしたがって、差分ファイルに含まれるデータと、元ファイルに含まれるデータとを組み合わせることによって、MP4ファイルを生成する。言い換えれば、生成部14は、元ファイルをMP4ファイルに変換する。
以下、このファイル生成装置10による処理動作について詳細に説明する。
図6は、MPEG2−TSのストリームファイル、差分ファイルおよびコピーマニフェストファイルから、MP4のストリームファイルを生成する方法を説明するための図である。
本実施の形態では、例えば、光ディスク(例えばBlu−ray(登録商標)ディスク)に、上述の元ファイルであるストリームファイルA(XXXXX.M2TS)と、上述の手順ファイルであるコピーマニフェストファイル(XXXXX.CMNF)と、上述の差分ファイル(XXXXX.DMP4)とが記録されている。コピーマニフェストファイル(XXXXX.CMNF)には、この元ファイルをどのように処理してMP4ファイルに変換するのかの変換手順が記述されている。差分ファイル(XXXXX.DMP4)は、MP4ファイルへ変換するために必要となるデータを格納している。
生成部14は、MPEG2−TSのストリームファイルA(XXXXX.M2TS)を変換する際には、コピーマニフェストファイル(XXXXX.CMNF)の記述に従って、ストリームファイルA(XXXXX.M2TS)のデータと差分ファイル(XXXXX.DMP4)のデータとを交互に組み合わせることにより、MP4ファイルであるストリームファイルB(XXXXX.MP4)を生成する。言い換えれば、生成部14は、ストリームファイルA(XXXXX.M2TS)をストリームファイルB(XXXXX.MP4)に変換する。
これにより、元ファイルを音声または映像のエレメンタリーストリーム(例えば、HE−AACまたはMPEG−4 AVCのストリーム)に復元することなく、その変換を行うことができる。また、元ファイルが暗号化されていれば、その暗号化も解くことなく、元ファイルからMP4ファイルへの変換が簡単にできる。
このコピーマニフェストファイル(XXXXX.CMNF)は、“Input File A”、“Input File B”、“Output File”、“Output File Size”、“ATTRIBUTE”、“MP4 DECODER BUFFER SIZE”、および“COPY MANIFEST”を含む。“Input File A”および“Input File B”は、入力される2つのファイルのファイル名を示す。“Input File A”によって示されるファイルの先頭部分のコピーから変換処理が始められる。“Output File”は、出力されるファイル、つまり生成されるMP4ファイルのファイル名を示す。“Output File Size”は、その出力されるMP4ファイルのデータサイズを示す。このデータサイズは、バイト精度で記述されている。このデータサイズを確認することで、出力されるMP4ファイルが記録されるメディアに、十分な空き容量があるか否かを変換処理の前に確認することができる。“ATTRIBUTE”は、各ファイルの属性を示し、具体的には、どのようなエレメンタリーストリームが変換されてどのようなファイルが生成されるのかを示す。図6に示す例では、“ATTRIBUTE”は、変換後のMP4ファイルが、HEVC(High Efficiency Video Coding)で圧縮された4K映像と、AAC(Advanced Audio Coding)の5.1ch英語音声とを含んでいることを示す。これによって、変換処理の前に、このコピーマニフェストファイルに従って変換した際に得られる変換後のファイルがどのようなファイルかを事前に確認することができる。また、“ATTRIBUTE”は、MP4ファイルのデータ構造などを示してもよく、MP4ファイルの“ftyp”に格納されるMP4のブランド(つまり種類)を示してもよい。
また、“MP4 DECODER BUFFER SIZE”は、出力されるMP4ファイルである変換後のストリームファイルB(XXXXX.MP4)を再生するために、最低必要となるバッファサイズを示す。このバッファサイズは、変換後のストリームファイルBであるMP4ファイルにおいて、どのような多重化規則で映像と音声などが多重化されているかに依存する量である。“MP4 DECODER BUFFER SIZE”は、バッファサイズ以外にも、変換後のストリームファイルBを再生するために、どのようなデコーダリソース(メモリ量やデータ転送速度)が必要かを示してもよい。
“COPY MANIFEST”は、“Input File A”によって示されるファイルの各部分の範囲と、“Input File B”によって示されるファイルの各部分の範囲とを示す。これの各部分は、“Output File”によって示されるMP4ファイルを生成するために順次コピーして貼り付けられる部分である。また、それぞれの部分の範囲は、コピー開始位置とコピーサイズとによって、またはコピーサイズのみによって示される。また、“COPY MANIFEST”は、“Input File A”によって示されるファイルの部分と、“Input File B”によって示されるファイルの部分とが交互に繰り返しコピーおよび貼り付けられるように、それらのファイルの各部分の範囲を示す。
差分ファイル(XXXXX.DMP4)は、その差分ファイルの先頭から、指定のサイズの部分ごとに、コピーされて貼り付けられる。したがって、“COPY MANIFEST”では、差分ファイル(XXXXX.DMP4)の各部分を示すために、コピー開始位置を指定する必要がない。つまり、コピー開始位置を用いずに、コピーサイズ(データサイズ)のみによって、差分ファイルの各部分の範囲が示される。
一方、ストリームファイルA(XXXXX.M2TS)は、変換後のストリームファイルB(XXXXX.MP4)に必要のないデータを含む。したがって、“COPY MANIFEST”では、元ファイルであるストリームファイルAの各部分を示すために、コピー開始位置およびコピーサイズによって、その各部分の範囲が示される。コピー開始位置は、ファイルの先頭からのバイト位置であり、コピーサイズはバイト単位のデータサイズである。
生成部14は、コピーマニフェストファイルにしたがって、“COPY MANIFEST”によって示される、元ファイルに含まれる部分と、差分ファイルに含まれる部分とを、交互にコピーして貼り付けることを繰り返す。つまり、生成部14は、“COPY MANIFEST”によって示される、元ファイルに含まれる部分と、差分ファイルに含まれる部分とを、交互に組み合わせることを繰り返す。これにより、変換後のストリームファイルBであるMP4ファイルが生成される。
したがって、コピーマニフェストファイルにしたがえば、どのような機器で元ファイルを変換したとしても、同一の変換後のストリームファイルB(XXXXX.MP4)を生成することが可能となる。つまり、変換後のストリームファイルBを、どのような機器においても不具合無く再生することが容易となる。
なお、ファイル生成装置10は、差分ファイル(XXXXX.DMP4)とコピーマニフェストファイル(XXXXX.CMNF)を、Blu−ray(登録商標)ディスクなどの光ディスクから取得してもよく、これらの両方もしくは片方のファイルをインターネット経由で取得してもよい。この場合は、元ファイルを、最新のファイルフォーマットのファイル、または別の映像および音声を含むMP4ファイルなどへ変換するなどの様々な選択をユーザーに提示することが、ファイル生成装置10に特段の変更を要することなく可能となる。
また、ファイル生成装置10は、元ファイルであるストリームファイルAが暗号化されたままの状態で変換を行ってもよく、元ファイルの暗号を解いた後に、MP4ファイルへの変換を行い、生成されたMP4ファイルを再び暗号化してもよい。また、元ファイルであるファイルストリーム(XXXXX.M2TS)は平文であってもよい。なお、差分ファイルは、ヘッダ情報から構成されるため、差分ファイルの暗号化は不要である。ただし、元ファイルであるストリームファイルA(XXXXX.M2TS)、あるいは、MP4ファイルであるストリームファイルB(XXXXX.MP4)が平文である場合に、ファイル全体をメモリに展開する、あるいは、ハードディスクに一旦保存するなどの動作は、セキュリティ面から許容されないことがある。
したがって、ファイル生成装置10は、平文の元ファイルであるストリームファイルA(XXXXX.M2TS)のうち、MP4ファイルへの変換が終了した領域から順に、その領域を削除してもよい。また、ファイル生成装置10は、MP4ファイルであるストリームファイルB(XXXXXX.MP4)を暗号化するときには、そのMP4ファイルに含まれる“Movie fragment”、あるいは、所定の数のMP4サンプルなどの部分が生成される度に、その生成された部分を順に暗号化してもよい。なお、暗号化の前後でデータサイズが変化しないような暗号化方式を用いれば、暗号化の有無に関わらず、コピーされるデータの領域は変化しない。
また、コピーマニフェストファイルは、元ファイルであるストリームファイルA(XXXXX.M2TS)が暗号化されているかどうかを示してもよい。あるいは、コピーマニフェストファイルは、そのストリームファイルAに多重化された符号化データを暗号化されたまま変換するのか、その暗号化された符号化データを平文にしてからMP4ファイルに変換した後に再び暗号化するのかなどを示してもよい。
図7は、差分ファイルおよびコピーマニフェストファイルを生成する方法を説明するための図である。
差分ファイル(XXXXX.DMP4)とコピーマニフェストファイル(XXXXX.CMNF)は次のようにして生成することが可能である。オーサリングの段階で、元ファイルであるストリームファイルA(XXXXX.M2TS)をフォーマット変換することにより、MP4ファイルである変換後のストリームファイルB(XXXXX.MP4)を生成する。次に、元ファイルであるストリームファイルAと、ストリームファイルBとのそれぞれの間で、互いに一致するデータを含む少なくとも1つの部分を検索する。このとき、それぞれの部分のデータサイズが最も大きくなるように検索する。次に、ストリームファイルBに含まれる、上述のように検索された部分以外の残りの部分のそれぞれを、ストリームファイルBに含まれている順番にしたがって連結することにより、差分ファイルを生成する。このときの、各ファイルの相関関係結果を、“COPY MANIFEST”としてコピーマニフェストファイルに記録する。
なお、上述の検索は、ストリームファイルAとストリームファイルBとのそれぞれに含まれるデータを、それぞれのファイルの先頭から後方へ向かう方向に順次取得し、それらのデータを比較することによって行われる。そして、その比較は、上述の方向と逆方向に戻ることなく行われる。これにより、上述の変換処理(コピー処理)を、シーケンシャルに、つまり1つの連続した処理によって行うことが可能となり、高速化または少メモリ化を実現することができる。
なお、ビデオおよびオーディオをMPEG2−TSで多重化する際には、Iピクチャなど符号量の大きいピクチャのデータがアンダーフローしないように、ビデオに含まれる所定のPTS(Presentation TimeStamp)のピクチャが、オーディオに含まれるその所定のPTSと同一のPTSのフレームに比べて時間的に前に多重化されることがある。一方で、ビデオおよびオーディオをMP4で多重化する際には、“Movie fragment”におけるビデオの先頭ピクチャのPTSとオーディオの先頭フレームのPTSとが一致、あるいは近傍となるように、多重化されることが一般的である。
このように、ストリームファイルAとストリームファイルBにおいて、オーディオ、ビデオ、またはテキストの多重化単位が異なると、変換処理をシーケンシャルに行うことができないことがある。その結果、読出し、あるいは、書き込みのポインタを順次、前後に移動させながら変換することも生じる。したがって、変換処理が1つの連続した処理で行えるかどうか、あるいは、1つの連続した処理で行えない場合に、後戻りが必要な最大データサイズなどを、コピーマニフェストファイルに登録してもよい。
なお、ストリームファイルAとストリームファイルBとに対して行われる、一致するデータを含む部分の検索が、小さいデータの単位で行われると、コピーマニフェストファイルのデータサイズが大きくなったり、変換処理が煩雑になったりする。このため、特定の閾値を設けてもよい。例えば、互いに8バイト以上一致するデータを含む部分のみをコピーマニフェストファイルに登録する。ストリームファイルBに含まれる、その部分以外の残りの部分のそれぞれが、ストリームファイルAのデータと一致する8バイト未満のデータを含んでいても、それらの残りの部分に含まれるデータは差分ファイルに格納される。また、この閾値を、コピーマニフェストファイルに“MIN COPY SIZE: 8 bytes”のように記述しても良い。
また、差分ファイルを用いずに、MP4ファイルにおける多重化単位を示すコピーマニフェストファイルを用いて、MPEG−2TSのファイルをMP4のファイルに変換してもよい。例えば、MP4では、オーディオ、ビデオ、あるいは、テキストがそれぞれ異なる“Movie fragment”として多重化される。このとき、復号順で“Movie fragment”の先頭および最終となるオーディオフレームおよびビデオピクチャのそれぞれのDTS、あるいは、MPEG−2TSのファイルの先頭からのバイトオフセット値などを、メディアの識別情報と共に登録してもよい。なお、“Movie fragment”の登録順は、MP4のファイルにおける“Movie fragment”の出現順と一致するものとする。
図8は、本実施の形態におけるファイル生成方法のフローチャートである。
本実施の形態におけるファイル生成方法は、ファイル生成装置10がMP4ファイルを生成する方法である。このファイル生成方法では、まず、ファイル生成装置10の元ファイル取得部11は、MP4と異なるファイルフォーマットで構成されている元ファイルを取得する(ステップS11)。次に、差分ファイル取得部12は、その元ファイルに含まれていないデータを含む差分ファイルを取得する(ステップS12)。次に、手順ファイル取得部13は、MP4ファイルを生成するための手順を示す手順ファイルを取得する(ステップS13)。そして、生成部14は、その手順ファイルに示される手順にしたがって、差分ファイルに含まれるデータと、元ファイルに含まれるデータとを組み合わせることによって、上述のMP4ファイルを生成する(ステップS14)。例えば、ステップS11では、元ファイル取得部11は、MPEG2−TSのファイルフォーマットで構成されている元ファイルを取得する。
これにより、予め定められた手順にしたがって、差分ファイルに含まれるデータと、元ファイルに含まれるデータとを組み合わせることによってMP4ファイルが生成される。したがって、MPEG2−TSなどのファイルフォーマットによって構成される元ファイルを、映像ストリームまたは音声ストリームなどの各ストリームに戻すことなく、MP4ファイルを簡単に生成することができる。また、元ファイルが暗号化されていてもそれを復号して再暗号化する必要がない。したがって、MP4ファイルを生成するための処理負荷を抑えることができる。
また、ステップS11〜S13では、元ファイル取得部11、差分ファイル取得部12、および手順ファイル取得部13はそれぞれ、光ディスクから元ファイル、差分ファイルおよび手順ファイルを読み出すことによってそれらのファイルを取得する。これにより、MP4ファイルの生成に必要となる全てのファイルが1つの光ディスクから取得されるため、それらのファイルを探す手間を省くことができ、MP4ファイルをより簡単に生成することができる。
ここで、手順ファイルには、差分ファイルに含まれる部分の範囲と、元ファイルに含まれる部分の範囲とが交互に配列されるように、差分ファイルに含まれる複数の部分のそれぞれの範囲と、元ファイルに含まれる複数の部分のそれぞれの範囲とが記述されている。そこで、ステップS14では、生成部14は、手順ファイルに記述されている各範囲の順に、その各範囲によって示される部分を組み合わせることによって、MP4ファイルを生成する。これにより、MP4ファイルに含まれる各部分をそのMP4ファイルの先頭側から順に生成することができ、後戻りすることがないため、MP4ファイルをより簡単に生成することができる。
また、差分ファイルに含まれる複数の部分のそれぞれの範囲は、データサイズによって手順ファイルに記述されている。一方、元ファイルに含まれる複数の部分のそれぞれの範囲は、その部分の開始位置とデータサイズとによって手順ファイルに記述されている。これにより、手順ファイルの記述に基づいて、差分ファイルおよび元ファイルから適切な部分をコピーまたは取得して組み合わせることができる。また、差分ファイルに含まれる部分の範囲の記述に開始位置が用いられないため、手順ファイルのデータサイズを抑えることができる。
また、手順ファイルにはMP4ファイルのデータサイズが記述されている。そこで、ステップS14では、さらに、生成部14は、手順ファイルに記述されているMP4ファイルのデータサイズに基づいて、そのMP4ファイルを記録するだけの空き容量がメディアにあるか否かを判定してもよい。これにより、メディアにMP4ファイルを記録するだけの空き容量があるか否かが判定されるため、空き容量がない場合には、そのMP4ファイルの生成を事前に中止するなどの処理を行うことができる。つまり、エラーの発生を未然に防ぐことができる。
また、手順ファイルにはMP4ファイルの属性が記述されている。そこで、ファイル生成装置10は、さらに、手順ファイルに記述されているその属性を読み出してもよい。
これにより、MP4ファイルの生成前にMP4ファイルの属性を手順ファイルから読み出せば、所望のMP4ファイルが生成されるか否かを事前に判断することができる。
また、手順ファイルにはMP4ファイルの再生に必要なバッファサイズが記述されている。そこで、ファイル生成装置10は、さらに、手順ファイルに記述されているそのバッファサイズを読み出してもよい。これにより、MP4ファイルの再生に必要なバッファサイズを手順ファイルから読み出せば、MP4ファイルを解析することなく、そのMP4ファイルが再生可能か否かを簡単に判断することができる。
また、手順ファイルには、元ファイルの名称である第1のファイル名と差分ファイルの名称である第2のファイル名とが記述されている。そこで、ファイル生成装置10は、さらに、手順ファイルに記述されている第1のファイル名のファイルを元ファイルとして特定し、手順ファイルに記述されている第2のファイル名のファイルを差分ファイルとして特定してもよい。これにより、MP4ファイルの生成に用いられる元ファイルおよび差分ファイルを適切に取得することができる。
また、ステップS14では、生成部14は、差分ファイルに含まれるデータであるMP4に対応するヘッダ情報を、元ファイルに含まれるデータと組み合わせる。これにより、MP4の適切なヘッダ情報を有するMP4ファイルを簡単に生成することができる。
また、ステップS11では、元ファイル取得部11は、平文の状態の元ファイルを取得し、ステップS14では、生成部14は、生成されたMP4ファイルを暗号化してもよい。これにより、MP4への変換後に元ファイルを削除しておけば、その元ファイルに含まれていたデータをMP4ファイルとして残しておきながら、そのデータの秘匿性を確保することができる。
ここで、ステップS14では、生成部14は、元ファイルを構成する部分が取得されるごとに、その部分に対応するMP4ファイルの部分を生成して暗号化し、MP4ファイルを構成する部分が暗号化されるごとに、その部分に対応する元ファイルの部分を削除してもよい。これにより、平文の元ファイルに含まれる全てのデータが一時的にも記憶領域に格納されることを防ぐことができ、そのデータの秘匿性をより確実に確保することができる。
(変形例1−1)
上記実施の形態では、差分ファイルおよびコピーマニフェストファイルを用いてMP4ファイルを生成したが、これらのファイルを用いずにMP4ファイルを生成してもよい。本変形例に係るファイル生成方法では、それぞれ平文のヘッダを有する複数のSource PacketからなるMPEG2−TSのストリームファイルを、カウンタを用いてMP4のストリームファイルに変換する。これにより、MP4のストリームファイルが生成される。なお、MPEG2−TSのストリームファイルは元ファイルであり、MP4のストリームファイルはMP4ファイルである。
図9は、本変形例におけるファイル生成方法を説明するための図である。
MPEG2−TSのストリームファイル(つまりコンテンツ)は、上述のように複数のSource Packetから構成されている。なお、図9において、Source Packetは、SPと略して示されている。
本変形例におけるMPEG2−TSのストリームファイルに含まれる各Source Packetでは、Source Packetに含まれるデータのうち、TS Payload部分のみが暗号化されている。つまり、Source Packetに含まれるデータのうち、TS_extra_headerと、TS Headerとは暗号化されておらず、平文である。
暗号化には、AES−CTR(CounTeR)モードが用いられる。なお、AES−CTRモードでは、カウンタの値を使った暗号化および復号が行われる。図9に示すように、ビデオ用のカウンタ(AES Counter for Video)の値を用いて、それぞれビデオのデータを含む複数のTS Payloadが暗号化され、オーディオ用のカウンタ(AES Counter for Audio)の値を用いて、それぞれオーディオのデータを含む複数のTS Payloadが暗号化される。ビデオ用のカウンタは、図9に示す矢印にしたがってカウント値が増加するように、ビデオのSource Packetのデータのみをカウントする。オーディオ用のカウンタは、図9に示す矢印にしたがってカウント値が増加するように、オーディオのSource Packetのデータのみをカウントする。なお、AES−CTRモードでの暗号化の詳細については後述する。
ファイル生成装置は、MPEG2−TSのストリームファイルに含まれる複数のSource Packetのそれぞれのうち、TS Payloadのみを取り出すことによって、MPEG2−TSのストリームファイルを、MP4のストリームファイルに簡単に変換することができる。
図10Aは、AES−CTRモードによるデータの暗号化を説明するための図である。
暗号化の際には、鍵と初期値であるIV(Initial Vector)とが用いられる。まず、鍵を用いてIVを暗号化する。この暗号化によって得られた値と、暗号化対象のデータの先頭の16Bytes(図10Aに示すm1)との排他的論理和の演算によって、その先頭の16Bytesに対応する暗号文c1が生成される。暗号化対象のデータに含まれる次の16Bytes(図10Aに示すm2)のデータ(ブロック)に対しては、IV=IV+1のように、IVを更新した後に、上述の先頭の16Bytesに対する処理と同じ処理を行う。これにより、次の16Bytesのデータに対応する暗号文c2が生成される。上述のように更新されるIVは上述のカウンタ値であって、図9に示すビデオ用のカウンタおよびオーディオ用のカウンタはそれぞれIV=IV+1の演算を行う。
このような処理を連続して行うことで、16Bytes以上の長いデータに対しても暗号文を作成することができる。なお、暗号化対象のデータの長さが16Bytesの倍数になっていない場合には、末尾のブロックにおいて、排他的論理和をビット単位で行うことによって暗号文が生成される。
図10Bは、AES−CTRモードによるデータの復号を説明するための図である。
復号の際には、復号対象のデータに対して、暗号化の場合と全く同じ処理が行われる。つまり、復号の際にも、鍵を用いてIVを暗号化する処理が行われる。
このように、本変形例に係るファイル生成方法は、MP4ファイルを生成するファイル生成方法であって、複数のパケットからなる元ファイルを取得し、前記元ファイルに含まれるパケットごとに、当該パケットのうち、平文の状態にあるヘッダ情報を除く、残りの暗号化されているペイロード部分のみを取得して組み合わせてMP4ファイルを生成する。例えば、前記元ファイルの取得では、MPEG2−TSのファイルフォーマットで構成されている前記元ファイルを取得する。これにより、MPEG2−TSなどのファイルフォーマットによって構成される元ファイルを、映像ストリームまたは音声ストリームなどの各ストリームに戻すことなく、MP4ファイルを簡単に生成することができる。また、元ファイルを復号して再暗号化する必要がない。したがって、MP4ファイルを生成するための処理負荷を抑えることができる。
ここで、前記元ファイルに含まれる前記複数のパケットのうち、ビデオのデータを含む複数のパケットのそれぞれのペイロードは、ビデオ用の第1のカウンタのカウンタ値を用いて暗号化され、オーディオのデータを含む複数のパケットのそれぞれのペイロードは、前記第1のカウンタと異なるオーディオ用の第2のカウンタのカウンタ値を用いて暗号化されている。前記第1のカウンタは、前記元ファイルの先頭から後に向かって、ビデオに対応する複数のパケットのそれぞれに含まれるデータのみをカウントし、前記第2のカウンタは、前記元ファイルの先頭から後に向かって、オーディオに対応する複数のパケットのそれぞれに含まれるデータのみをカウントする。これにより、第1のカウンタがビデオ専用のカウンタとして用いられるため、MP4ファイルにおいて、ビデオに対応する複数のパケットのそれぞれのペイロードが組み合わされて構成されるビデオエレメンタリーを、簡単に復号することができる。同様に、第2のカウンタがオーディオ専用のカウンタとして用いられるため、MP4ファイルにおいて、オーディオに対応する複数のパケットのそれぞれのペイロードが組み合わされて構成されるオーディオエレメンタリーを、簡単に復号することができる。
なお、前記元ファイルは複数のAligned Unitからなり、前記複数のAligned Unitのそれぞれは複数のSource Packetからなる。前記元ファイルに含まれる前記複数のパケットは、前記複数のAligned Unitのそれぞれに含まれる複数のSource Packetである。また、前記ペイロードはTS Payloadであり、前記ヘッダ情報は、TP_extra_headerおよびTS Headerからなる。
(変形例1−2)
上記実施の形態では、差分ファイルおよびコピーマニフェストファイルを用いてMP4ファイルを生成したが、これらのファイルを用いずにMP4ファイルを生成してもよい。本変形例に係るファイル生成方法では、補助情報を含むMPEG2−TSのストリームファイルを、その補助情報を用いてMP4のストリームファイルに変換する。これにより、MP4のストリームファイルが生成される。
MPEG2−TSとMP4においては、アクセスユニットのデータの多重化方法が一部異なるため、MPEG2−TSのデータをMP4ファイルに格納する際には、アクセスユニットを複数の部分に分離してそれらの部分を別々に格納する必要がある。基本的には、MPEG2−TSにおけるアクセスユニットは、ビデオのピクチャまたはオーディオのフレームの復号に必須となる初期化情報と、ピクチャまたはフレームの符号化データとを共に含む。一方、MP4ファイルにおけるアクセスユニット(MP4では、サンプルまたはMP4サンプルと呼ばれる)は、ピクチャまたはフレームの符号化データのみから構成され、復号に必要な初期化情報は、MP4ファイルのヘッダ情報として符号化データとは別に格納される。
以下に、MPEG2−TSによって多重化された符号化データをMP4ファイルに変換する際に、変換に係る処理量を低減させるための補助情報、および、補助情報を使用した多重化フォーマットの変換方法について説明する。特に、符号化データが暗号化されている場合には、暗号化を解いて再暗号化する際の処理量が大きい。本変形例では、符号化データの暗号化を解かずに、データのコピーのみでMP4ファイルへの変換を行うことができる。
なお、変換前の元ファイルであるMPEG2−TSのストリームファイルは、他のTS(トランスポートストリーム)であってもよい。つまり、元ファイルは、MPEG−2システムで規定されたTSだけでなく、TSパケットに所定のバイト数のヘッダ情報を付加したTS(例えばBlu−ray(登録商標) discまたは映像配信などで使用されるTS)であってもよい。また、変換によって生成されるMP4ファイルは、“Movie fragment”を使用したMP4ファイルであってもよく、“Movie fragment”を使用しないMP4ファイルであってもよい。さらに、変換によって生成されるファイルのフォーマットは、MP4をベースに拡張されたDECE(Digital Entertainment Content Ecosystem)のCFF(Common File Format)、またはMPEG−DASH(Dynamic Adaptive Streaming over HTTP)などであってもよい。以下では、元ファイルをトランスポートストリームとして説明する。
図11は、トランスポートストリームに格納されるMPEG−4 AACのアクセスユニットをMP4ファイルに格納する例を示す図である。
トランスポートストリームにおけるMPEG−4 AACのアクセスユニットは、LATM(Low Overhead Audio Transport Multiplex)ヘッダ、PayloadLengthInfo()、および、PayloadMux()の3種類のデータから構成される。LATMヘッダには、チャネル数およびサンプリング周波数などの、MPEG−4 AACの符号化データ(AACデータともいう)の復号に必要な初期化情報が含まれる。より詳細には、LATMヘッダ内のAudioSpecificConfig()に、その初期化情報が格納される。PayloadLengthInfo()には、PayloadMux()のサイズが格納され、PayloadMux()に、AACデータが格納される。
このアクセスユニットのデータをMP4ファイルに格納する際には、LATMヘッダ内のAudioSpecificConfig()が、MP4ファイルのmoov内のstsdにおけるサンプルエントリに格納される。さらに、PayloadLengthInfo()とPayloadMux()とが、サンプルデータとしてmdatに格納される。なお、サンプルデータはサンプルに格納されるデータである。また、mdat内のサンプルデータはmoovから参照される、あるいは、“Movie fragment”を使用する場合には、mdat内のサンプルデータはmoofから参照される。MPEG−2 AACでは、LATMヘッダではなくADTS(Audio Data Transport Stream)ヘッダが用いられ、アクセスユニットは、ADTSヘッダとAACデータ(raw_data_block()と呼ばれる)から構成される。このときも、ADTSヘッダがアクセスユニットから分離され、ADTSヘッダに含まれるデータのうち、少なくともadts_fixed_header()は、サンプルエントリに格納される。さらに、AACデータがサンプルデータとしてmdatに格納される。
図12は、トランスポートストリームに格納されるMPEG−4 AVC(Advanced Video Coding)のアクセスユニットをMP4に格納する例を示す図である。
MPEG−4 AACの場合と同様に、トランスポートストリームでは、Sequence Parameter Set(SPS)およびPicture Parameter Set(PPS)などの、復号時に必要となる初期化情報は、アクセスユニットの一部として格納される。一方、MP4ファイルでは、これらの初期化情報は、MP4ファイルのヘッダ情報として格納される。図12に示すアクセスユニットは、IDR(Instantaneous Decoder Refresh)ピクチャを構成する。SPSおよびPPSのそれぞれのNAL(Network Adaptation Layer)ユニットは、アクセスユニットから分離されて、MP4ファイルのmoov内のstsdにおけるサンプルエントリに格納される。アクセスユニットに含まれるその他のデータは、サンプルデータとしてmdatに格納される。
なお、MP4では、MPEG−4 AVCのサンプルデータに、SPSおよびPPSなどの初期化情報を含めることが可能なモードを選択することができる。モードは、サンプルエントリの識別情報によって示される。識別情報が“avc1”または“avc2”の場合には、初期化情報をサンプルデータに含めることは禁止される。一方、識別情報が“avc3”または“avc4”の場合には、初期化情報をサンプルデータに含めることが許可される。したがって、トランスポートストリームをMP4ファイルに変換する際に、MP4ファイルにおける上述の識別情報を“avc1”または“avc2”に設定する場合には、トランスポートストリームにおけるアクセスユニットからmdatに格納されるデータの中から、SPSおよびPPSのNALユニット、あるいは、スタッフィング用に用いるFillerDataのNALユニットは削除される。また、識別情報を“avc3”または“avc4”に設定する場合には、SPSまたはPPSのNALユニットを削除しなくてもよい。したがって、MP4ファイルにおける識別情報の設定値に応じて、SPSおよびPPSを削除するかどうかを切替えてもよい。
また、次世代の動画像符号化方式であるHEVC(High Efficiency Video Coding)のデータは、MPEG−4 AVCと同様に、NALユニットによって構造され、SPSおよびPPSなどの初期化情報を有する。HEVCのデータをMP4ファイルに格納する際には、初期化情報をサンプルデータに含めてもよい。したがって、トランスポートストリームをMP4ファイルに変換する際に、トランスポートストリームにおけるアクセスユニットからmdatに格納されるデータのうち、初期化情報を削除するかどうかを、符号化方式の種類に応じて判定し、その判定結果に応じて処理してもよい。
上述のように、MPEG−4 AACの符号化データをMP4ファイルに格納する際には、LATMヘッダはアクセスユニットから分離される。さらに、PayloadLengthInfo()およびPayloadMux()のみがサンプルデータとしてmdatに格納される。以降、PayloadLengthInfo()とPayloadMux()とを合わせて、LATMペイロードと呼ぶ。
そこで、本変形例では、MPEG−4 AACのアクセスユニットのデータを複数のTSパケットに格納する際には、LATMヘッダとLATMペイロードとを別々のTSパケットに格納する。これにより、LATMヘッダを容易に分離することができる。
図13Aは、LATMヘッダとLATMペイロードとのTSパケットへの格納例を示す図である。LATMヘッダとLATMペイロードとのそれぞれのデータが同一TSパケットのペイロード内に混在しないように、必要に応じてスタッフィングが行われる。例えば、アクセスユニット1のLATMヘッダが先頭のTSパケットのペイロードに格納される。このとき、LATMヘッダのサイズがTSペイロードのサイズに満たない場合には、TSペイロードの残りの領域に対してスタッフィングが行われる。なお、図13Aに示す例では、PESパケットは記載されていないが、実際には、アクセスユニットのデータはPESパケットのペイロードに格納され、PESパケットのデータがTSパケットのペイロードに格納される。
次に、LATMヘッダが格納されたTSパケットと、LATMペイロードが格納されたTSパケットの識別方法について説明する。1アクセスユニットを1PESパケットとして格納する際には、PESパケットの先頭データを含むTSパケットにおいて、TSヘッダのpayload_unit_start_indicatorが1にセットされる。payload_unit_start_indicatorが1にセットされたTSパケットのペイロードにLATMヘッダが含まれることを保証すれば、payload_unit_start_indicatorの値に基づいて、TSパケット内にLATMヘッダが含まれるかどうかを判定することができる。複数のアクセスユニットを1つのPESパケットに格納する際には、補助情報であるAU_infoテーブルをPESパケットのペイロードの先頭に配置してもよい。このAU_infoテーブルは、PESパケットのペイロード内に含まれるアクセスユニットの個数と、各アクセスユニットにおけるLATMヘッダとLATMペイロードのサイズとを含む。
図13Bは、AU_infoテーブルのシンタックスの一例を示す図である。
AU_infoテーブルは、AU_info_identification_codeと、アクセスユニットの個数を示すnumber_of_AUと、アクセスユニットにおけるLATMヘッダとLATMペイロードのサイズを示すsize_of_LengthInfoとを含む。AU_info_identification_codeは、AU_infoテーブルに固有のビット列である。本コードをサーチすることで、AU_infoテーブルが存在するかどうかを判定することができる。あるいは、MP4のBox構造のように、AU_infoテーブルを、BoxのデータサイズとBoxのタイプとを組み合わせたデータ構造としてもよい。ただし、トランスポートストリームにおけるデスクリプタ、あるいは、トランスポートストリームとは別に用意されたMP4ファイルへの変換用の補助データなどによって、AU_infoテーブルの存在がシグナリングされる場合には、上述のコードを省略してもよい。また、1アクセスユニットを1PESパケットに格納する際にも、AU_infoテーブルを使用してもよい。
このようなアクセスユニット内の各構成要素のサイズまたはデータオフセットを示すことにより、MP4ファイルへの変換のために分離されるデータを特定する手法を、MPEG−4 AVCの符号化データに対して適用してもよい。つまり、MPEG−4 AVCの符号化データをMP4ファイルに格納する際に、SPSおよびPPSのそれぞれのNALユニットを分離するために、上述の手法を適用してもよい。
図13Cは、アクセスユニット内の構成要素毎に、MP4ファイルのサンプルデータからその構成要素を除外する必要があるかどうかを示すためのAU_infoテーブルのシンタックスの一例を示す図である。
AU_infoテーブルは、AU_info_identification_codeと、number_of_data_unitと、size_of_data_unitと、conversion_modeとを含む。number_of_data_unitは、アクセスユニットに含まれるデータユニットの個数を示す。size_of_data_unitは、データユニットのサイズを示す。conversion_modeは、MP4ファイルへの変換時におけるデータユニットの扱い方を示す変換モードである。conversion_modeが0であれば、そのconversion_modeは、MP4ファイルのサンプルデータとしてデータユニットをコピーすることを示す。また、conversion_modeが1であれば、そのconversion_modeは、サンプルデータからデータユニットを除外すること、つまりサンプルデータとしてデータユニットをコピーしないことを示す。
なお、conversion_modeが1である場合には、そのconversion_modeは、データユニットを除外した後のそのデータユニットの取り扱いを示してもよい。例えば、そのconversion_modeは、サンプルデータからデータユニットを除外したうえで、そのデータユニットをサンプルエントリに格納することなどを示す。
また、複数のデータユニットのそれぞれの情報は復号順で昇順となるように格納される。例えば、MPEG−4 AVCの1アクセスユニットを1PESパケットとして格納する場合には、データユニットがNALユニットに相当し、アクセスユニットを構成するNALユニットの個数がnum_of_data_unitによって示される。そして、SPSおよびPPSのそれぞれのNALユニットに対して、conversion_modeが1にセットされる。また、LATMヘッダとLATMペイロードのそれぞれをデータユニットとみなしてもよい。この場合、LATMヘッダに対応するデータユニットに対して、conversion_modeを1にセットすることで、このAU_infoテーブルをMPEG−4 AACに対しても適用することができる。PESパケット内に複数のアクセスユニットを格納する場合には、number_of_data_unitは、PESパケット内の全アクセスユニットに含まれるデータユニットの総数を示す。
なお、PESパケットの開始部分を含むTSパケットのヘッダ(図3のTS Header)のadaptation_field内に、AU_infoテーブルを格納してもよい。MPEG−4 AVCまたはHEVCにおけるNALユニットあるいはSEI(Supplemental Enhancement Information)などの符号化データの一部として、AU_infoテーブルを格納してもよい。AU_infoテーブルを符号化データの一部として格納する際には、アクセスユニット毎あるいはランダムアクセス毎にAU_infoテーブルを格納することができる。また、AU_infoテーブルをTSパケットまたはPESパケットに格納する場合にも、PESパケット毎にAU_infoテーブルを格納してもよく、ランダムアクセスユニット内の復号順で先頭となるアクセスユニットを含むPESパケットにのみAU_infoテーブルを格納してもよい。ランダムアクセスユニット毎にAU_infoテーブルを格納する場合には、AU_infoテーブルには、ランダムアクセスユニットを構成する全てのアクセスユニットに関する情報が格納される。
図14は、本変形例に係るファイル生成装置の構成を示すブロック図である。
本変形例に係るファイル生成装置100は、AU_infoテーブルを含むトランスポートストリームをMP4ファイルに変換することによって、そのMP4ファイルを生成する。このファイル生成装置100は、補助情報サーチ部101と、補助情報解析部103と、生成部104とを備える。補助情報サーチ部101は、トランスポートストリームから補助情報であるAU_infoテーブルをサーチする。補助情報解析部103は、そのサーチ結果に基づいて、AU_infoテーブルが存在するか否かを判定する。さらに、補助情報解析部103は、AU_infoテーブルが存在すると判定すると、そのAU_infoテーブルを解析する。生成部104は、補助情報解析部103による解析結果に基づいてMP4ファイルを生成する。
生成部104は、具体的には、サンプル生成部104aとサンプルエントリ生成部104bとを備える。サンプル生成部104aは、LATMペイロードのデータ、またはSPSおよびPPS以外のNALユニットなどを、サンプルデータとしてMP4ファイルのmdatに格納する。サンプルエントリ生成部104bは、LATMヘッダのデータ、またはSPSおよびPPSのそれぞれのNALユニットなどを、MP4ファイルのmoov内のstsdにおけるサンプルエントリに格納する。
このようなファイル生成装置100によって、上述のAU_infoテーブルを含むトランスポートストリームをMP4ファイルに簡単に変換することができる。
上述のように、MPEG2−TSとMP4とでは、オーディオまたはビデオの符号化データを格納する際に、復号時に必要となる初期化情報の格納場所が異なる。さらに、MPEG2−TSとMP4とでは、MPEG−4 AVCまたはHEVCにおけるNALユニットの格納フォーマットが異なる。したがって、トランスポートストリームからMP4ファイルへの変換には、格納フォーマットの変換が必要である。以下、図15Aから図15Cを用いて、MPEG2−TSとMP4におけるNALユニットの格納フォーマットについて説明する。
図15Aは、NALユニットの概略構造を示す図である。
NALユニットは、ヘッダとペイロードとから構成される。そのヘッダには、ペイロードに格納されるデータの種別を示すタイプ情報が格納されている。
図15Bは、MPEG2−TSにおけるNALユニットの格納フォーマットの例を示す図である。MPEG2−TSにおいては、NALユニットの境界を識別するために、スタートコードと呼ばれる固有のビット列が識別情報としてNALユニットに付加される(以降、このような識別情報の形式をスタートコード形式と呼ぶ)。復号装置などは、そのスタートコード、及び、NALユニットのヘッダに格納されているタイプ情報をサーチすることで、所望のNALユニットを分離することができる。
図15Cは、MP4におけるNALユニットの格納フォーマットの例を示す図である。MP4においては、NALユニットの境界を識別するために、NALユニットのデータサイズを識別情報として示すフィールドがNALユニットに付加される(以降、このような識別情報の形式をNALサイズ形式と呼ぶ)。ここで、データサイズを示すフィールドのフィールド長は、サンプルエントリ内におけるAVCDecoderConfigurationRecordの中に格納される。AVCDecoderConfigurationRecordは、復号時の初期化情報などが格納される領域である。復号装置などは、NALユニットのデータサイズに基づいて所望のNALユニットを分離することができる。
以上のように、MPEG2−TSとMP4とでは、NALユニットの境界を示す識別情報の形式が、スタートコード形式であるか、NALサイズ形式であるかという点についても異なる。したがって、トランスポートストリームをMP4ファイルへ変換する際には、NALユニットの境界を示す識別情報を変換する必要がある。なお、NALユニットの格納フォーマットは符号化方式毎に規定されるため、オーディオまたはビデオの符号化方式を参照して、MP4ファイルへの変換の動作を切替えればよい。
MP4ファイルに変換する際に、NALサイズ形式の符号化方式のデータを扱う場合には、NALユニットのデータサイズが必要となる。したがって、アクセスユニットを構成するNALユニットのデータサイズが予め取得できることが望ましい。こうすることで、スタートコード形式のアクセスユニットにおいてスタートコードをサーチし、NALユニット境界を検出することによって、NALユニットのデータサイズを決定する際の処理量を削減することができる。
つまり、本変形例におけるトランスポートストリームにおけるアクセスユニットの先頭には、そのアクセスユニットに含まれる各NALユニットのデータサイズを示すサイズ情報が格納されている。
図16Aは、本変形例に係るトランスポートストリームにおけるアクセスユニットの構成例を示す図である。この図16Aに示すように、トランスポートストリームに多重化されるアクセスユニットを構成する各NALユニットのデータサイズを示すサイズ情報が、アクセスユニットの先頭に格納されている。例えば、このサイズ情報は、新規に定義されたサイズ情報NALユニットに格納される。NALユニットのタイプには、プライベート用およびユーザーデータ用が存在する。そこで、これらの中からいずれかのタイプを選択し、その選択されたタイプのNALユニットをサイズ情報NALユニットとして使用する。サイズ情報については暗号化の必要がないため、このサイズ情報NALユニットは平文で格納される。
図16Bは、サイズ情報NALユニットに含まれるサイズ情報のシンタックスの一例を示す図である。サイズ情報は、number_of_naluおよびnal_sizeを含む。number_of_naluはアクセスユニットを構成するNALユニットの個数を示し、nal_sizeによって各NALユニットのデータサイズが示される。サイズ情報NALユニットはMP4ファイルには格納されないため、サイズ情報は、サイズ情報NALユニット自体のデータサイズを示さなくてもよい。なお、図16Aに示す例では、サイズ情報NALユニットは、Access Unit Delimiter(AUD)と呼ばれるアクセスユニットの先頭をシグナリングするためのNALユニットの前に配置されているが、AUDの直後に配置されてもよい。AUDの直後にサイズ情報NALユニットを配置する場合には、サイズ情報NALユニットのサイズ情報は、AUDの後の各NALユニットのサイズを示す。そのため、サイズ情報はAUDのデータサイズを示さない。しかし、AUDのデータサイズは固定であるため、ファイル生成装置100はそのデータサイズを予め記憶しておけばよい。また、AU_infoテーブルと同様に、サイズ情報をPESパケットのペイロードの先頭に配置してもよい。
図16Cは、サイズ情報NALユニットに含まれるサイズ情報のシンタックスの他の例を示す図である。
図16Aに示すように、トランスポートストリームにおけるNALユニットの前には、スタートコードに加えて、zero_byteなど可変長のコードが含まれることがある。したがって、図16Cに示すように、NALユニットのスタートコードを含む識別情報のデータサイズ(図16Cに示すprefix_size)をサイズ情報に格納してもよい。なお、識別情報のデータサイズが固定であれば、MPEG2−TSのデスクリプタ、またはMP4ファイルへの変換時の補助データに、その識別情報のデータサイズを格納してもよい。さらに、NALサイズ形式では、MP4ファイルへの変換後のNALユニットのデータサイズを示すフィールドのフィールド長も示してもよい。
また、識別情報をデータユニットとみなし、AU_infoテーブルによってNal_size_infoの内容を示してもよい。このとき、conversion_modeを多値とすることにより、データユニットを削除する、そのまま残す、の2つの動作に加えて、データユニットのデータ構造を変換するというモードを追加してもよい。さらに、AU_infoテーブルに、データユニットの種類を識別するための識別情報を追加してもよい。例えば、このような識別情報によって、MPEG−4 AVCまたはHEVCにおけるSPSのNALユニット、PPSのNALユニットあるいはスライスのNALユニットなど、NALユニットのタイプを判別することができる。あるいは、MPEG−4 AACのLATMヘッダまたはLATMペイロードなどを判別することなどが可能である。さらに、データユニットが暗号化されているかどうかを示すフィールドを別途設けてもよい。
conversion_modeが異なるデータユニットを、異なるTSパケットに格納してもよい。また、conversion_modeが2である場合に、ヘッダ情報としてサンプルエントリに格納されるデータユニットを平文としてTSパケットに格納しておいてもよい。
暗号化については、スライスデータのNALユニットのみを暗号化し、それ以外の部分は平文としてもよい。暗号化はTSパケット単位で行われるため、TSパケットのペイロードにおいて平文と暗号化部分とは混在できず、AUDなどはデータサイズが小さく、AUDを独立したパケットとして格納するとスタッフィングが増加して多重化効率が低下するためである。また、暗号化されたスライスのNALユニットデータの境界がTSパケットのペイロードの終端にアラインされない場合には、スタッフィングが必要となる。スタッフィングを行う場合には、TSパケットヘッダのadaptation_fieldを用いるか、符号化データに、Filler Data NALユニット、またはFiller Data用のSEIなどを挿入する方法がある。TSパケットヘッダのadaptation_fieldを用いる場合には、adaptation_fieldは平文にする必要があるが、可変長の領域に対して暗号化するか否かの処理を切替えることは負荷が高い。したがって、スタッフィングを行う際には、符号化データにおけるスタッフィング用のデータ構造を用いて、NALユニットデータの境界がTSパケットのペイロード終端にアラインさせることが望ましい。
また、TSパケットのAdaptation field、あるいは、アクセスユニット内に、ユーザーデータ格納用のSEI(User unregistered SEI)を挿入して、そのSEIにサイズ情報を格納してもよい。MP4ファイルに変換する際には、これらのいずれか1つ以上の方法により格納されたNALユニットのサイズ情報に基づいて、スタートコード形式をNALサイズ形式に変換することができる。また、サイズ情報が格納されているかどうかを示す情報を、MPEG2−TSにおけるデスクリプタなどを用いて格納してもよい。
図17は、本変形例に係るファイル生成装置100がMP4ファイルを生成する処理動作を示すフローチャートである。具体的には、このフローチャートは、図13Cに示すAU_infoテーブルを参照してトランスポートストリームをMP4ファイルに変化する処理動作の例を示す。
ファイル生成装置100の補助情報サーチ部101は、PESパケットのペイロードの先頭などに配置されるAU_infoテーブルをサーチする(ステップS101)。次に、補助情報解析部103は、そのサーチの結果に基づいて、AU_infoテーブルが存在するかどうかを判定する(ステップS102)。ここで、AU_infoテーブルが存在すると判定されると(ステップS102の「はい」)、補助情報解析部103は、AU_infoテーブルに含まれている、各データユニットのデータサイズと、その各データユニットの変換モードとを取得する(ステップS103)。一方、AU_infoテーブルが存在しないと判定されると(ステップS102の「いいえ」)、生成部104のサンプル生成部104aは、PESパケットから分離されたアクセスユニットをデータユニットとみなし、そのデータユニットをサンプルデータとしてコピーしてmdatに貼り付ける(ステップS105)。1アクセスユニットが1PESパケットに格納されている場合には、サンプル生成部104aは、PESパケットのペイロードを1アクセスユニット分のデータとみなして分離する。複数アクセスユニットが1PESパケットに格納されている場合、あるいは、アクセスユニットがフラグメント化されてPESパケットに格納されている場合には、サンプル生成部104aは、符号化データにおける各アクセスユニットの境界をサーチしてそれらのアクセスユニットを分離する。
ステップS103の後、補助情報解析部103は、変換モードが0であるか否かを判定する(ステップS104)。変換モードが0であると判定されると(ステップS104の「はい」)、サンプル生成部104aは、その変換モードに対応するデータユニットをサンプルデータとしてコピーしてmdatに貼り付ける(ステップS105)。一方、変換モードが0ではないと判定されると(ステップS104の「いいえ」)、補助情報解析部103は、その変換モードが1であるか否かを判定する(ステップS106)。ここで、変換モードが1であると判定されると(ステップS106の「はい」)、サンプル生成部104aは、その変換モードに対応するデータユニットのデータ構造を変換し、変換後のデータ構造を有するデータユニットをサンプルデータとしてmdatに格納する(ステップS107)。例えば、サンプル生成部104aは、NALユニット境界の識別情報の形式をスタートコード形式からNALサイズ形式に変換する。一方、変換モードが1ではなく2であると判定されると(ステップS106の「いいえ」)、サンプルエントリ生成部104bは、その変換モードに対応するデータユニットをmdatに格納することなく、データユニットの少なくとも一部のデータをサンプルエントリに格納する(ステップS108)。例えば、サンプルエントリ生成部104bは、MPEG−4 AVCにおけるSPSおよびPPSのそれぞれのNALユニットをサンプルエントリに格納する。あるいは、サンプルエントリ生成部104bは、MPEG−4 AACのLATMヘッダからAudioSpecificConfig()を分離してサンプルエントリに格納する。データユニットのデータのうち、サンプルエントリに格納される部分については、符号化方式に予め規定されるが、サンプルエントリへの格納部分を特定するための補助データをAU_infoテーブル内に示してもよい。
(変形例1−3)
上記実施の形態におけるコピーマニフェストファイルに記述される、ストリームファイルのコピー開始位置を示すアドレスは、ストリームファイルの先頭からの絶対値ではなくてもよい。例えば、コピー開始位置を示すアドレスは、直前のエントリのコピー開始位置を示すアドレスからの差分値であってもよい。
図7に示すストリームファイルAに含まれる2番目のエントリは、(コピー開始位置のアドレス,コピーサイズ)=(577,180)ではなく、(コピー開始位置のアドレス,コピーサイズ)=(367,180)のように記述される。また、コピー開始位置のアドレスとコピーサイズの記述方法としては、例えば以下の3通り(モード1〜3)が可能である。
モード1では、ストリームファイルと差分ファイルから交互にデータをコピーする。例えば、コピーされるデータの範囲は(コピー開始位置のアドレス,コピーサイズ)として記述され、各フィールドのビット長は例えば(int32,int8)である。
モード2では、コピーサイズが0である場合には、コピーをスキップする。同一ファイルから連続してデータをコピーできるため、モード1と比較してアドレスのデータ長を短くすることができる。例えば、コピーされるデータの範囲は、(コピー開始位置のアドレス,コピーサイズ)として記述され、各フィールドのビット長は例えば(int16,int8)である。
モード3では、モード2においてコピーサイズを明示的に示すのではなく、アドレスによって示されるTSパケットのペイロードの最終までのデータをコピーする。コピーサイズのフィールドは省略される。また、アドレスを指定する代わりに、ストリームファイルにおけるTSパケットのインデックス番号の差分値を用いてもよい。例えば、コピーされるデータの範囲は、(パケット番号、コピーモード)として記述され、各フィールドのビット長は例えば(int7,int1)である。コピーモードは、コピーをスキップするかどうかを示す。
図18は、モード2を使用した場合のアドレス指定の具体例を示す図である。
図18に示すように、コピー開始位置である開始位置1と開始位置2はそれぞれ210バイト目と91428バイト目である。アドレスの差分値のフィールド長を16bitとすると、フィールド長の最大値は65535であるため、そのアドレスの差分値を1つのエントリでは表現できない。そこで、開始位置1から開始位置2までジャンプする場合には、(65535,0)と(25683,180)の2つのエントリを用いる。こうすることで、開始位置2までジャンプしてから180バイトのデータを取得することができる。
図19は、コピーサイズの上限値を超える連続領域を読み出す例を示す図である。
この場合は、(255),(0,0),(182)のように記述することで、差分ファイルにおける領域1と領域2を連続的にコピーすることができる。
なお、コピー開始位置を示すアドレスまたはコピーサイズは、1バイト単位ではなく、4バイト単位で記述してもよい。また、各エントリにおいて、差分ファイルとストリームファイルとのどちらのファイルからコピーするかを示す識別情報を別途設けることで、両ファイルのエントリを交互に記述するのではなく、一方のファイルに対するエントリを連続して記述できるようにしてもよい。
ここまでは、MPEG2−TSのファイルからデータをコピーしてMP4ファイルを生成する処理を説明したが、TSパケットに多重化されたPESパケットのペイロードから分離されたエレメンタリーストリームに基づいてデータをコピーしてもよい。
図20は、エレメンタリーストリームからデータをコピーしてMP4ファイルを生成する処理を説明するための図である。
MPEG2−TSのファイルでは、188バイト、あるいは、BD(Blu−ray(登録商標)ディスク)などにおいて用いられるタイムスタンプ付TSの192バイトのパケット毎に、コピー情報が必要になる。したがって、ビットレートが高いコンテンツでは、TSパケットの数が増大し、コピーマニフェストファイルのサイズが増加する。そこで、MPEG2−TSのファイルから分離されたエレメンタリーストリームを用いることにより、フレーム単位、あるいは、HEVCまたはAVCにおけるNALユニットなどの単位で、データのコピーが可能となる。その結果、コピーマニフェストファイルの“COPY MANIFEST”に含まれるエントリ数を大幅に削減することができる。例えば、ビデオを多重化したMPEG2−TSのファイルのサイズが10GBであり、TSパケットのサイズが192バイトである場合、パケット数は55924053個となり、同数のエントリが必要となる。一方で、このビデオの再生時間長が2時間で、フレームレートが30Hzであれば、フレームの総数は216000枚となる。したがって、フレームごとにエントリを生成する場合には、パケットごとにエントリを生成する場合に比べてエントリ数を大幅に低減できる。また、MPEG2−TSのファイルがAACS(Advanced Access Content System)とBD+によって2重に暗号化されており、BD+によってデータがインタリーブして再配置されるようなケースがある。このようなケースにおいても、暗号化を解いて符号化ストリームを分離した後であれば符号化ストリームを構成するデータの順序は一意に決定できるため、本手法によるコピー動作が可能である。
エレメンタリーストリームからデータをコピーする場合、エレメンタリーストリームは複数存在するため、それらの識別情報が必要となる。“COPY MANIFEST”では、上述のモード1またはモード2に対応して以下のような記述が可能である。ここで、コピー開始位置のアドレスは、直前のエントリからの差分値によって示される。
モード1では、エントリは(ファイルID,コピー開始位置のアドレス,コピーサイズ)から構成される。各フィールドのビット長は例えば(int4,1バイト単位でint22,int22)である。ファイルIDは、コピーされるデータを含むファイルの識別情報であり、例えば、ファイルIDとして0が差分ファイルに割り当てられ、1以上の値がエレメンタリーストリームのファイルに割り当てられる。解像度が4KのHEVCまたはAVCの符号化データにおいては、Minimum Compression Ratioを4とすると1フレームの最大サイズは約4Mバイトである。符号化ストリームからデータをコピーする場合、コピー開始位置のアドレスの差分値の最大値は1フレームの最大サイズとしてもよく、4Mバイトは22ビットで表現できる。このとき、コピーサイズとしても1フレームの最大サイズを表現するために22ビットとしている。
モード2では、エントリは(ファイルID、コピー開始位置のアドレス、コピーサイズ)から構成される。各フィールドのビット長は例えば(int4、1バイト単位でint12、int16)である。なお、AVCまたはHEVCでは、NALユニットのヘッダをスタートコード形式からNALサイズ形式に変換する必要があり、NALユニットのペイロード単位でデータをコピーする必要がある。そのため、コピー開始位置のアドレスのフィールドが設けられているが、TS内のエレメンタリーストリームをそのままコピーできる場合には、コピー開始位置のアドレスのフィールドを省略してもよい。あるいは、1つのエントリがNALユニット全体を示すこととし、コピー後にNALユニットのヘッダをNALサイズ形式に変換してもよい。このときも、データを連続的に読み出すことができるため、コピー開始位置のアドレスは不要である。
(実施の形態2)
BD−ROM規格では、複数のMPEG2−TSのファイルをプレイリストから参照して連続的に再生することができ、ファイルの境界におけるストリームの制約条件なども規定されている。例えば、複数のファイルあるいは再生区間がシームレスに接続される場合には、接続対象となる2本のオーディオの再生区間をオーバーラップさせてもよい。
MP4においても、プレイリストを用いて連続再生される複数のMP4ファイルを指定することは可能であり、また、同様の制約条件を加えることが想定される。
図21は、連続して再生される2つのMP4ファイルにおけるオーディオとビデオの再生区間の例を示す図である。この図21に示すように、オーディオの再生区間はオーバーラップする。しかしながら、MP4におけるDTS(Decode TimeStamp)またはPTSは、ファイル内の先頭サンプルのDTSを基準(=0)とした相対時刻によって表現され、絶対時刻で表現できない。したがって、再生区間が互いにオーバーラップする2つのMP4ファイル(XXX1.MP4とXXX2.MP4)を連続して再生すると、XXX1.MP4の最終サンプルの直後にXXX2.MP4の先頭サンプルが再生される。その結果として、それぞれのオーバーラップ部分が連続して再生されることになる。
そのため、本実施の形態では、XXX1.MP4とXXX2.MP4の再生区間がオーバーラップしているかどうか、あるいは、オーバーラップしている再生区間を示す情報をプレイリスト、あるいは、MP4ファイル内に格納する。図21に示す例では、プレイリスト内のプレイアイテムが参照するMP4ファイルにおけるオーディオとビデオのそれぞれの先頭サンプルのPTSと最終サンプルの再生終了時刻とが記述される。また、MP4ファイルのmoov内に、MP4ファイルの先頭サンプルのDTSまたはPTSの絶対時刻を格納してもよい。あるいは、moofまたはtrafに、Movie fragmentの先頭サンプルまたはMovie fragment内のトラック毎の先頭サンプルの、DTSまたはPTSの絶対時刻を格納してもよい。
例えば、XXX1.MP4とXXX2.MP4において、ビデオの再生区間はオーバーラップもギャップも無く、PTSが連続することが保証される。この場合、オーディオあるいはテキストについてのみ、オーバーラップに関する情報を示せばよい。XXX2.MP4のビデオの先頭サンプルのPTSをT0とすると、XXX2.MP4におけるオーディオの先頭サンプルのPTSとT0とのオフセット値、あるいは、XXX1.MP4のオーディオの最終サンプルの再生終了時刻とT0とのオフセット値を格納してもよい。また、XXX1.MP4の最終オーディオサンプルの再生終了時刻とXXX2.MP4の先頭サンプルのPTSとのオフセット値をXXX2.MP4に格納してもよい。再生装置は、オーバーラップに関するこれらの情報に基づいて、出力するオーディオサンプルの選択や合成などを行う。なお、ビデオの再生区間をオーバーラップさせてもよいし、オーディオまたはビデオの再生区間をオーバーラップさせるのではなく、ギャップを設けてもよい。
図21に示す例では、プレイリストを用いて複数のファイルが連続再生されるが、本実施の形態では、連続して再生される再生区間を統合して1つのMP4ファイルを生成してもよい。
図22Aは、再生区間を統合して1つのMP4ファイルを生成する方法を説明するための図である。
本実施の形態では、図22Aに示すように、例えば再生区間1と再生区間2を統合してXXX3.MP4を生成する。再生区間1のオーディオは、例えば、サンプル1−1からサンプル1−100までの100個のサンプルから構成される。再生区間2のオーディオは、例えば、サンプル2−1からサンプル2−100までの100個のサンプルから構成される。以下、オーディオを例に説明する。
まず、再生区間1と再生区間2のそれぞれの再生区間にオーバーラップもギャップも存在しなければ、XXX3.MP4のオーディオトラックには、サンプル1−1からサンプル1−100に続いて、サンプル2−1からサンプル2−100が格納され、再生時には、各サンプルが順に再生される。次に、サンプル1−100とサンプル2−1の再生区間がオーバーラップする場合について説明する。サンプル1−100とサンプル2−1の再生区間(開始時刻:PTS、終了時刻:PTS+再生時間長)が同一である場合には、サンプル2−1を削除してXXX3.MP4のオーディオトラックを構成する。これにより、サンプル間のオーバーラップは解消される。これは、再生区間1に含まれる複数のサンプルの再生区間と、再生区間2に含まれる複数のサンプルの再生区間とがオーバーラップする場合も同様である。
一方、サンプル1−100とサンプル2−1の再生区間がオーバーラップし、かつ、それぞれのサンプルの再生区間が同一ではない場合には、サンプルの削除によっては対応できない。
そこで、オーバーラップがある場合、XXX3.MP4のオーディオトラックにはサンプル1−100とサンプル2−1を共に格納した上で、オーバーラップした再生区間を示す情報を格納する。オーバーラップしている再生区間の時間長をΔTとする。この場合、例えば、再生区間1の最終サンプルと再生区間2の先頭サンプルが互いに異なるムービーフラグメントとされ、ΔTをmoofのtraf内などに格納する。このΔTは、再生区間2に含まれるムービーフラグメントにおけるオーディオトラックの先頭からΔTの再生区間が、直前のムービーフラグメントのオーディオトラックの再生区間とオーバーラップすることを示す。
ギャップが存在する場合には、MP4におけるエディットリストの機能または、ムービーフラグメントにおけるduration−is−empty flagのセットなどによって、ギャップ区間に対応する無再生区間を生成する。
また、オーバーラップ区間(オーバーラップしている再生区間)またはギャップ区間(ギャップが存在する区間)を、MP4ヘッダにおけるメタデータまたは外部ファイルに示してもよい。なお、オーバーラップ区間を含むMP4よりも、ギャップ区間を含むMP4のほうが、従来のMP4との親和性が高い。したがって、互いにオーバーラップ区間を含む再生区間を統合してMP4ファイルを生成する際には、例えば、図22Aの再生区間2において、オーバーラップ区間の少なくとも一部を含むサンプルを削除する。その上で、ギャップが発生した場合には、無再生区間を生成する。この方法は、オーディオだけでなく、ビデオや字幕などに対しても適用できる。また、削除が必要であるかどうか、及び、削除が必要なサンプル、削除した結果発生するギャップの時間長などを示す情報を、コピーマニフェストなどの補助情報として格納してもよい。
このようなMP4ファイルを再生する再生装置は、MP4ファイル内に含まれるオーバーラップ区間などの情報に基づいて、そのオーバーラップ区間のオーディオデータを再生する。つまり、再生装置は、再生対象のオーディオデータがオーバーラップ区間のデータであれば、例えば、オーバーラップしているそれぞれの再生区間のデータを含むオーディオサンプルの復号結果を合成する。そして、再生装置は、その合成された復号結果を出力する。また、連続して再生される再生区間を統合する際には、統合対象の再生区間においてオーバーラップ区間やギャップ区間が存在するかどうかを識別する必要がある。そこで、オーバーラップ区間などの有無、及び、その時間長を示す情報を、補助情報として光ディスク内、あるいは、インターネットなどから取得してもよい。
図22Bは、本実施の形態におけるファイル生成装置のブロック図である。
本実施の形態におけるファイル生成装置20は、MP4ファイルを生成するファイル生成装置であって、統合部21および格納部22を備えている。統合部21は、2つのストリームが連続して再生されるようにその2つのストリームを統合することによって1つのMP4ファイルを生成する。格納部22は、その2つのストリームのそれぞれにおいて再生のタイミングがオーバーラップする区間を示す情報を、生成されたMP4ファイルに格納する。例えば、上述の2つのストリームは、図22Aに示す再生区間1および再生区間2であって、生成されるMP4ファイルは、図22Aに示す“XXX3.MP4”のファイルである。さらに、2つのストリームのそれぞれにおいて再生のタイミングがオーバーラップする区間は、例えば、図22Aに示すΔTの区間である。
図22Cは、本実施の形態におけるファイル生成方法のフローチャートである。
本実施の形態におけるファイル生成方法は、MP4ファイルを生成するファイル生成方法であって、ステップS21およびステップS22を含む。ステップS21では、2つのストリームが連続して再生されるようにその2つのストリームを統合することによって1つのMP4ファイルを生成する。次に、ステップS21では、その2つのストリームのそれぞれにおいて再生のタイミングがオーバーラップする区間を示す情報を、生成されたMP4ファイルに格納する。ここで、ステップS21では、それぞれMP4のファイルフォーマットで構成されている元ファイルの少なくとも一部である2つのストリームを統合する。また、ステップS21では、それぞれオーディオのデータを含む2つのストリームを統合する。
これにより、本実施の形態では、MP4ファイルには、オーバーラップの区間を示す情報が格納されている。したがって、そのMP4ファイルを再生する再生装置は、その情報を用いて、MP4ファイルから、オーバーラップの区間のデータを容易に特定することができる。その結果、再生装置は、そのオーバーラップの区間のデータを合成するなどによってそのデータを適切に再生することができる。つまり、オーバーラップの再生に適したMP4ファイルを生成することができる。
また、ステップS21では、2つのストリームのうちの何れか一方のストリームに含まれる複数のサンプルにわたって上述の区間が存在する場合、その複数のサンプルのうちの少なくとも1つを削除した後に、2つのストリームを統合する。これにより、サンプルが削除されるため、オーバーラップの区間を短くすることができる。その結果、オーバーラップの区間に対する再生装置による特別な処理の負担を軽減することができる。
また、ステップS22では、上述の区間の時間長を示す時間情報を上述の情報としてMP4ファイルに格納する。つまり、上述のΔTを示す時間情報をMP4ファイルに格納する。これにより、MP4ファイルを再生する再生装置は、その情報を用いて、オーバーラップの区間の時間長を容易に特定することができる。その結果、再生装置は、そのオーバーラップの区間のデータを合成するなどによって、特定された時間長内でそのデータを適切に再生することができる。
また、ステップS22では、MP4ファイルにおけるmoof内のtrafにその時間情報を格納する。これにより、再生装置は、格納されている時間情報を適切に取得することができる。
また、本実施の形態におけるファイル生成方法では、上述の情報を保持している装置から、インターネットなどの通信ネットワークを介してその情報を取得してもよい。あるいは、上述の情報を記録している光ディスクからその情報を取得してもよい。これにより、わざわざオーバーラップの区間を示す情報を生成することなく、MP4ファイルにその情報を簡単に格納することができる。
図22Dは、本実施の形態における再生装置のブロック図である。
本実施の形態における再生装置30は、MP4ファイルを再生する再生装置であって、抽出部31および合成部32を備えている。抽出部31は、再生対象のコンテンツ(例えばオーディオトラック)において再生のタイミングがオーバーラップする2つの区間を示す情報をMP4ファイルから抽出する。合成部32は、抽出された情報に基づいてそのコンテンツにおける2つの区間を特定し、その2つの区間のそれぞれのデータに対する復号結果を合成して出力する。
図22Eは、本実施の形態における再生方法のフローチャートである。
本実施の形態における再生方法は、MP4ファイルを再生する再生方法であって、ステップS31およびステップS32を含む。ステップS31では、再生対象のコンテンツ(例えばオーディオトラック)において再生のタイミングがオーバーラップする2つの区間を示す情報をMP4ファイルから抽出する。次に、ステップS32では、抽出された情報に基づいてそのコンテンツにおける2つの区間を特定し、その2つの区間のそれぞれのデータに対する復号結果を合成して出力する。
これにより、再生装置は、MP4ファイルから、オーバーラップの区間のデータを容易に特定することができる。その結果、再生装置は、そのオーバーラップの区間のデータを適切に再生することができる。
また、本実施の形態における記録媒体は、MP4ファイルを記録している記録媒体である。そのMP4ファイルは、コンピュータに読み出されて再生されるコンテンツ(例えばオーディオトラック)と、そのコンテンツにおいて再生のタイミングがオーバーラップする2つの区間を示す情報とを含む。これにより、記録媒体からそのMP4ファイルを読み出して再生する再生装置は、その情報を用いて、MP4ファイルから上述の2つの区間のデータを容易に特定することができる。その結果、再生装置は、それらの区間のデータを合成するなどによってそのデータを適切に再生することができる。
(実施の形態3)
図23Aは、光ディスクに格納されたコンテンツからMP4ファイルを生成する場合のメニュー画面の一例を示す図である。図23Bは、光ディスクおよびネットワークを利用したMP4ファイルの生成方法を説明するための図である。
光ディスク内には、複数言語のオーディオや字幕が格納されており、MP4ファイルの生成時には、MP4ファイルに格納する言語を選択することができる。本例においては、ディスク内に格納される日本語、英語、スペイン語、および中国語から、オーディオ、字幕のそれぞれに対して、日本語と英語とが選択されている。ここで、オーディオあるいは字幕におけるサンプルのサイズが言語毎に異なると、コピーマニフェストファイルの内容はサンプルのサイズに依存する。このため、オーディオまたは字幕における選択言語の組合せに比例してコピーマニフェストファイルの種類が増加する。したがって、MP4ファイルには、常に全言語のオーディオと字幕のデータを格納して、ユーザーが選択した言語を示す情報をさらに格納しておき、再生時には、ユーザーの所望の言語を選択可能としてもよい。こうすることで、コピーマニフェストファイルは選択言語に依らず同一にすることができる。あるいは、各言語の1つだけを格納するケース、及び、全言語を格納するケースの2つのケースに対応するコピーマニフェストファイルを用意しておいてもよい。また、MP4ファイルを再生する機器におけるサポートの有無などに応じて、AACまたはAC3などのオーディオの符号化方式を選択できるようにしてもよい。あるいは、全ての符号化方式のオーディオデータをMP4ファイルに格納してもよい。全ての符号化方式のオーディオデータを格納する場合、再生時には、ユーザーの選択操作、あるいは、再生装置のプリセット情報などに基づいて、符号化方式が選択される。
あるいは、MP4ファイルの生成時には言語の選択を行わずに、全ての言語のオーディオと字幕を格納しておき、再生時にユーザーが選択してもよい。また、図23Bに示すように、コピーマニフェストファイルをネットワーク経由で取得できるようにしておけば、コピーマニフェストファイルを光ディスクに格納する必要がない。特に、任意の言語を選択可能とするなどのために、コピーマニフェストファイルの個数が増加する場合において、ネットワーク経由での取得は有効である。デフォルトの言語組合せに対応するコピーマニフェストファイルのみ光ディスクに格納しておき、その他の組合せに対応するコピーマニフェストファイルはサーバからダウンロードしてもよい。また、光ディスク、あるいは、ネットワークから取得可能な言語のオーディオまたは字幕と、MP4ファイル内に含まれるオーディオまたは字幕の言語とを、それぞれ取得しておき、MP4ファイル内に含まれない言語のうち、外部から取得可能な言語をユーザーが選択して取得してもよい。
あるいは、外部から取得可能なオーディオのリストをMP4ファイル内などに格納しておく。そして、MP4ファイルの再生時に、再生装置がMP4ファイル内のオーディオの符号化方式を復号できない場合には、再生装置がサポートする符号化方式のオーディオを選択して、外部から取得してもよい。このとき、外部から取得するデータは、字幕またはオーディオのみを含む符号化データ、あるいは、MP4ファイルであってもよい。このとき、再生時には元々のMP4ファイルに含まれるビデオなどと、新規に取得したデータとを同期再生する。または、ビデオ、オーディオ、および字幕を全て含む完全なMP4ファイルを外部から取得してもよい。
また、光ディスクに格納されるコンテンツがMPEG2−TSのファイルではなく、MP4ファイルであってもよい。この場合には、変換処理を行わずに、光ディスク内に格納されたMP4ファイルのデータを、デバイスバインドあるいはメディアバインドされた記録媒体または機器に対して、そのままコピー、あるいは、エクスポートしてもよい。コピーあるいはエクスポート時には、コンテンツを暗号化する鍵を変更してもよい。BDプレーヤなどのMP4ファイルを生成する機器では、光ディスク内のコンテンツがMPEG2ーTS形式あるいはMP4形式のどちらであるかを、データ形式の識別情報などに基づいて判断することによって、MP4ファイルに変換する必要があるかどうかを判定して、MP4ファイルを生成してもよい。あるいは、コピーマニフェストファイルなどの補助情報において、MP4への変換が必要であるかどうかを示す情報を示してもよい。また、光ディスクに格納されるコンテンツがMP4形式であっても、コンテンツ内の特定言語のオーディオまたは字幕、あるいは、劇場公開版またはディレクターズカット版などの種別をユーザーが選択してもよい。そして、選択結果に基づいて光ディスク内のMP4ファイルから選択されたデータのみを抽出してMP4ファイルを生成してもよい。
ここで、図7を用いて説明したように、出力されるMP4ファイルの多重化単位を特定するための情報をコピーマニフェストファイルに示すことによっても、ファイルサイズを削減でき、コピーマニフェストファイルの個数が多い場合には有効である。このとき、コピーマニフェストに示される情報としては、MP4ファイルにおけるムービーフラグメントの単位を一意に決定でき、かつ、言語に依存しない情報を用いることができる。その情報は、例えば、ムービーフラグメントの先頭となるサンプルのPTSあるいはDTS、または、サンプルデータが取得されるMPEG2−TSのファイルの識別情報などである。ここで、MP4ファイルのサンプルのサイズが異なると、MP4ファイルのヘッダ情報のうち、moov内のstbl内に含まれるBox、またはmoof内のtrunなどの内容が異なる。このため、異なる言語に対して共通に用いることができるコピーマニフェストファイルにおいては、MP4ファイルのヘッダ情報を含めることができない。したがって、MP4ファイルに変換する際には、コピーマニフェストファイルに基づいてムービーフラグメントの単位を決定すると共に、MP4ファイルのヘッダ情報を、サンプル毎のPTSあるいはDTS、または、サンプルのサイズなどに基づいて生成する。
サンプル毎のPTS、DTSまたはサイズを取得する際には、MPEG2−TSに多重化された、あるいは、多重化されずに別領域に格納されたオーディオ、ビデオまたは字幕などのデータから、アクセスユニットの境界をサーチする必要がある。または、PESパケットヘッダを解析するなどの処理が必要となる。これらの必要とされる処理負荷は、ビットレートの高いビデオに対しては高い。従って、少なくともビデオに対しては、アクセスユニット(MP4ファイルのサンプルに相当)を構成するNALユニットのサイズ、及び、PTSまたはDTSを示す情報をコピーマニフェストに格納してもよい。
図24は、NALユニットのサイズ、PTSおよびDTSを示すコピーマニフェストの一例を示す図である。
コピーマニフェストには、アクセスユニットごとに、そのアクセスユニットを構成する各NALユニットのサイズ、PTSおよびDTSを示す情報が格納されている。これらの情報により、ビデオストリームをサーチする処理を大幅に低減することができる。さらに、サイズ情報を用いて、MPEG2−TSのスタートコード形式をMP4のNALサイズ形式に変換できるという利点もある。サイズ情報は、スタートコード部分のサイズとNALユニット部分のサイズとを別々に示してもよい。NALユニットのサイズを示すフィールドのバイト長とNALサイズ形式におけるサイズ部分のバイト長とを同一としてもよい。これにより、スタートコード部分のデータをNALユニット部分のサイズを示すデータで置き換えることにより、NALサイズ形式に変換できる。なお、このスタートコードは、図15Bに示す識別情報に相当し、zero_byteを含む。
また、スタートコード部分のサイズが全て同一である場合には、デフォルト値のみを設定してもよい。また、PTSまたはDTSは、MPEG2−TSのPESヘッダにおけるPTSまたはDTSの値で表現されるのではなく、MP4のヘッダにおいて使用されるデータ形式で表現されてもよい。例えば、DTSについては、復号順で連続する2つのサンプルのDTSの差分値を示し、PTSについては、DTSとPTSの差分値を示すことができる。これらの情報のタイムスケールを、MP4におけるタイムスケールに変換しておいてもよい。さらに、先頭サンプルのPTSまたはDTSの絶対値を示す情報を格納しておいてもよい。また、MP4ファイルへの変換時に削除するNALユニットを識別するための情報を追加してもよい。また、AACの符号化ストリームに対して同様の補助情報を格納する場合には、ADTSやLATMなどのヘッダ情報はサンプルデータから削除される。しかし、これらヘッダ情報のサイズが固定であれば、ヘッダ情報とペイロードデータのサイズの合計値、および、ペイロードデータのサイズのうちのいずれか一方のみを示してもよい。また、オーディオの場合は、固定フレームレートとなるため、DTS情報はデフォルト値のみ示してもよい。
なお、オーディオの符号化方式が異なると、サンプル毎の再生時間長も異なることがある。結果として、サンプル毎のPTSまたはDTSも異なるため、オーディオの符号化方式毎にコピーマニフェストファイルを用意してもよい。
ここで、MP4ファイルに字幕データを格納する場合には、字幕データをファイルの末尾にまとめて格納してもよい。
図25は、MP4ファイルの末尾に格納されている字幕データの一例を示す図である。
この場合、字幕データの言語を変更しても、AV(Advanced Video)データのムービーフラグメントは同一である。一方で、ビデオまたはオーディオのムービーフラグメントと字幕のムービーフラグメントとをインタリーブして格納すると、moofの内容を変更する必要がある。これは、字幕データのサイズが変化するとAVデータのムービーフラグメントの位置が変化するためである。また、字幕データはAVデータと比較してサイズが小さい。したがって、コンテンツ全体の字幕データ、あるいは、コンテンツを分割したチャプターなどの単位に含まれる字幕データを、一括してメモリに展開して再生することも可能である。この時、ファイルの末尾にまとめて字幕データが格納されていると、その字幕データを取得し易いという利点もある。
ここで字幕データは、テキストフォントに基づくものであってもよいし、PNG(Portable Network Graphics)形式などの画像データであってもよい。画像データの場合にはテキスト形式よりもデータサイズが大きくなるため、チャプターなどの単位毎にtrunを生成して、所定の単位に含まれる字幕データへのアクセス性を高めるなどしてもよい。あるいは、再生時にテキストデータを保持するバッファサイズに応じて、trunを構成する字幕データのサイズがバッファサイズ以下となるようにtrunを生成してもよい。
さらに、複数言語の字幕データを格納する際には、各言語を異なるムービーフラグメントに格納することで、特定言語の字幕データを容易に取得できる。このとき、ムービーフラグメントに格納される言語を特定するための情報が必要である。そこで、例えば、各言語を異なるトラックとして扱い、トラックのIDと言語とを対応付けてもよい。トラックのIDは、traf内のBoxにより示される。なお、トラックのIDと言語を対応付ける情報は、MP4におけるメタデータ格納用のBoxなどに格納してもよいし、MP4ファイルとは異なる管理情報としてもよい。また、言語とムービーフラグメントとの対応付けは、オーディオに対しても適用できる。
ビデオ、オーディオあるいは字幕におけるランダムアクセス可能なサンプルは、mfraによって示される。ここで、互いに連続するビデオとオーディオのムービーフラグメントの再生区間が整合する場合には、ビデオのランダムアクセスポイントのみを示せばよい。この場合、PTSが同一、直前または直後となるオーディオのサンプルを、直後のムービーフラグメントから取得することができる。例えば、図25において、ビデオ(V−1)の先頭サンプルと、オーディオ(A−1)の先頭サンプルのPTSが整合する。一方、テキストをファイル末尾に格納する場合には、テキストに対しては独立にランダムアクセスポイントを示す必要がある。
また、光ディスクのコンテンツにおける全ての言語のオーディオまたは字幕のデータがMP4ファイルに格納される。ここで、MP4ファイルの生成時にユーザーが所望の言語を選択している場合には、選択された言語に対応するトラックについてのみ、mfraにおいてランダムアクセスポイントを示してもよい。
ここで、光ディスクに格納されるコンテンツでは、ビデオとグラフィックスの解像度が異なることが想定される。例えば、ビデオの解像度は4Kであり、字幕などのグラフィックスの解像度は処理量を抑えるために2Kとされる。
図26は、2Kの解像度の字幕を4Kにスケーリングして表示するケースを示す図である。字幕の表示にあたっては、字幕データ及びその解像度と共に、字幕の表示領域を指定するための情報が必要である。表示領域は、例えば、矩形の表示領域のサイズ及び表示位置を用いて指定される。例えば、トラックの解像度を示す情報は、字幕のトラックが2Kであり、ビデオのトラックが4Kであることを示すことができる。また、SMPTE(Society of Motion Picture and Television Engineers)またはW3C(World Wide Web Consortium)のTimed Textなどでは、Timed Textを構成するXML(extensible markup language)データの一部として表示領域の情報を記述してもよいし、MP4ファイル内のメタデータを示すBoxに格納してもよい。
MP4ファイルを再生する際には、ビデオと字幕の解像度を取得して、両者の解像度が異なる場合には、ビデオの解像度と一致するように字幕をスケーリングして表示する。このとき、字幕が画像データであれば、画像データを拡大するなどし、テキストデータであれば、ビデオの解像度と整合するサイズを選択する。表示領域についても、スケーリングの係数などに応じて計算して決定する。なお、ビデオの解像度に合わせてスケーリングした後の表示領域を示す情報を格納してもよい。
(実施の形態4)
MP4ファイルを生成する際には、光ディスクに格納されたコンテンツからオーディオ、ビデオ、字幕などのデータを取得して、1つのMP4ファイルに多重化する、あるいは、DMP形式として複数のMP4ファイルを生成することができる。例えば、光ディスクに格納されたM2TSデータからビデオのエレメンタリーストリームを分離して、ビデオのMP4を生成する。また、オーディオ及び字幕については、M2TSとは別途格納されたオーディオ及び字幕を含むMP4ファイルを取得する。そして、これらの生成したビデオのMP4ファイルと取得したオーディオ及び字幕を含むMP4ファイルとをまとめてDMP形式とすることができる。このとき、オーディオ及び字幕のMP4ファイルは、オーディオ及び字幕のそれぞれが独立したファイルであってもよいし、両者が多重化されたものであってもよい。言語が複数存在する場合には、複数の言語毎にオーディオ及び字幕を同一のMP4ファイルに多重化しておくなども可能である。エクスポート時には、エクスポート用のプレイリストを参照してエクスポート対象を決定する。エクスポート用のプレイリストは予めディスク内に格納しておいてもよいし、ネットワーク経由でダウンロードしてもよい。
図27は、エクスポート用データの格納方法について示す図である。図28Aは、エクスポート用のプレイリストの例について示す図である。図28Bは、コピーマニフェストファイルの例について示す図である。ここでは、AVが多重化された2つのM2TSファイル(XXX1.M2TS及びXXX2.M2TS)、及び、エクスポート用のオーディオが多重化されたMP4ファイル(YYY1.MP4)がディスク内に格納されている。図示していないが、字幕についても、オーディオと同様に扱うことが可能である。
プレイリスト例1は、2つのプレイアイテムから構成されており、それぞれのプレイアイテムでは、ビデオはXXX1.M2TSとXXX2.M2TSとから、オーディオはYYY1.MP4とYYY2.MP4とからそれぞれ取得することが示される。YYY1.MP4とYYY2.MP4ファイルとについては、start_adrにより、ファイルの先頭位置をディスク内の論理アドレスにより示すことができる。なお、論理アドレスを明示的に示さずに、ファイル名のみにより識別してもよい。また、out_muxにより、当該データがM2TS内に多重化されているか、あるいは、M2TSとは別ファイルとして格納されているかを示してもよい。さらに、オーディオのデータが格納されるMP4のトラックとTrackIDにより示しているが、DMPのように、MP4ファイルが単一のトラックから構成される(以降、シングルトラックMP4と呼ぶ)場合には、TrackIDフィールドを省略してもよい。シングルトラックMP4においては、ファイル名に基づいて、オーディオ、ビデオ、字幕などファイル内に格納されるメディアの種別を識別できるようにしてもよいし、さらには、言語や符号化方式を示してもよい。符号化方式については、符号化方式そのものを示すのではなく、オーディオの場合であれば、音質が区別できるようにしてもよい。例えば、ロスレス圧縮されたオーディオは高音質、MPEG−2やMPEG−4のAACで圧縮されたオーディオは中音質とするなどである。
プレイリスト例2は、オーディオはMP4ファイルにより格納されるが、プレイアイテム1とプレイアイテム2により示されるビデオが、YYY.MP4における連続した再生区間として提供されるケースを示す。プレイリスト例3も、プレイリスト例2と同様の例であるが、YYY.MP4がシングルトラックMP4であり、TrackIDフィールドを省略している。
プレイリスト例1からプレイリスト例3に示したようなエクスポート用のプレイリストは、ディスク内のコンテンツを再生する際に使用されるプレイリストと、ファイル名などにより区別できるようにしてもよい。また、エクスポート用のプレイリストと、ディスク内コンテンツ再生用のプレイリストとを、ファイルシステムにおける異なるディレクトリに格納してもよい。
さらに、エクスポートされるMP4においては、PinP(Picture in Picture)、マルチアングル、3D、あるいは、サブパス、ブラウザブル・スライドショーなどを禁止してもよいが、機能制限が課されるかどうかをファイル名、あるいは、エクスポート用のプレイリストを管理するメタデータなどにより示してもよい。エクスポート用のプレイリストにおいて、使用が禁止されている機能が含まれる場合には、プレイリストが不正であると判定し、エクスポート用のMP4を生成しないなどのエラー処理を行ってもよい。
また、エクスポート用のプレイリストは、ネットワーク経由でダウンロードして取得してもよいし、エクスポート用のプレイリストに参照されるM2TSやMP4のデータをネットワーク経由でダウンロードしてもよい。M2TSやMP4をネットワーク経由でダウンロードする場合には、ダウンロード先のIPアドレスやURLなどを別途プレイリスト内に示してもよい。あるいは、エクスポート時に使用されるコンテンツがサーバの同一ディレクトリにまとめて格納される場合には、エクスポート用プレイリストに関するメタデータにおいて当該ディレクトリのURLを示し、プレイリスト内にはファイル名のみ記述してもよい。コンテンツを取得する際には、メタデータにより示されるURLとファイル名とを連結して完全なURLを構成したうえで、ファイルをダウンロードする。
コピーマニフェストファイルは、2つのM2TSファイル(XXX1.M2TS及びXXX2.M2TS)のそれぞれに対応するエレメンタリーストリームの復号または表示の時刻を示す時刻情報と、当該エレメンタリーストリームの位置情報とが関連付けられた情報を含む。この関連付けられた情報は、図24で説明したコピーマニフェストファイルと同様である。
図29Aは、複数のバージョンの本編コンテンツが格納されている場合のファイル生成方法の一例について説明するための図である。図29Bは、ディレクターズカット版の再生経路におけるMP4ファイルを生成する場合のコピーマニフェストファイルを示す図である。
BDなどの光ディスクでは、ディレクターズカット版、劇場公開版など、複数のバージョンの本編コンテンツが格納されることがある。例えば、図29Aにおいて、ディレクターズカット版では再生区間(1)、(2)、(4)の順に再生され、劇場公開版では再生区間(1)、(3)、(4)の順に再生される。エクスポート用のオーディオはシングルトラックMP4として格納されるものとする。
図29Bに示すように、ディレクターズカット版の再生経路が選択された場合のコピーマニフェストファイルには、“Input File A”によって示されるファイルの各部分の範囲と、“Input File B”によって示されるファイルの各部分の範囲と、“Input File C”によって示されるファイルの各部分の範囲とが示されており、各ファイルの部分の範囲に対して、“Output File”、“Output File Size”、および“ATTRIBUTE”で示されるMP4ファイルへの変換を繰り返し行う。
エクスポートする際には、ビデオは3つのM2TSから分離したエレメンタリーストリームを連結することで、MP4ファイルを生成するが、オーディオのエレメンタリーストリームは予め1つのMP4ファイルに格納される。つまり、ディレクターズカット版向けのMP4では、再生区間(1)、(2)、(4)に対応するエレメンタリーストリームが連続して格納され、劇場公開版向けのMP4では、再生区間(1)、(2)、(4)に対応するエレメンタリーストリームが連続して格納される。このように、エクスポート用のオーディオのエレメンタリーストリームを予め1本のエレメンタリーストリームとしておくことで、再生区間(2)及び(4)、あるいは、再生区間(3)及び(4)などの接続部分においてオーディオのオーバーラップやギャップが発生しないというメリットがある。このため、オーディオのオーバーラップやギャップについての処理を再生装置が行わなくてもよい。
図30は、複数のバージョンの本編コンテンツが格納されている場合のファイル生成方法の他の一例について説明するための図である。
図29では、エクスポート用のオーディオを1つのMP4ファイルとするケースについて説明したが、図30に示すようにビデオの再生区間に対応するMP4ファイルを複数格納してもよい。このとき、再生区間の接続部分ではオーディオのオーバーラップやギャップが発生するが、前述した方法により処理するものとする。
図31は、エクスポート用のオーディオのMP4ファイルとM2TSから分離したビデオのMP4ファイルとの関係を示す一例である。
DMP形式のコンテンツを作成する場合には、オーディオやビデオ、字幕など異なるメディアにおけるMovie Fragmentの単位が整合していることが望ましい。一般に、コンテンツの途中からランダムアクセスして再生する場合には、ビデオのランダムアクセスポイントに基づいてランダムアクセスポイントのPTSを決定し、オーディオや字幕については、ビデオのランダムアクセスポイントのPTSと同一、あるいは、直前、直後となるPTSを持つフレームから再生する。オーディオや字幕については、予め格納されたエクスポート用のシングルトラックMP4ファイルを使用する場合には、これらのMP4ファイルのデータは変更することなくエクスポートされる。
従って、M2TSから分離したビデオのエレメンタリーストリームに基づいて生成するビデオのMP4ファイルは、Movie Fragmentの単位が、エクスポート用のオーディオや字幕と整合するように生成されることが望ましい。つまり、M2TSから分離したエレメンタリーストリームに基づいて、オーディオや字幕のMP4ファイルの再生時間に対応させた再生時間のビデオのMP4ファイルを生成することが望ましい。こうすることで、ランダムアクセス時には、各メディアにおいて同一のインデックス番号を持つMovie Fragmentから再生を開始することができる。なお、Movie FragmentにおいてDTSが先頭となるサンプルはMPEG−4 AVCやHEVCにおけるIピクチャ、あるいは、IDRピクチャなどのランダムアクセス可能なピクチャとするものとする。
図32Aは、本実施の形態におけるファイル生成装置のブロック図である。
本実施の形態におけるファイル生成装置40は、エレメンタリーストリームからMP4ファイルを生成するファイル生成装置であって、取得部41、選択部42及び生成部43を備えている。取得部41は、複数のエレメンタリーストリームのそれぞれを示す識別情報が含まれるプレイリストを取得する。選択部42は、取得したプレイリストから所定の識別情報によって示されるエレメンタリーストリームを選択する。生成部43は、選択したエレメンタリーストリームに対応しているマニフェストファイルであって、所定のルールに基づいてファイルのフォーマットを変換するために必要なマニフェストファイルに基づいて、エレメンタリーストリームに含まれるデータをMP4のファイルフォーマットに変換することによって、MP4ファイルを生成する。なお、所定の識別情報とは、例えば、図28の各プレイリスト例に示す“XXX1.M2TS”や“XXX2.M2TS”などのストリームファイルのファイル名である。
なお、ここで、プレイリストは、さらに、所定の識別情報によって示されるエレメンタリーストリームの一部の区間を示す区間情報を含んでいてもよい。区間情報は、例えば、図28Aの“PTS_begin=10.0s, PTS_end=30.3s”などのように、エレメンタリーストリームの復号または表示の時刻を示す時刻情報で示されている。
また、プレイリストは、第1エレメンタリーストリームを示す第1識別情報と、第2エレメンタリーストリームを示す第2識別情報とを所定の識別情報として、かつ、第1エレメンタリーストリームの第1区間を示す第1区間情報と、第2エレメンタリーストリームの第2区間を示す第2区間情報とを区間情報として含んでいてもよい。具体的には、図27のストリームファイル(XXX1.M2TS)から得られるエレメンタリーストリームが第1エレメンタリーストリームに相当し、ストリームファイル(XXX2.M2TS)から得られるエレメンタリーストリームが第2エレメンタリーストリームに相当する。また、図28Aに示すように、プレイアイテム1の“XXX1.M2TS”が第1識別情報に相当し、プレイアイテム2の“XXX2.M2TS”が第2識別情報に相当する。また、図28Aに示すように、プレイアイテム1の“PTS_begin=10.0s, PTS_end=30.3s”が第1区間情報に相当し、プレイアイテム2の“PTS_begin=30.3s, PTS_end=60.3s”に相当する。
また、マニフェストファイルは、図24や図28Bに示すようなコピーマニフェストファイルであり、復号または表示の時刻とエレメンタリーストリームにおける位置とが対応付けられた情報である。また、マニフェストファイルは、複数のエレメンタリーストリームのそれぞれに対して1対1で対応している。例えば、マニフェストファイルは、エレメンタリーストリーム(M2TSファイル)のファイル名と対応するファイル名が付けられることにより、対応付けが行われていてもよいし、テーブルによりマニフェストファイルとエレメンタリーストリームとの対応付けが行われていてもよい。
図32Bは、本実施の形態におけるファイル生成方法のフローチャートである。
本実施の形態におけるファイル生成方法は、エレメンタリーストリームからMP4ファイルを生成するファイル生成方法であってステップS41、ステップS42及びステップS43を含む。ステップS41では、複数のエレメンタリーストリームのそれぞれを示す識別情報が含まれるプレイリストを取得する。ステップS42では、取得したプレイリストから所定の識別情報によって示されるエレメンタリーストリームを選択する。ステップS43では、選択したエレメンタリーストリームに対応しているマニフェストファイルであって、所定のルールに基づいてファイルのフォーマットを変換するために必要なマニフェストファイルに基づいて、エレメンタリーストリームに含まれるデータをMP4のファイルフォーマットに変換することによって、MP4ファイルを生成する。
これにより、本実施の形態では、プレイリストから選択したエレメンタリーストリームに含まれるデータについて、当該エレメンタリーストリームに対応しているマニフェストファイルに基づいて、MP4のファイルフォーマットに変換することができる。マニフェストファイルを用いることにより、例えば、プレイリストの所定の識別情報によって示されるエレメンタリーストリームを、演算することなく特定できるため、処理負荷を抑えることができる。
また、プレイリストが、所定の識別情報によって示されるエレメンタリーストリームの一部の区間を示す区間情報を含んでいる場合、ステップS42では、さらに、区間情報で示されるエレメンタリーストリームの前記区間を選択し、ステップS43では、選択されたエレメンタリーストリームの区間をMP4のファイルフォーマットに変換してもよい。
これにより、本実施の形態では、プレイリストから選択したエレメンタリーストリームの区間のデータについて、当該エレメンタリーストリームに対応しているマニフェストファイルに基づいて、MP4のファイルフォーマットに変換することができる。マニフェストファイルを用いることにより、プレイリストの区間情報によって示されるエレメンタリーストリームの区間を、演算することなく特定できるため、処理負荷を抑えることができる。
また、区間情報は、エレメンタリーストリームの復号または表示の時刻を示す時刻情報で示されており、マニフェストファイルは、時刻とエレメンタリーストリームにおける位置とが対応付けられた情報である場合、ステップS43では、マニフェストファイルから、プレイリストの区間情報により示される時刻情報に対応した、エレメンタリーストリームにおける区間の位置を特定し、特定した前記エレメンタリーストリームの区間を抽出し、抽出したエレメンタリーストリームの区間をMP4のファイルフォーマットに変換してもよい。
これにより、本実施の形態では、マニフェストファイルには、復号または表示の時刻と、エレメンタリーストリームにおける位置とが予め関連付けられているため、プレイリストに示される区間情報から、容易にエレメンタリーストリームの区間の位置を特定できる。これにより、処理負荷を抑えることができる。
また、プレイリストは、第1エレメンタリーストリームを示す第1識別情報と、第2エレメンタリーストリームを示す第2識別情報とを所定の識別情報として、かつ、第1エレメンタリーストリームの第1区間を示す第1区間情報と、第2エレメンタリーストリームの第2区間を示す第2区間情報とを区間情報として含んでいる場合、ステップS42では、取得したプレイリストから、第1識別情報によって示される第1エレメンタリーストリームのうちの第1区間情報で示される第1区間と、第2識別情報によって示される第2エレメンタリーストリームのうちの第2区間情報で示される第2区間と、を選択し、変換では、選択した第1エレメンタリーストリームの第1区間と、第2エレメンタリーストリームの第2区間とを含むデータをMP4のファイルフォーマットに変換してもよい。
これにより、本実施の形態では、プレイリストによって2つのエレメンタリーストリームのそれぞれの区間が選択されていても、容易に2つの区間を特定することができる。これにより、処理負荷を抑えることができる。
また、この場合、ステップS43では、第1エレメンタリーストリームに対応している第1マニフェストファイルに基づいて、選択した第1エレメンタリーストリームの第1区間を抽出し、第2エレメンタリーストリームに対応している第2マニフェストファイルに基づいて、選択した第2エレメンタリーストリームの第2区間を抽出し、抽出した第1区間及び第2区間を含むデータをMP4のファイルフォーマットに変換してもよい。
これにより、本実施の形態では、プレイリストによって2つのエレメンタリーストリームのそれぞれの区間が選択されていても、2つのエレメンタリーストリームのそれぞれに対応するマニフェストファイルを用いるため、容易に2つの区間を特定することができる。これにより、処理負荷を抑えることができる。
また、図27に示すようにエクスポート用のストリームファイル(音声のMP4ファイル)がある場合には、ステップS42では、さらに、エレメンタリーストリームに対応する音声のMP4ファイルを選択し、ステップS43では、選択したエレメンタリーストリームに対応しているマニフェストファイルに基づいて、当該エレメンタリーストリームに対応している映像のエレメンタリーストリームを抽出し、抽出した映像のエレメンタリーストリームと、選択した音声のMP4ファイルとを用いて、MP4ファイルを生成してもよい。
これにより、本実施の形態では、音声のMP4ファイルをエレメンタリーストリームから変換して生成する必要がないため、処理負荷を抑えることができる。
(変形例4−1)
図33は、本変形例におけるファイル生成装置のブロック図である。
ファイル生成装置200は、プレイリスト解析部201と、エクスポート対象選択部202と、M2TS分離部203と、エクスポートファイル取得部204と、再多重化部205と、コピーマニフェスト解析部206とを備えている。ファイル生成装置200は、M2TSから分離したエレメンタリーストリーム、及び、エクスポート用のシングルトラックMP4に基づいて、オーディオ、ビデオ、あるいは、字幕を含むMP4を生成して出力する。出力されるMP4は、複数メディアのエレメンタリーストリームを1つのファイルに格納する形式であってもよいし、DMP形式であってもよい。
プレイリスト解析部201は、ファイル生成装置40の取得部41及び選択部42に相当し、ディスク内、あるいは、ネットワーク経由でプレイリストを取得し、取得した1つ、あるいは、複数のエクスポート用のプレイリストを解析する。
エクスポート対象選択部202は、ファイル生成装置40の選択部42に相当し、プレイリスト解析部201の解析結果に基づいて、ユーザーがエクスポート対象となるプレイリストにより提供されるコンテンツ、あるいは、コンテンツ内の言語設定や字幕データのエクスポートの有無などを選択するためのメニューを生成し、生成したメニューへの入力を受け付け、ユーザーの選択結果(受け付けたメニューへの入力に応じて決定されたプレイリスト)に基づいてエクスポート対象となるプレイリストなどを決定する。
次に、ユーザーが選択したコンテンツを構成するエレメンタリーストリームが格納されるデータを決定し、エレメンタリーストリームがM2TSに格納される場合には、M2TS分離部203が、コピーマニフェスト解析部206により提供されるコピーマニフェスト情報に基づいてエレメンタリーストリームを分離する。エレメンタリーストリームがエクスポート用のMP4により提供される場合には、エクスポートファイル取得部204において当該MP4ファイルを取得する。エクスポートファイル取得部204は、音声のエレメンタリーストリームが、エクスポート用のMP4ファイルにより提供される場合には、当該MP4ファイルを取得してもよい。最後に、再多重化部205は、M2TS分離部203から取得したエレメンタリーストリーム、及び、エクスポートファイル取得部204により取得したMP4ファイルを用いて、出力用のMP4ファイルを生成する。複数メディアを1つのMP4ファイルに格納する場合には、エクスポート用MP4データからエレメンタリーストリームを分離したうえで、オーディオ、ビデオ、あるいは、字幕のエレメンタリーストリームを1つのMP4ファイルに多重化する。DMP形式で出力する場合には、M2TS分離手段により出力されたエレメンタリーストリームからシングルトラックMP4を生成し、EXPTファイル取得手段から出力されるエクスポート用MP4データと合わせて、DMPコンテンツを生成する。このとき、DMPに含まれる複数のMP4ファイルを管理するためのメタデータは、別途生成するものとする。なお、再多重化部205は、映像のMP4ファイル、音声のMP4ファイル、及び字幕のMP4ファイルのそれぞれを多重化することなく、独立したファイルで出力してもよい。
なお、M2TS分離部203、エクスポートファイル取得部204、再多重化部205及びコピーマニフェスト解析部206は、ファイル生成装置40の変換部43に相当する。
図34は、MP4ファイルを複数に分割して生成する場合の一例を示す図である。具体的には、コンテンツ全体に対応するサイズが11.40GBとなるMP4ファイルを、SDカードに記録するために、4GB以下となるように3つのファイルに分割する例について示している。
M2TSなどのデータから生成されたMP4ファイルは、SDカードなどのリムーバブルメディアや、スマートフォンあるいはタブレットなどのHDDなど、MP4ファイルを持ち出す先の記録デバイスに記録される。このとき、記録デバイスのファイルシステムに依存して、扱うことのできるファイルサイズの上限値が制限される。例えば、SDカードであれば4GBであるし、SDHCカードであれば32GBとなる。従って、コンテンツ全体に対応するMP4ファイルのサイズが記録デバイスにおけるファイルシステムの上限値を超える場合には、MP4ファイルを分割する必要がある。
Movie Fragmentを用いたMP4においては、オーディオ、ビデオ、あるいは、字幕などにおいて再生区間が同一、あるいは、近傍となるMovie Fragmentは、同一ファイルに格納されることが望ましい。再生区間が同一であるオーディオやビデオのデータが異なるファイルに格納される場合には、再生時には同時に2つのMP4ファイルのデータにアクセスする必要があり、記録デバイスにおけるデータの読出し速度やシーク速度に依存して、1つのファイルから再生する場合に比べて、データを余分にバッファリングしてから再生しなければならないなどの問題があるためである。
従って、再生区間が同一あるいは近傍となるオーディオ、ビデオ、及び、字幕のMovie Fragmentが同一のMP4ファイルに含まれ、かつ、ファイルサイズが4GB以下となるようにMP4ファイルを生成する。このように、4GBバイト以下であって、かつ、できるだけ多くのMovie Fragmentを同一ファイルに格納することで、生成されるファイル数を最小化できる。
なお、オーディオや字幕のデータサイズはビデオと比較して小さいため、より長時間分のデータをバッファリングしておくことができる。従って、再生区間が同一である異なるメディアのMovie Fragmentを全て同一ファイルに格納するのではなく、少なくともビデオのMovie Fragmentについては、同一ファイルとなるように分割することにしてもよい。ビデオ以外のメディアについても、同一Movie Fragmentのデータを異なるファイルに分割することを禁止してもよい。
図35は、MP4ファイルを複数に分割して生成する場合の他の一例を示す図である。
図34の例のように、オリジナルのMP4ファイルのデータをそのまま分割すると、2番目以降のファイルにおいてはmoovが存在せず、SampleEntryに格納される各メディアの復号時に必要となる初期化情報を取得するために、1番目のファイルを参照する必要がある。また、mfraは最終のファイルにおいてのみ含まれるため、最終以外のMP4ファイルのランダムアクセスを行う場合には、最終のMP4ファイルに格納されるmfraを参照する必要があるなど、それぞれのMP4ファイルに完結した再生を行うことができない。従って、ファイル毎に、moov、あるいは、mfraを付加してもよい。
moovについては、オリジナルのMP4ファイルのSampleEntryには、コンテンツ全体で必要となる初期化情報が全て含まれるためstsdの内容は変更不要である。また、他のBoxについても、基本的には変更不要であるが、各トラックのtkhd、あるいは、mvhdには、それぞれ、トラック毎、ファイル全体の再生時間長が格納される。従って、これらの再生時間長は、分割後のMP4ファイルの再生時間長に対応するように変更してもよい。あるいは、分割されたファイルであることが何らかの補助情報により示される場合には、再生時間長の変更も不要としてもよい。
一方、mfraについても、各MP4ファイル内のランダムアクセスポイントを示すように内容を変更してもよい。mfraのランダムアクセス情報には、ランダムアクセスポイントとなるサンプルが属するmoovのファイル先頭からのオフセットが示される。mfraの内容を変更しない場合、オフセット値はオリジナルのMP4に対応するため、分割後のファイルのオフセット値とはならない。従って、分割されたファイルにおけるランダムアクセスポイントの探索時には、2番目以降のファイルに対しては、再生順が前となるMP4ファイルのサイズの総和を加算して、オリジナルのMP4ファイルのファイルオフセット値を再現することにより、ランダムアクセスポイントとなるサンプルデータを取得する。
分割後の各ファイルにおいてmoovやmfraの内容を変更することにより、オリジナルのMP4ファイルにおけるmoovやmfraのサイズが更新される場合には、更新後のファイルサイズがファイルシステムにおける最大サイズ以下となるように分割する。
なお、分割後のファイルの再生順はファイル名、あるいは、ファイルの再生順を示す情報を格納したコンテンツの管理情報により識別できるものとする。
また、図25の例のように、字幕データをインタリーブせずにMP4ファイルの終端にまとめて格納する際には、字幕データが含まれる分割ファイルを識別するための情報をコンテンツの管理情報などに含める。再生時には、字幕データが格納される分割ファイルにアクセスして字幕データを取得する。一般に、字幕データはサイズが小さいため、全ての字幕データが同一ファイル内に含まれることが望ましい。ここで、字幕データを復号する際の初期化情報は、オーディオやビデオと同様にmoovに格納される。
MP4ファイルの生成時には、オリジナルのMP4ファイルを出力先のファイルシステムにおけるファイルサイズの上限値を予め取得する必要がある。従って、出力先がタブレットなど他のデバイスである場合には、接続先のデバイスとの間で、また、出力先が、BDプレーヤなど光ディスクが存在するデバイスと同一のデバイスに接続されたSDカード、HDDなどの記録媒体である場合には、デバイス内において、何らかの通信手段に基づいて通信を行い、出力先のファイルシステムの最大ファイルサイズを示す情報、又は、オリジナルのMP4ファイルを分割する必要があるかを示す情報を取得する。
例えば、MP4ファイルの生成に先立って、MP4の生成モジュールが出力先の記録媒体のファイルシステムにおける最大ファイルサイズを示す情報の取得要求を行うなどMP4の生成モジュール主体で取得する。あるいは、オリジナルのMP4ファイルを出力先のデバイスに通知し、分割が必要な場合には出力先のデバイスからMP4の生成モジュールに対して最大ファイルサイズを示す情報を送信するなども可能である。
他のデバイスが通信ネットワーク経由でMP4ファイルを取得する場合には、選択可能な言語、あるいは、MP4ファイルの取得先やDRM(Digital Right Management)の管理サーバのURLなどコンテンツのメタ情報を記述したメタファイルを先ず取得し、メタファイルの解析結果に基づいてMP4ファイルの取得要求を行うことが可能である。このような場合には、MP4ファイルの取得要求メッセージやコマンドにおいて、最大ファイルサイズを示す情報を記述してもよい。
また、これらのメタファイルの更新に対応できるようにしてもよい。デフォルトのメタファイルは光ディスク内から取得して、更新があれば更新後のメタファイルをネットワーク経由で取得する。メタファイル内に、再生装置が最初にアクセスする管理サーバのURLを記述しておき、光ディスク内のメタファイルのバージョン番号などに基づいて、メタファイルが最新かどうかを管理サーバが判定し、最新でなければ最新のメタファイルの取得先を再生装置に通知するなどが可能である。また、国や地域に依存して、デフォルトのメタファイルに記述されたDRMやコンテンツの取得先、あるいは、コンテンツの内容が異なることがあり、これらもメタファイルの更新と同様に、再生装置が存在する国や地域の識別情報に基づいて、メタファイルの更新と同様に管理サーバにおいて処理することができる。国や地域毎に、メタファイルの更新内容が異なる場合も同様である。
図36は、MP4ファイルを複数に分割して生成する場合の他の一例を示す図である。
MP4ファイルを生成する際には、オーディオ、ビデオ、あるいは、字幕などの異なるメディアのデータを同一ファイルに多重化するのが一般的であるが、図36に示すように、メディア毎にそれぞれ独立したMP4ファイルとする形式もある。本形式はDMP(Digital Media Package)と呼ばれ、再生時には、複数のMP4ファイルから取得したメディアデータを同期再生する。DMPでは、MP4ファイルやコンテンツの管理ファイルをZIP形式などでアーカイブするが、アーカイブ後のファイルが出力先のファイルシステムの最大ファイルサイズを超える場合には分割の必要がある。分割する際には、図34および図35において説明した分割方法と同様に分割を行える。つまり、同一DMPを構成する各メディアのMP4ファイルの再生区間は同一、あるいは、近傍となるように分割する。あるいは、各メディアのMP4において、1つのMovie Fragmentが複数のDMPに跨って格納されることを禁止するなどである。moovやmfraの扱いについても同様である。また、オーディオや字幕はビデオに対してデータサイズが小さいため、複数ファイルに分割するのはビデオのみとして、オーディオや字幕は先頭の分割ファイルに全てのデータを格納してもよい。
また、コンテンツ管理ファイルの内容については、コンテンツ全体に関わる属性情報は分割後の先頭のDMP内に格納されるコンテンツ管理ファイルに格納できる。また、先頭のDMPに格納されるコンテンツ管理ファイルにおいて、分割された後続のDMPファイルの識別情報、及び、再生順を示す情報を格納してもよい。後続のDMPにおけるコンテンツ管理ファイルでは、DMP内のファイルのアーカイブ情報、あるいは、DMPの識別情報などを記述して、コンテンツ全体に関わる情報は記述しなくてもよい。なお、DMPを複数生成するのではなく、単一のDMPのデータを複数ファイルに分割してもよい。
なお、DMPにおいても、図21や図22で説明したように、複数の再生区間を構成するMP4ファイルをプレイリストなどにより参照して連続再生することは可能である。複数メディアを同一ファイルに多重化する際には、接続先と接続元はそれぞれ1つのファイルであるが、DMPでは、接続先と接続元がそれぞれ複数のファイルとなり、プレイリストには、それら複数のファイルの識別情報を記述する。また、連続して再生されるファイルの接続点におけるオーディオのギャップやオーバーラップも、前述した処理により同様に扱える。
(変形例4−2)
図37は、エクスポート用のMP4など、エクスポート時に使用されるデータを光ディスクに格納する際の格納位置について示す図である。エクスポート用のデータは、高速に読出し、あるいは、コピーできることが望ましいため、光ディスクの外周部における連続領域に格納する。一方、M2TSについては、光ディスクのレイヤ間をジャンプする際にオーディオやビデオ、あるいは、グラフィックスなどのデータがアンダーフローしないことを保証できるだけのデータを外周部に配置することが必須である。
例えば、レイヤ0からレイヤ1へのジャンプに要する時間をT1、レイヤ1にジャンプしてからビデオのデータを取得できるまでの時間をT2、ビデオのビットレートをRとすると、少なくともR*(T1+T2)だけのビデオデータがレイヤ0からジャンプする直前にバッファリングされる必要がある。ビットレートRは、ビデオが符号化されるプロファイルやレベルにより規定されるビットレートの最大値、あるいは、実際の符号化データにおける平均ビットレートなどであってもよい。ここでの平均レートとは、ジャンプする直前の時刻に相当するビデオのDTSをT_dec1とすると、DTSがT_dec1から(Tdec1+T1+t2)までの区間の平均レートを示す。
また、エクスポート用のデータが配置される領域においても、M2TSの再生時にはジャンプが発生する。従って、エクスポート用データの格納領域をジャンプする際にM2TSのデータがアンダーフローしないように、エクスポート用データの格納領域を決定する必要がある。このように、ジャンプ再生時にM2TSのデータがアンダーフローしないことを保証したうえで、できるだけ最外周に近い領域にエクスポート用のデータを配置する。
なお、エクスポート用のMP4については、同一ファイルが同一レイヤ内に格納されることが望ましい。
(変形例4−3)
図38は、エクスポート用のプレイリスト内にエレメンタリーストリームのサイズを示すプレイリスト例を示す図である。
図38の(a)のプレイリスト例1では、M2TSやMP4に多重化されたエレメンタリーストリームのサイズが示される。エクスポート時には、これらのサイズに基づいてエクスポートされるMP4のデータサイズを概算できるため、エクスポート先の記録媒体においてエクスポートされるMP4を格納するために十分な空き領域があるかどうかを判定できる。あるいは、コピーマニフェストにおいて、エクスポートするMP4におけるヘッダ部のデータが含まれる場合には、MP4のヘッダ部のサイズを決定できるため、エレメンタリーストリームのサイズと合わせて、エクスポートされるMP4のデータサイズが決定できる。
図38の(b)のプレイリスト例2は、オーディオが基本部分と拡張部分(ロスレスとするための拡張など)から構成される場合に、基本部分と拡張部分のサイズの和、及び、基本部分のみのサイズを示すものであり、基本部分のみ、拡張部分のみ、あるいは、基本部分と拡張部分とを合わせてエクスポートする際の出力データのサイズを決定できる。オーディオだけでなく、ビデオがレイヤ構造により符号化される場合においても適用できる。
(変形例4−4)
図39は、プレイアイテム間のオーディオの接続部に発生するギャップの情報をプレイリスト内に示すプレイリスト例を示す図である。connection_conditionがseamless_w_gapであれば、プレイアイテムの接続においてビデオはシームレスに接続されるが、オーディオにはギャップが発生することを示す。また、ギャップが存在する場合には、gap_durationによりギャップの時間長を示すこともできる。
MP4においては、複数ファイルを連結する際には、オーディオのギャップを設ける必要があるが、これらの情報により、ギャップが存在するかどうかを判定し、ギャップが存在する場合にはギャップの時間長を取得して、MP4ファイルの連結部におけるギャップの時間長をMP4のヘッダ情報として設定することができる。
光ディスク内のコンテンツにおいては、プレイアイテム間ではオーディオのオーバーラップのみ許容するため、seamless_w_gapに相当するモードは、エクスポート専用となる。
(変形例4−5)
図40Aは、エクスポート時にオーディオのギャップを生成する方法例について説明するための図である。M2TS内のストリームにおいては、シームレス接続部においてオーディオフレームの再生区間が不連続となる場合には、プレイアイテム間でオーディオの再生区間をオーバーラップさせる。互いにオーバーラップが発生する2つのオーディオストリームをMP4において連結する際には、接続部分におけるオーディオフレームを削除してギャップを生成する必要がある。
図40Aにおいて、オーディオ1とオーディオ2とを連結する際には、オーディオ1のフレーム98からフレーム100までの3枚のフレーム(フレーム群A)を削除して、オーディオ1のフレーム97とオーディオ2のフレーム0との間にギャップを生成する。ここで、エクスポート時には、ギャップを生成する際に削除する必要があるフレームを特定できることが望ましい。
図40Bは、ギャップを生成する際に削除する必要があるフレームが示されたプレイリスト例を示す図である。図40Bのプレイリスト例では、プレイアイテム1とプレイアイテム2とを連結する場合においてプレイアイテム1から参照されるオーディオの最終フレームのPTSがlast_frame_ptsにより示される。例えば、図40Aにおけるオーディオ1のフレーム97のPTSが30.1sであるとすると、last_frame_ptsが30.1sと設定される。なお、削除が必要となるフレームのインデックス番号、格納先アドレスなど、PTS以外の情報により削除するフレームを特定してもよい。
なお、オーディオ1と、オーディオ2との間にオーバーラップが存在する(残る)ようにオーディオフレームを削除してもよい。つまり、オーディオフレームを削除した後において、オーディオ1の最終フレームとオーディオ2の先頭フレームとの間にオーバーラップが存在してもよい。
また、図39のプレイリスト例のように、ギャップの時間長などを合わせて示しても良い。
以上の説明においては、エクスポート時に使用する補助情報をプレイリストに格納するものとしたが、プレイリストとは異なる再生管理のメタデータに格納してもよい。
なお、図40A及び図40Bでは、オーディオ1のうちのフレーム98からフレーム100までの3枚のフレームを削除して、オーディオ1のフレーム97とオーディオ2のフレーム0との間にギャップを生成する例であるが、オーディオ2のフレームを削除してオーディオ1とオーディオ2との間にギャップを生成してもよい。例えば、図40Aのオーディオ2のうちのフレーム0からフレーム2までの3枚のフレーム(フレーム群B)を削除して、オーディオ1のフレーム100とオーディオ2のフレーム3との間にギャップを生成してもよい。この場合、図40Bで示すプレイリスト例において、プレイアイテム1のオーディオの最終フレームのPTSを示すlast_frame_ptsの代わりに、プレイアイテム2のオーディオの先頭フレームのPTSを示すfirst_frame_ptsを設け、オーディオ2のフレーム3のPTSが30.4sであるとすると、first_frame_ptsを30.4sに設定してもよい。
(変形例4−6)
図41は、HDR(High Dynamic Range)と呼ばれる、BT.709規格で使用される輝度範囲(SDR: Standard Dyanmic Range)よりも高輝度領域の輝度を含むビデオデータをMP4ファイルに格納する際の格納例を示す図である。
HDRコンテンツの再生には、HDRに対応したディスプレイが必要であり、SDRのディスプレイで再生する際にはHDRの輝度範囲をSDRの輝度範囲にマッピングするなどの処理が必要となる。本例では、エクスポート用のプレイリストにおいて最初に再生される0番目のプレイアイテムにおいて、HDRコンテンツが含まれ、HDR対応のディスプレイでない場合には正しく表示できない旨を示す警告メッセージを示すコンテンツを格納しておく。
エクスポート時にMP4を生成する際には、0番目のプレイアイテムに対応する再生区間がMP4の先頭データとして格納されるため、MP4を再生する際には、この警告メッセージが最初に表示される。なお、警告メッセージは字幕のみで構成してもよい。あるいは、MP4ファイル内にHDRコンテンツが格納されるかどうかを、MP4のヘッダ情報においてシグナリングしてもよい。例えば、moovにおいて、ビデオトラックの少なくとも一部の再生区間がHDRを使用しているかどうかを示し、moofにおいて、Movie Fragmentを構成するビデオサンプルがHDRを使用しているかどうかを示すことが可能である。
HDRコンテンツを再生する際には、ストリーム単位、あるいは、シーン単位などで切替えることができるピーク輝度や白レベルの輝度などの輝度情報を用いて、出力先ディスプレイの最高輝度に応じたガンマカーブの調整を行う。従って、輝度情報についても、MP4のヘッダ情報として格納してもよい。輝度情報がMP4ファイル内で固定の場合にはmoov内の情報として設定し、MP4ファイル内で可変となる場合にはmoof内の情報として設定してもよい。このとき、Movie Fragment内では輝度情報は同一であるものとする。
なお、HDRの使用、不使用が切替わる、あるいは、輝度情報が切替わると視覚的に目立ち、ユーザーに不快感を与えるため、シームレスに連続再生される区間においては、HDRの使用、不使用、あるいは、輝度情報は固定としてもよい。例えば、M2TSを再生する際のプレイリストにおいては、プレイアイテム間でHDR関連の情報が固定であることを示す情報を格納してもよいし、MP4においても、ビデオトラック内でHDR関連の情報が固定であることを示す情報を格納してもよい。
また、HDR関連の情報などは、MP4ファイルに直接格納せずに、MP4ファイルを管理するメタ―データとして格納してもよい。
(変形例4−7)
図42は、光ディスクからSDカードやポータブルハードディスクなどにエクスポートしたDMPデータを、DLNA(Digital Living Network Alliance)規格などに基づいて、スマートフォンやタブレットなどのモバイル端末で視聴する際の動作を説明するための図である。
例えば、DLNAを例にとると、DMPデータを格納する記録媒体などがDLNAサーバとなり、スマートフォンやタブレットなどがDLNAクライアントとなる。DLNAクライアントにおいてコンテンツを視聴する際には、DMPデータの全体をダウンロードしてから再生するのではなく、ダウンロードしながら再生できることが望ましい。
しかしながら、DMPのデータは非圧縮ZIP形式で複数のMP4ファイルを格納しており、MP4ファイルのデータは互いにインタリーブされていないため、DMPデータをダウンロードしながら、オーディオ、ビデオ、あるいは字幕のデータを同期再生するのは困難である。従って、DLNAサーバにおいては、DMPからオーディオ、ビデオ、あるいは、字幕のMP4ファイルを分離し、それらのMP4ファイルに対してそれぞれ独立のセッションを確立した上で、DLNAクライアントに送出する。DLNAクライアントにおいては、独立した複数のセッションにより受信する複数のメディアのMP4ファイルから、エレメンタリーストリームを分離して、同期再生を行う。
なお、上記実施の形態および各変形例において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記実施の形態および各変形例におけるファイル生成装置などを実現するソフトウェアは、図8、図17、図22B、図22D、図32Bなどに示すフローチャートに含まれる各ステップを、コンピュータに実行させる。
以上、一つまたは複数の態様に係るファイル生成装置および再生装置について、各実施の形態および各変形例に基づいて説明したが、本発明は、これらの実施の形態および各変形例に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を各実施の形態および各変形例に施したものや、各実施の形態および各変形例における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。
例えば、実施の形態1およびその変形例では、MPEG2−TSによって構成されたファイルを元ファイルとして用いた。しかし、元ファイルは、MP4と異なるファイルフォーマットによって構成されているファイルであれば、MPEG2−TSのファイル以外のどのようなファイルまたはトランスポートストリームであってもよい。
また、実施の形態2では、図22Aに示すように、再生区間1と再生区間2とを統合したが、これらの再生区間のそれぞれはMP4ファイルのムービーフラグメントであっても、それ以外の他のストリームであってもよい。
また、以下のような場合も本発明に含まれてもよい。
(1)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(2)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
(3)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(4)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(5)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
以上、本発明の一つまたは複数の態様に係るデータ送信方法およびデータ再生方法などについて、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の一つまたは複数の態様の範囲内に含まれてもよい。