(58)【調査した分野】(Int.Cl.,DB名)
前記手順ファイルには、前記差分ファイルに含まれる部分の範囲と、前記元ファイルに含まれる部分の範囲とが交互に配列されるように、前記差分ファイルに含まれる複数の部分のそれぞれの範囲と、前記元ファイルに含まれる複数の部分のそれぞれの範囲とが記述され、
前記MP4ファイルの生成では、
前記手順ファイルに記述されている各範囲の順に、前記各範囲によって示される部分を組み合わせることによって、前記MP4ファイルを生成する
請求項1〜3の何れか1項に記載のファイル生成方法。
【発明を実施するための形態】
【0013】
(本発明の基礎となった知見)
本発明者は、「背景技術」の欄において記載した上記特許文献1のファイル生成方法に関し、以下の問題が生じることを見出した。
【0014】
上記特許文献1のファイル生成方法では、MPEG2−TSで多重化されたコンテンツを、一度、映像ストリーム、音声ストリーム、または字幕ストリームなどの各ストリームに戻した上で、そのコンテンツのファイルフォーマットをMP4に変換する必要がある。また、一般的に、光ディスクで配布される商用コンテンツは暗号化されている。したがって、変換の際には、一旦、暗号を解いてからファイルフォーマットを変換し、その後に、再度暗号化を行う必要がある。以下、MPEG2−TSのコンテンツの構造などについて詳細に説明する。
【0015】
図1は、光ディスクに格納されているMPEG2−TSのコンテンツの構造の一例を模式的に示す図である。光ディスクには、コンテンツとしてSterem Fileが格納される。
図1に示す例では、光ディスクにはStream Fileが1つしか格納されていないが、複数格納されていてもよい。またここでは、Stream FileはXXXXX.M2TSというファイル名で記録されている。XXXXXには、番号が記載される。複数のコンテンツが格納される場合には、この番号によって、それらのコンテンツを個別に管理することが可能である。
【0016】
Stream Fileは、それぞれ6144BytesのAligned Unitと呼ばれる複数の単位に区分される。Aligned Unitは暗号化の単位である。なお、Stream Fileのデータ量は、必ずしも6144Bytesの倍数にならない可能性がある。6144Bytesの倍数にならない場合には、コンテンツの末尾にNULL Dataを格納する等の方法によって、Stream Fileのデータ量を6144Bytesの倍数にすることが望ましい。
【0017】
図2は、Aligned Unitの復号方法を説明するための図である。
【0018】
光ディスク上のコンテンツは、データであるユニット鍵Kuを用いて暗号化されている。暗号化の際には、Aligned Unitに含まれる6144Bytesのデータは、先頭の16Bytesのデータと、残る6128Bytesのデータとに分離され、その残りの6128Bytesのデータが暗号化される。
【0019】
Aligned Unitの復号の際には、AES_Eは、まず、先頭の16Bytesのデータに対して、ユニット鍵Kuを用いたAES(Advanced Encryption Standard)暗号方式の暗号化を行う。次に、この暗号化によって得られたデータと、先頭の16Bytesのデータとの排他的論理和の演算が行われる。AES_DCBCは、この排他的論理和の演算の結果を鍵として利用し、残る6128BytesのデータをAES−CBC(Cipher Block Chaining)モードで復号する。この復号によって得られる平文のデータに、先頭の16Bytesのデータが付け加えられる。その結果、Aligned Unitに対応する6144Bytesの平文が得られる。
【0020】
図3は、平文の状態のAligned Unitの内部構造を示す図である。
【0021】
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によって、エレメンタリーストリームの音声の種類を識別することができる。
【0022】
図4は、複数のTS Paloadから実際のElementary Streamを作成する方法を示す図である。同じPIDが割り当てられた複数のTS Payloadをつなぎ合わせることによって、PES_HeaderとElementary Streamが構成される。ここで、複数のTS Payloadのうちの最初のTS Payloadは、PES_Headerを含むように構成されている。なお、PES_HeaderとElementary Streamの少なくとも一部とからPES(Packetized Elementary Stream)またはPESパケットが構成される。
【0023】
以上のように、MPEG2−TSのファイル(Sterem File)は、Aligned Unitごとに暗号化されている。したがって、そのファイルをMP4のファイルに変換するためには、上述のような復号が行われ、さらに再暗号化が行われる。スマートフォンまたはタブレットなどの変換機器では、この復号および暗号化に時間がかかるという問題がある。さらに、一旦、平文のコンテンツを作成することとなるため、セキュリティ上の問題もある。
【0024】
このような問題を解決するために、本発明の一態様に係るファイル生成方法は、MP4ファイルを生成するファイル生成方法であって、MP4と異なるファイルフォーマットで構成されている元ファイルを取得し、前記元ファイルに含まれていないデータを含む差分ファイルを取得し、前記MP4ファイルを生成するための手順を示す手順ファイルを取得し、前記手順ファイルに示される手順にしたがって、前記差分ファイルに含まれるデータと、前記元ファイルに含まれるデータとを組み合わせることによって、前記MP4ファイルを生成する。例えば、前記元ファイルの取得では、MPEG2−TSのファイルフォーマットで構成されている前記元ファイルを取得する。
【0025】
これにより、予め定められた手順にしたがって、差分ファイルに含まれるデータと、元ファイルに含まれるデータとを組み合わせることによってMP4ファイルが生成される。したがって、MPEG2−TSなどのファイルフォーマットによって構成される元ファイルを、映像ストリームまたは音声ストリームなどの各ストリームに戻すことなく、MP4ファイルを簡単に生成することができる。また、元ファイルが暗号化されていてもそれを復号して再暗号化する必要がない。したがって、MP4ファイルを生成するための処理負荷を抑えることができる。
【0026】
また、前記元ファイル、前記差分ファイルおよび前記手順ファイルの取得では、光ディスクから前記元ファイル、前記差分ファイルおよび前記手順ファイルを読み出すことによって取得してもよい。
【0027】
これにより、MP4ファイルの生成に必要となる全てのファイルが1つの光ディスクから取得されるため、それらのファイルを探す手間を省くことができ、MP4ファイルをより簡単に生成することができる。
【0028】
また、前記手順ファイルには、前記差分ファイルに含まれる部分の範囲と、前記元ファイルに含まれる部分の範囲とが交互に配列されるように、前記差分ファイルに含まれる複数の部分のそれぞれの範囲と、前記元ファイルに含まれる複数の部分のそれぞれの範囲とが記述され、前記MP4ファイルの生成では、前記手順ファイルに記述されている各範囲の順に、前記各範囲によって示される部分を組み合わせることによって、前記MP4ファイルを生成してもよい。
【0029】
これにより、MP4ファイルに含まれる各部分をそのMP4ファイルの先頭側から順に生成することができ、後戻りすることがないため、MP4ファイルをより簡単に生成することができる。
【0030】
また、前記差分ファイルに含まれる複数の部分のそれぞれの範囲は、データサイズによって前記手順ファイルに記述され、前記元ファイルに含まれる複数の部分のそれぞれの範囲は、当該部分の開始位置とデータサイズとによって前記手順ファイルに記述されていてもよい。
【0031】
これにより、手順ファイルの記述に基づいて、差分ファイルおよび元ファイルから適切な部分をコピーまたは取得して組み合わせることができる。また、差分ファイルに含まれる部分の範囲の記述に開始位置が用いられないため、手順ファイルのデータサイズを抑えることができる。
【0032】
また、前記手順ファイルには前記MP4ファイルのデータサイズが記述されてあり、前記ファイル生成方法は、さらに、前記手順ファイルに記述されている前記MP4ファイルのデータサイズに基づいて、前記MP4ファイルを記録するだけの空き容量がメディアにあるか否かを判定してもよい。
【0033】
これにより、メディアにMP4ファイルを記録するだけの空き容量があるか否かが判定されるため、空き容量がない場合には、そのMP4ファイルの生成を事前に中止するなどの処理を行うことができる。つまり、エラーの発生を未然に防ぐことができる。
【0034】
また、前記手順ファイルには前記MP4ファイルの属性が記述されてあり、前記ファイル生成方法は、さらに、前記手順ファイルに記述されている前記属性を読み出してもよい。
【0035】
これにより、MP4ファイルの生成前にMP4ファイルの属性を手順ファイルから読み出せば、所望のMP4ファイルが生成されるか否かを事前に判断することができる。
【0036】
また、前記手順ファイルには前記MP4ファイルの再生に必要なバッファサイズが記述されてあり、前記ファイル生成方法は、さらに、前記手順ファイルに記述されている前記バッファサイズを読み出してもよい。
【0037】
これにより、MP4ファイルの再生に必要なバッファサイズを手順ファイルから読み出せば、MP4ファイルを解析することなく、そのMP4ファイルが再生可能か否かを簡単に判断することができる。
【0038】
また、前記手順ファイルには、前記元ファイルの名称である第1のファイル名と前記差分ファイルの名称である第2のファイル名とが記述されてあり、前記ファイル生成方法は、さらに、前記手順ファイルに記述されている第1のファイル名のファイルを前記元ファイルとして特定し、前記手順ファイルに記述されている第2のファイル名のファイルを前記差分ファイルとして特定してもよい。
【0039】
これにより、MP4ファイルの生成に用いられる元ファイルおよび差分ファイルを適切に取得することができる。
【0040】
また、前記MP4ファイルの生成では、前記差分ファイルに含まれるデータであるMP4に対応するヘッダ情報を、前記元ファイルに含まれるデータと組み合わせてもよい。
【0041】
これにより、MP4の適切なヘッダ情報を有するMP4ファイルを簡単に生成することができる。
【0042】
また、前記元ファイルの取得では、平文の状態の前記元ファイルを取得し、前記MP4ファイルの生成では、生成された前記MP4ファイルを暗号化してもよい。
【0043】
これにより、MP4への変換後に元ファイルを削除しておけば、その元ファイルに含まれていたデータをMP4ファイルとして残しておきながら、そのデータの秘匿性を確保することができる。
【0044】
また、前記MP4ファイルの生成では、前記元ファイルを構成する部分が取得されるごとに、当該部分に対応する前記MP4ファイルの部分を生成して暗号化し、前記MP4ファイルを構成する部分が暗号化されるごとに、当該部分に対応する前記元ファイルの部分を削除してもよい。
【0045】
これにより、平文の元ファイルに含まれる全てのデータが一時的にも記憶領域に格納されることを防ぐことができ、そのデータの秘匿性をより確実に確保することができる。
【0046】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【0047】
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【0048】
(実施の形態)
図5は、本実施の形態におけるファイル生成装置の構成を示すブロック図である。
【0049】
本実施の形態におけるファイル生成装置10は、MP4ファイルを生成する装置であって、元ファイル取得部11と、差分ファイル取得部12と、手順ファイル取得部13と、生成部14とを備える。元ファイル取得部11は、MP4と異なるファイルフォーマットで構成されている元ファイルを取得する。差分ファイル取得部12は、その元ファイルに含まれていないデータを含む差分ファイルを取得する。手順ファイル取得部13は、MP4ファイルを生成するための手順を示す手順ファイルを取得する。生成部14は、その手順ファイルに示される手順にしたがって、差分ファイルに含まれるデータと、元ファイルに含まれるデータとを組み合わせることによって、MP4ファイルを生成する。言い換えれば、生成部14は、元ファイルをMP4ファイルに変換する。
【0050】
以下、このファイル生成装置10による処理動作について詳細に説明する。
【0051】
図6は、MPEG2−TSのストリームファイル、差分ファイルおよびコピーマニフェストファイルから、MP4のストリームファイルを生成する方法を説明するための図である。
【0052】
本実施の形態では、例えば、光ディスク(例えばBlu−ray(登録商標)ディスク)に、上述の元ファイルであるストリームファイルA(XXXXX.M2TS)と、上述の手順ファイルであるコピーマニフェストファイル(XXXXX.CMNF)と、上述の差分ファイル(XXXXX.DMP4)とが記録されている。コピーマニフェストファイル(XXXXX.CMNF)には、この元ファイルをどのように処理してMP4ファイルに変換するのかの変換手順が記述されている。差分ファイル(XXXXX.DMP4)は、MP4ファイルへ変換するために必要となるデータを格納している。
【0053】
生成部14は、MPEG2−TSのストリームファイルA(XXXXX.M2TS)を変換する際には、コピーマニフェストファイル(XXXXX.CMNF)の記述に従って、ストリームファイルA(XXXXX.M2TS)のデータと差分ファイル(XXXXX.DMP4)のデータとを交互に組み合わせることにより、MP4ファイルであるストリームファイルB(XXXXX.MP4)を生成する。言い換えれば、生成部14は、ストリームファイルA(XXXXX.M2TS)をストリームファイルB(XXXXX.MP4)に変換する。
【0054】
これにより、元ファイルを音声または映像のエレメンタリーストリーム(例えば、HE−AACまたはMPEG−4 AVCのストリーム)に復元することなく、その変換を行うことができる。また、元ファイルが暗号化されていれば、その暗号化も解くことなく、元ファイルからMP4ファイルへの変換が簡単にできる。
【0055】
このコピーマニフェストファイル(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のブランド(つまり種類)を示してもよい。
【0056】
また、“MP4 DECODER BUFFER SIZE”は、出力されるMP4ファイルである変換後のストリームファイルB(XXXXX.MP4)を再生するために、最低必要となるバッファサイズを示す。このバッファサイズは、変換後のストリームファイルBであるMP4ファイルにおいて、どのような多重化規則で映像と音声などが多重化されているかに依存する量である。“MP4 DECODER BUFFER SIZE”は、バッファサイズ以外にも、変換後のストリームファイルBを再生するために、どのようなデコーダリソース(メモリ量やデータ転送速度)が必要かを示してもよい。
【0057】
“COPY MANIFEST”は、“Input File A”によって示されるファイルの各部分の範囲と、“Input File B”によって示されるファイルの各部分の範囲とを示す。これの各部分は、“Output File”によって示されるMP4ファイルを生成するために順次コピーして貼り付けられる部分である。また、それぞれの部分の範囲は、コピー開始位置とコピーサイズとによって、またはコピーサイズのみによって示される。また、“COPY MANIFEST”は、“Input File A”によって示されるファイルの部分と、“Input File B”によって示されるファイルの部分とが交互に繰り返しコピーおよび貼り付けられるように、それらのファイルの各部分の範囲を示す。
【0058】
差分ファイル(XXXXX.DMP4)は、その差分ファイルの先頭から、指定のサイズの部分ごとに、コピーされて貼り付けられる。したがって、“COPY MANIFEST”では、差分ファイル(XXXXX.DMP4)の各部分を示すために、コピー開始位置を指定する必要がない。つまり、コピー開始位置を用いずに、コピーサイズ(データサイズ)のみによって、差分ファイルの各部分の範囲が示される。
【0059】
一方、ストリームファイルA(XXXXX.M2TS)は、変換後のストリームファイルB(XXXXX.MP4)に必要のないデータを含む。したがって、“COPY MANIFEST”では、元ファイルであるストリームファイルAの各部分を示すために、コピー開始位置およびコピーサイズによって、その各部分の範囲が示される。コピー開始位置は、ファイルの先頭からのバイト位置であり、コピーサイズはバイト単位のデータサイズである。
【0060】
生成部14は、コピーマニフェストファイルにしたがって、“COPY MANIFEST”によって示される、元ファイルに含まれる部分と、差分ファイルに含まれる部分とを、交互にコピーして貼り付けることを繰り返す。つまり、生成部14は、“COPY MANIFEST”によって示される、元ファイルに含まれる部分と、差分ファイルに含まれる部分とを、交互に組み合わせることを繰り返す。これにより、変換後のストリームファイルBであるMP4ファイルが生成される。
【0061】
したがって、コピーマニフェストファイルにしたがえば、どのような機器で元ファイルを変換したとしても、同一の変換後のストリームファイルB(XXXXX.MP4)を生成することが可能となる。つまり、変換後のストリームファイルBを、どのような機器においても不具合無く再生することが容易となる。
【0062】
なお、ファイル生成装置10は、差分ファイル(XXXXX.DMP4)とコピーマニフェストファイル(XXXXX.CMNF)を、Blu−rayディスクなどの光ディスクから取得してもよく、これらの両方もしくは片方のファイルをインターネット経由で取得してもよい。この場合は、元ファイルを、最新のファイルフォーマットのファイル、または別の映像および音声を含むMP4ファイルなどへ変換するなどの様々な選択をユーザーに提示することが、ファイル生成装置10に特段の変更を要することなく可能となる。
【0063】
また、ファイル生成装置10は、元ファイルであるストリームファイルAが暗号化されたままの状態で変換を行ってもよく、元ファイルの暗号を解いた後に、MP4ファイルへの変換を行い、生成されたMP4ファイルを再び暗号化してもよい。また、元ファイルであるファイルストリーム(XXXXX.M2TS)は平文であってもよい。なお、差分ファイルは、ヘッダ情報から構成されるため、差分ファイルの暗号化は不要である。ただし、元ファイルであるストリームファイルA(XXXXX.M2TS)、あるいは、MP4ファイルであるストリームファイルB(XXXXX.MP4)が平文である場合に、ファイル全体をメモリに展開する、あるいは、ハードディスクに一旦保存するなどの動作は、セキュリティ面から許容されないことがある。
【0064】
したがって、ファイル生成装置10は、平文の元ファイルであるストリームファイルA(XXXXX.M2TS)のうち、MP4ファイルへの変換が終了した領域から順に、その領域を削除してもよい。また、ファイル生成装置10は、MP4ファイルであるストリームファイルB(XXXXXX.MP4)を暗号化するときには、そのMP4ファイルに含まれる“Movie fragment”、あるいは、所定の数のMP4サンプルなどの部分が生成される度に、その生成された部分を順に暗号化してもよい。なお、暗号化の前後でデータサイズが変化しないような暗号化方式を用いれば、暗号化の有無に関わらず、コピーされるデータの領域は変化しない。
【0065】
また、コピーマニフェストファイルは、元ファイルであるストリームファイルA(XXXXX.M2TS)が暗号化されているかどうかを示してもよい。あるいは、コピーマニフェストファイルは、そのストリームファイルAに多重化された符号化データを暗号化されたまま変換するのか、その暗号化された符号化データを平文にしてからMP4ファイルに変換した後に再び暗号化するのかなどを示してもよい。
【0066】
図7は、差分ファイルおよびコピーマニフェストファイルを生成する方法を説明するための図である。
【0067】
差分ファイル(XXXXX.DMP4)とコピーマニフェストファイル(XXXXX.CMNF)は次のようにして生成することが可能である。オーサリングの段階で、元ファイルであるストリームファイルA(XXXXX.M2TS)をフォーマット変換することにより、MP4ファイルである変換後のストリームファイルB(XXXXX.MP4)を生成する。次に、元ファイルであるストリームファイルAと、ストリームファイルBとのそれぞれの間で、互いに一致するデータを含む少なくとも1つの部分を検索する。このとき、それぞれの部分のデータサイズが最も大きくなるように検索する。次に、ストリームファイルBに含まれる、上述のように検索された部分以外の残りの部分のそれぞれを、ストリームファイルBに含まれている順番にしたがって連結することにより、差分ファイルを生成する。このときの、各ファイルの相関関係結果を、“COPY MANIFEST”としてコピーマニフェストファイルに記録する。
【0068】
なお、上述の検索は、ストリームファイルAとストリームファイルBとのそれぞれに含まれるデータを、それぞれのファイルの先頭から後方へ向かう方向に順次取得し、それらのデータを比較することによって行われる。そして、その比較は、上述の方向と逆方向に戻ることなく行われる。これにより、上述の変換処理(コピー処理)を、シーケンシャルに、つまり1つの連続した処理によって行うことが可能となり、高速化または少メモリ化を実現することができる。
【0069】
なお、ビデオおよびオーディオをMPEG2−TSで多重化する際には、Iピクチャなど符号量の大きいピクチャのデータがアンダーフローしないように、ビデオに含まれる所定のPTS(Presentation TimeStamp)のピクチャが、オーディオに含まれるその所定のPTSと同一のPTSのフレームに比べて時間的に前に多重化されることがある。一方で、ビデオおよびオーディオをMP4で多重化する際には、“Movie fragment”におけるビデオの先頭ピクチャのPTSとオーディオの先頭フレームのPTSとが一致、あるいは近傍となるように、多重化されることが一般的である。
【0070】
このように、ストリームファイルAとストリームファイルBにおいて、オーディオ、ビデオ、またはテキストの多重化単位が異なると、変換処理をシーケンシャルに行うことができないことがある。その結果、読出し、あるいは、書き込みのポインタを順次、前後に移動させながら変換することも生じる。したがって、変換処理が1つの連続した処理で行えるかどうか、あるいは、1つの連続した処理で行えない場合に、後戻りが必要な最大データサイズなどを、コピーマニフェストファイルに登録してもよい。
【0071】
なお、ストリームファイルAとストリームファイルBとに対して行われる、一致するデータを含む部分の検索が、小さいデータの単位で行われると、コピーマニフェストファイルのデータサイズが大きくなったり、変換処理が煩雑になる。このため、特定の閾値を設けてもよい。例えば、互いに8バイト以上一致するデータを含む部分のみをコピーマニフェストファイルに登録する。ストリームファイルBに含まれる、その部分以外の残りの部分のそれぞれが、ストリームファイルAのデータと一致する8バイト未満のデータを含んでいても、それらの残りの部分に含まれるデータは差分ファイルに格納される。また、この閾値を、コピーマニフェストファイルに“MIN COPY SIZE: 8 bytes”のように記述しても良い。
【0072】
また、差分ファイルを用いずに、MP4ファイルにおける多重化単位を示すコピーマニフェストファイルを用いて、MPEG−2TSのファイルをMP4のファイルに変換してもよい。例えば、MP4では、オーディオ、ビデオ、あるいは、テキストがそれぞれ異なる“Movie fragment”として多重化される。このとき、復号順で“Movie fragment”の先頭および最終となるオーディオフレームおよびビデオピクチャのそれぞれのDTS、あるいは、MPEG−2TSのファイルの先頭からのバイトオフセット値などを、メディアの識別情報と共に登録してもよい。なお、“Movie fragment”の登録順は、MP4のファイルにおける“Movie fragment”の出現順と一致するものとする。
【0073】
図8は、本実施の形態におけるファイル生成方法のフローチャートである。
【0074】
本実施の形態におけるファイル生成方法は、ファイル生成装置10がMP4ファイルを生成する方法である。このファイル生成方法では、まず、ファイル生成装置10の元ファイル取得部11は、MP4と異なるファイルフォーマットで構成されている元ファイルを取得する(ステップS11)。次に、差分ファイル取得部12は、その元ファイルに含まれていないデータを含む差分ファイルを取得する(ステップS12)。次に、手順ファイル取得部13は、MP4ファイルを生成するための手順を示す手順ファイルを取得する(ステップS13)。そして、生成部14は、その手順ファイルに示される手順にしたがって、差分ファイルに含まれるデータと、元ファイルに含まれるデータとを組み合わせることによって、上述のMP4ファイルを生成する(ステップS14)。例えば、ステップS11では、元ファイル取得部11は、MPEG2−TSのファイルフォーマットで構成されている元ファイルを取得する。
【0075】
これにより、予め定められた手順にしたがって、差分ファイルに含まれるデータと、元ファイルに含まれるデータとを組み合わせることによってMP4ファイルが生成される。したがって、MPEG2−TSなどのファイルフォーマットによって構成される元ファイルを、映像ストリームまたは音声ストリームなどの各ストリームに戻すことなく、MP4ファイルを簡単に生成することができる。また、元ファイルが暗号化されていてもそれを復号して再暗号化する必要がない。したがって、MP4ファイルを生成するための処理負荷を抑えることができる。
【0076】
また、ステップS11〜S13では、元ファイル取得部11、差分ファイル取得部12、および手順ファイル取得部13はそれぞれ、光ディスクから元ファイル、差分ファイルおよび手順ファイルを読み出すことによってそれらのファイルを取得する。これにより、MP4ファイルの生成に必要となる全てのファイルが1つの光ディスクから取得されるため、それらのファイルを探す手間を省くことができ、MP4ファイルをより簡単に生成することができる。
【0077】
ここで、手順ファイルには、差分ファイルに含まれる部分の範囲と、元ファイルに含まれる部分の範囲とが交互に配列されるように、差分ファイルに含まれる複数の部分のそれぞれの範囲と、元ファイルに含まれる複数の部分のそれぞれの範囲とが記述されている。そこで、ステップS14では、生成部14は、手順ファイルに記述されている各範囲の順に、その各範囲によって示される部分を組み合わせることによって、MP4ファイルを生成する。これにより、MP4ファイルに含まれる各部分をそのMP4ファイルの先頭側から順に生成することができ、後戻りすることがないため、MP4ファイルをより簡単に生成することができる。
【0078】
また、差分ファイルに含まれる複数の部分のそれぞれの範囲は、データサイズによって手順ファイルに記述されている。一方、元ファイルに含まれる複数の部分のそれぞれの範囲は、その部分の開始位置とデータサイズとによって手順ファイルに記述されている。これにより、手順ファイルの記述に基づいて、差分ファイルおよび元ファイルから適切な部分をコピーまたは取得して組み合わせることができる。また、差分ファイルに含まれる部分の範囲の記述に開始位置が用いられないため、手順ファイルのデータサイズを抑えることができる。
【0079】
また、手順ファイルにはMP4ファイルのデータサイズが記述されている。そこで、ステップS14では、さらに、生成部14は、手順ファイルに記述されているMP4ファイルのデータサイズに基づいて、そのMP4ファイルを記録するだけの空き容量がメディアにあるか否かを判定してもよい。これにより、メディアにMP4ファイルを記録するだけの空き容量があるか否かが判定されるため、空き容量がない場合には、そのMP4ファイルの生成を事前に中止するなどの処理を行うことができる。つまり、エラーの発生を未然に防ぐことができる。
【0080】
また、手順ファイルにはMP4ファイルの属性が記述されている。そこで、ファイル生成装置10は、さらに、手順ファイルに記述されているその属性を読み出してもよい。
【0081】
これにより、MP4ファイルの生成前にMP4ファイルの属性を手順ファイルから読み出せば、所望のMP4ファイルが生成されるか否かを事前に判断することができる。
【0082】
また、手順ファイルにはMP4ファイルの再生に必要なバッファサイズが記述されている。そこで、ファイル生成装置10は、さらに、手順ファイルに記述されているそのバッファサイズを読み出してもよい。これにより、MP4ファイルの再生に必要なバッファサイズを手順ファイルから読み出せば、MP4ファイルを解析することなく、そのMP4ファイルが再生可能か否かを簡単に判断することができる。
【0083】
また、手順ファイルには、元ファイルの名称である第1のファイル名と差分ファイルの名称である第2のファイル名とが記述されている。そこで、ファイル生成装置10は、さらに、手順ファイルに記述されている第1のファイル名のファイルを元ファイルとして特定し、手順ファイルに記述されている第2のファイル名のファイルを差分ファイルとして特定してもよい。これにより、MP4ファイルの生成に用いられる元ファイルおよび差分ファイルを適切に取得することができる。
【0084】
また、ステップS14では、生成部14は、差分ファイルに含まれるデータであるMP4に対応するヘッダ情報を、元ファイルに含まれるデータと組み合わせる。これにより、MP4の適切なヘッダ情報を有するMP4ファイルを簡単に生成することができる。
【0085】
また、ステップS11では、元ファイル取得部11は、平文の状態の元ファイルを取得し、ステップS14では、生成部14は、生成されたMP4ファイルを暗号化してもよい。これにより、MP4への変換後に元ファイルを削除しておけば、その元ファイルに含まれていたデータをMP4ファイルとして残しておきながら、そのデータの秘匿性を確保することができる。
【0086】
ここで、ステップS14では、生成部14は、元ファイルを構成する部分が取得されるごとに、その部分に対応するMP4ファイルの部分を生成して暗号化し、MP4ファイルを構成する部分が暗号化されるごとに、その部分に対応する元ファイルの部分を削除してもよい。これにより、平文の元ファイルに含まれる全てのデータが一時的にも記憶領域に格納されることを防ぐことができ、そのデータの秘匿性をより確実に確保することができる。
【0087】
(変形例1)
上記実施の形態では、差分ファイルおよびコピーマニフェストファイルを用いてMP4ファイルを生成したが、これらのファイルを用いずにMP4ファイルを生成してもよい。本変形例に係るファイル生成方法では、それぞれ平文のヘッダを有する複数のSource PacketからなるMPEG2−TSのストリームファイルを、カウンタを用いてMP4のストリームファイルに変換する。これにより、MP4のストリームファイルが生成される。なお、MPEG2−TSのストリームファイルは元ファイルであり、MP4のストリームファイルはMP4ファイルである。
【0088】
図9は、本変形例におけるファイル生成方法を説明するための図である。
【0089】
MPEG2−TSのストリームファイル(つまりコンテンツ)は、上述のように複数のSource Packetから構成されている。なお、
図9において、Source Packetは、SPと略して示されている。
【0090】
本変形例におけるMPEG2−TSのストリームファイルに含まれる各Source Packetでは、Source Packetに含まれるデータのうち、TS Payload部分のみが暗号化されている。つまり、Source Packetに含まれるデータのうち、TS_extra_headerと、TS Headerとは暗号化されておらず、平文である。
【0091】
暗号化には、AES−CTR(CounTeR)モードが用いられる。なお、AES−CTRモードでは、カウンタの値を使った暗号化および復号が行われる。
図9に示すように、ビデオ用のカウンタ(AES Counter for Video)の値を用いて、それぞれビデオのデータを含む複数のTS Paylordが暗号化され、オーディオ用のカウンタ(AES Counter for Audio)の値を用いて、それぞれオーディオのデータを含む複数のTS Paylordが暗号化される。ビデオ用のカウンタは、
図9に示す矢印にしたがってカウント値が増加するように、ビデオのSource Packetのデータのみをカウントする。オーディオ用のカウンタは、
図9に示す矢印にしたがってカウント値が増加するように、オーディオのSource Packetのデータのみをカウントする。なお、AES−CTRモードでの暗号化の詳細については後述する。
【0092】
ファイル生成装置は、MPEG2−TSのストリームファイルに含まれる複数のSource Packetのそれぞれのうち、TS Payloadのみを取り出すことによって、MPEG2−TSのストリームファイルを、MP4のストリームファイルに簡単に変換することができる。
【0093】
図10Aは、AES−CTRモードによるデータの暗号化を説明するための図である。
【0094】
暗号化の際には、鍵と初期値であるIV(Initial Vector)とが用いられる。まず、鍵を用いてIVを暗号化する。この暗号化によって得られた値と、暗号化対象のデータの先頭の16Bytes(
図10Aに示すm1)との排他的論理和の演算によって、その先頭の16Bytesに対応する暗号文c1が生成される。暗号化対象のデータに含まれる次の16Bytes(
図10Aに示すm2)のデータ(ブロック)に対しては、IV=IV+1のように、IVを更新した後に、上述の先頭の16Bytesに対する処理と同じ処理を行う。これにより、次の16Bytesのデータに対応する暗号文c2が生成される。上述のように更新されるIVは上述のカウンタ値であって、
図9に示すビデオ用のカウンタおよびオーディオ用のカウンタはそれぞれIV=IV+1の演算を行う。
【0095】
このような処理を連続して行うことで、16Bytes以上の長いデータに対しても暗号文を作成することができる。なお、暗号化対象のデータの長さが16Bytesの倍数になっていない場合には、末尾のブロックにおいて、排他的論理和をビット単位で行うことによって暗号文が生成される。
【0096】
図10Bは、AES−CTRモードによるデータの復号を説明するための図である。
【0097】
復号の際には、復号対象のデータに対して、暗号化の場合と全く同じ処理が行われる。つまり、復号の際にも、鍵を用いてIVを暗号化する処理が行われる。
【0098】
このように、本変形例に係るファイル生成方法は、MP4ファイルを生成するファイル生成方法であって、複数のパケットからなる元ファイルを取得し、前記元ファイルに含まれるパケットごとに、当該パケットのうち、平文の状態にあるヘッダ情報を除く、残りの暗号化されているペイロード部分のみを取得して組み合わせてMP4ファイルを生成する。例えば、前記元ファイルの取得では、MPEG2−TSのファイルフォーマットで構成されている前記元ファイルを取得する。これにより、MPEG2−TSなどのファイルフォーマットによって構成される元ファイルを、映像ストリームまたは音声ストリームなどの各ストリームに戻すことなく、MP4ファイルを簡単に生成することができる。また、元ファイルを復号して再暗号化する必要がない。したがって、MP4ファイルを生成するための処理負荷を抑えることができる。
【0099】
ここで、前記元ファイルに含まれる前記複数のパケットのうち、ビデオのデータを含む複数のパケットのそれぞれのペイロードは、ビデオ用の第1のカウンタのカウンタ値を用いて暗号化され、オーディオのデータを含む複数のパケットのそれぞれのペイロードは、前記第1のカウンタと異なるオーディオ用の第2のカウンタのカウンタ値を用いて暗号化されている。前記第1のカウンタは、前記元ファイルの先頭から後に向かって、ビデオに対応する複数のパケットのそれぞれに含まれるデータのみをカウントし、前記第2のカウンタは、前記元ファイルの先頭から後に向かって、オーディオに対応する複数のパケットのそれぞれに含まれるデータのみをカウントする。これにより、第1のカウンタがビデオ専用のカウンタとして用いられるため、MP4ファイルにおいて、ビデオに対応する複数のパケットのそれぞれのペイロードが組み合わされて構成されるビデオエレメンタリーを、簡単に復号することができる。同様に、第2のカウンタがオーディオ専用のカウンタとして用いられるため、MP4ファイルにおいて、オーディオに対応する複数のパケットのそれぞれのペイロードが組み合わされて構成されるオーディオエレメンタリーを、簡単に復号することができる。
【0100】
なお、前記元ファイルは複数のAligned Unitからなり、前記複数のAligned Unitのそれぞれは複数のSource Packetからなる。前記元ファイルに含まれる前記複数のパケットは、前記複数のAligned Unitのそれぞれに含まれる複数のSource Packetである。また、前記ペイロードはTS Payloadであり、前記ヘッダ情報は、TP_extra_headerおよびTS Headerからなる。
【0101】
(変形例2)
上記実施の形態では、差分ファイルおよびコピーマニフェストファイルを用いてMP4ファイルを生成したが、これらのファイルを用いずにMP4ファイルを生成してもよい。本変形例に係るファイル生成方法では、補助情報を含むMPEG2−TSのストリームファイルを、その補助情報を用いてMP4のストリームファイルに変換する。これにより、MP4のストリームファイルが生成される。
【0102】
MPEG2−TSとMP4においては、アクセスユニットのデータの多重化方法が一部異なるため、MPEG2−TSのデータをMP4ファイルに格納する際には、アクセスユニットを複数の部分に分離してそれらの部分を別々に格納する必要がある。基本的には、MPEG2−TSにおけるアクセスユニットは、ビデオのピクチャまたはオーディオのフレームの復号に必須となる初期化情報と、ピクチャまたはフレームの符号化データとを共に含む。一方、MP4ファイルにおけるアクセスユニット(MP4では、サンプルまたはMP4サンプルと呼ばれる)は、ピクチャまたはフレームの符号化データのみから構成され、復号に必要な初期化情報は、MP4ファイルのヘッダ情報として符号化データとは別に格納される。
【0103】
以下に、MPEG2−TSによって多重化された符号化データをMP4ファイルに変換する際に、変換に係る処理量を低減させるための補助情報、および、補助情報を使用した多重化フォーマットの変換方法について説明する。特に、符号化データが暗号化されている場合には、暗号化を解いて再暗号化する際の処理量が大きい。本変形例では、符号化データの暗号化を解かずに、データのコピーのみでMP4ファイルへの変換を行うことができる。
【0104】
なお、変換前の元ファイルである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)などであってもよい。以下では、元ファイルをトランスポートストリームとして説明する。
【0105】
図11は、トランスポートストリームに格納されるMPEG−4 AACのアクセスユニットをMP4ファイルに格納する例を示す図である。
【0106】
トランスポートストリームにおけるMPEG−4 AACのアクセスユニットは、LATM(Low Overhead Audio Transport Multiplex)ヘッダ、PayloadLengthInfo()、および、PayloadMux()の3種類のデータから構成される。LATMヘッダには、チャネル数およびサンプリング周波数などの、MPEG−4 AACの符号化データ(AACデータともいう)の復号に必要な初期化情報が含まれる。より詳細には、LATMヘッダ内のAudioSpecificConfig()に、その初期化情報が格納される。PayloadLengthInfo()には、PayloadMux()のサイズが格納され、PayloadMux()に、AACデータが格納される。
【0107】
このアクセスユニットのデータを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に格納される。
【0108】
図12は、トランスポートストリームに格納されるMPEG−4 AVC(Advanced Video Coding)のアクセスユニットをMP4に格納する例を示す図である。
【0109】
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に格納される。
【0110】
なお、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を削除するかどうかを切替えてもよい。
【0111】
また、次世代の動画像符号化方式であるHEVC(High Efficiency Video Coding)のデータは、MPEG−4 AVCと同様に、NALユニットによって構造され、SPSおよびPPSなどの初期化情報を有する。HEVCのデータをMP4ファイルに格納する際には、初期化情報をサンプルデータに含めてもよい。したがって、トランスポートストリームをMP4ファイルに変換する際に、トランスポートストリームにおけるアクセスユニットからmdatに格納されるデータのうち、初期化情報を削除するかどうかを、符号化方式の種類に応じて判定し、その判定結果に応じて処理してもよい。
【0112】
上述のように、MPEG−4 AACの符号化データをMP4ファイルに格納する際には、LATMヘッダはアクセスユニットから分離される。さらに、PayloadLengthInfo()およびPayloadMux()のみがサンプルデータとしてmdatに格納される。以降、PayloadLengthInfo()とPayloadMux()とを合わせて、LATMペイロードと呼ぶ。
【0113】
そこで、本変形例では、MPEG−4 AACのアクセスユニットのデータを複数のTSパケットに格納する際には、LATMヘッダとLATMペイロードとを別々のTSパケットに格納する。これにより、LATMヘッダを容易に分離することができる。
【0114】
図13Aは、LATMヘッダとLATMペイロードとのTSパケットへの格納例を示す図である。LATMヘッダとLATMペイロードとのそれぞれのデータが同一TSパケットのペイロード内に混在しないように、必要に応じてスタッフィングが行われる。例えば、アクセスユニット1のLATMヘッダが先頭のTSパケットのペイロードに格納される。このとき、LATMヘッダのサイズがTSペイロードのサイズに満たない場合には、TSペイロードの残りの領域に対してスタッフィングが行われる。なお、
図13Aに示す例では、PESパケットは記載されていないが、実際には、アクセスユニットのデータはPESパケットのペイロードに格納され、PESパケットのデータがTSパケットのペイロードに格納される。
【0115】
次に、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ペイロードのサイズとを含む。
【0116】
図13Bは、AU_infoテーブルのシンタックスの一例を示す図である。
【0117】
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テーブルを使用してもよい。
【0118】
このようなアクセスユニット内の各構成要素のサイズまたはデータオフセットを示すことにより、MP4ファイルへの変換のために分離されるデータを特定する手法を、MPEG−4 AVCの符号化データに対して適用してもよい。つまり、MPEG−4 AVCの符号化データをMP4ファイルに格納する際に、SPSおよびPPSのそれぞれのNALユニットを分離するために、上述の手法を適用してもよい。
【0119】
図13Cは、アクセスユニット内の構成要素毎に、MP4ファイルのサンプルデータからその構成要素を除外する必要があるかどうかを示すためのAU_infoテーブルのシンタックスの一例を示す図である。
【0120】
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は、サンプルデータからデータユニットを除外すること、つまりサンプルデータとしてデータユニットをコピーしないことを示す。
【0121】
なお、conversion_modeが1である場合には、そのconversion_modeは、データユニットを除外した後のそのデータユニットの取り扱いを示してもよい。例えば、そのconversion_modeは、サンプルデータからデータユニットを除外したうえで、そのデータユニットをサンプルエントリに格納することなどを示す。
【0122】
また、複数のデータユニットのそれぞれの情報は復号順で昇順となるように格納される。例えば、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パケット内の全アクセスユニットに含まれるデータユニットの総数を示す。
【0123】
なお、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テーブルには、ランダムアクセスユニットを構成する全てのアクセスユニットに関する情報が格納される。
【0124】
図14は、本変形例に係るファイル生成装置の構成を示すブロック図である。
【0125】
本変形例に係るファイル生成装置100は、AU_infoテーブルを含むトランスポートストリームをMP4ファイルに変換することによって、そのMP4ファイルを生成する。このファイル生成装置100は、補助情報サーチ部101と、補助情報解析部103と、生成部104とを備える。補助情報サーチ部101は、トランスポートストリームから補助情報であるAU_infoテーブルをサーチする。補助情報解析部103は、そのサーチ結果に基づいて、AU_infoテーブルが存在するか否かを判定する。さらに、補助情報解析部103は、AU_infoテーブルが存在すると判定すると、そのAU_infoテーブルを解析する。生成部104は、補助情報解析部103による解析結果に基づいてMP4ファイルを生成する。
【0126】
生成部104は、具体的には、サンプル生成部104aとサンプルエントリ生成部104bとを備える。サンプル生成部104aは、LATMペイロードのデータ、またはSPSおよびPPS以外のNALユニットなどを、サンプルデータとしてMP4ファイルのmdatに格納する。サンプルエントリ生成部104bは、LATMヘッダのデータ、またはSPSおよびPPSのそれぞれのNALユニットなどを、MP4ファイルのmoov内のstsdにおけるサンプルエントリに格納する。
【0127】
このようなファイル生成装置100によって、上述のAU_infoテーブルを含むトランスポートストリームをMP4ファイルに簡単に変換することができる。
【0128】
上述のように、MPEG2−TSとMP4とでは、オーディオまたはビデオの符号化データを格納する際に、復号時に必要となる初期化情報の格納場所が異なる。さらに、MPEG2−TSとMP4とでは、MPEG−4 AVCまたはHEVCにおけるNALユニットの格納フォーマットが異なる。したがって、トランスポートストリームからMP4ファイルへの変換には、格納フォーマットの変換が必要である。以下、
図15Aから
図15Cを用いて、MPEG2−TSとMP4におけるNALユニットの格納フォーマットについて説明する。
【0129】
図15Aは、NALユニットの概略構造を示す図である。
【0130】
NALユニットは、ヘッダとペイロードとから構成される。そのヘッダには、ペイロードに格納されるデータの種別を示すタイプ情報が格納されている。
【0131】
図15Bは、MPEG2−TSにおけるNALユニットの格納フォーマットの例を示す図である。MPEG2−TSにおいては、NALユニットの境界を識別するために、スタートコードと呼ばれる固有のビット列が識別情報としてNALユニットに付加される(以降、このような識別情報の形式をスタートコード形式と呼ぶ)。復号装置などは、そのスタートコード、及び、NALユニットのヘッダに格納されているタイプ情報をサーチすることで、所望のNALユニットを分離することができる。
【0132】
図15Cは、MP4におけるNALユニットの格納フォーマットの例を示す図である。MP4においては、NALユニットの境界を識別するために、NALユニットのデータサイズを識別情報として示すフィールドがNALユニットに付加される(以降、このような識別情報の形式をNALサイズ形式と呼ぶ)。ここで、データサイズを示すフィールドのフィールド長は、サンプルエントリ内におけるAVCDecoderConfigurationRecordの中に格納される。AVCDecoderConfigurationRecordは、復号時の初期化情報などが格納される領域である。復号装置などは、NALユニットのデータサイズに基づいて所望のNALユニットを分離することができる。
【0133】
以上のように、MPEG2−TSとMP4とでは、NALユニットの境界を示す識別情報の形式が、スタートコード形式であるか、NALサイズ形式であるかという点についても異なる。したがって、トランスポートストリームをMP4ファイルへ変換する際には、NALユニットの境界を示す識別情報を変換する必要がある。なお、NALユニットの格納フォーマットは符号化方式毎に規定されるため、オーディオまたはビデオの符号化方式を参照して、MP4ファイルへの変換の動作を切替えればよい。
【0134】
MP4ファイルに変換する際に、NALサイズ形式の符号化方式のデータを扱う場合には、NALユニットのデータサイズが必要となる。したがって、アクセスユニットを構成するNALユニットのデータサイズが予め取得できることが望ましい。こうすることで、スタートコード形式のアクセスユニットにおいてスタートコードをサーチし、NALユニット境界を検出することによって、NALユニットのデータサイズを決定する際の処理量を削減することができる。
【0135】
つまり、本変形例におけるトランスポートストリームにおけるアクセスユニットの先頭には、そのアクセスユニットに含まれる各NALユニットのデータサイズを示すサイズ情報が格納されている。
【0136】
図16Aは、本変形例に係るトランスポートストリームにおけるアクセスユニットの構成例を示す図である。この
図16Aに示すように、トランスポートストリームに多重化されるアクセスユニットを構成する各NALユニットのデータサイズを示すサイズ情報が、アクセスユニットの先頭に格納されている。例えば、このサイズ情報は、新規に定義されたサイズ情報NALユニットに格納される。NALユニットのタイプには、プライベート用およびユーザーデータ用が存在する。そこで、これらの中からいずれかのタイプを選択し、その選択されたタイプのNALユニットをサイズ情報NALユニットとして使用する。サイズ情報については暗号化の必要がないため、このサイズ情報NALユニットは平文で格納される。
【0137】
図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パケットのペイロードの先頭に配置してもよい。
【0138】
図16Cは、サイズ情報NALユニットに含まれるサイズ情報のシンタックスの他の例を示す図である。
【0139】
図16Aに示すように、トランスポートストリームにおけるNALユニットの前には、スタートコードに加えて、zero_byteなど可変長のコードが含まれることがある。したがって、
図16Cに示すように、NALユニットのスタートコードを含む識別情報のデータサイズ(
図16Cに示すprefix_size)をサイズ情報に格納してもよい。なお、識別情報のデータサイズが固定であれば、MPEG2−TSのデスクリプタ、またはMP4ファイルへの変換時の補助データに、その識別情報のデータサイズを格納してもよい。さらに、NALサイズ形式では、MP4ファイルへの変換後のNALユニットのデータサイズを示すフィールドのフィールド長も示してもよい。
【0140】
また、識別情報をデータユニットとみなし、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ペイロードなどを判別することなどが可能である。さらに、データユニットが暗号化されているかどうかを示すフィールドを別途設けてもよい。
【0141】
conversion_modeが異なるデータユニットを、異なるTSパケットに格納してもよい。また、conversion_modeが2である場合に、ヘッダ情報としてサンプルエントリに格納されるデータユニットを平文としてTSパケットに格納しておいてもよい。
【0142】
暗号化については、スライスデータのNALユニットのみを暗号化し、それ以外の部分は平文としてもよい。暗号化はTSパケット単位で行われるため、TSパケットのペイロードにおいて平文と暗号化部分とは混在できず、AUDなどはデータサイズが小さく、AUDを独立したパケットとして格納するとスタッフィングが増加して多重化効率が低下するためである。また、暗号化されたスライスのNALユニットデータの境界がTSパケットのペイロードの終端にアラインされない場合には、スタッフィングが必要となる。スタッフィングを行う場合には、TSパケットヘッダのadaptation_fieldを用いるか、符号化データに、Filler Data NALユニット、またはFiller Data用のSEIなどを挿入する方法がある。TSパケットヘッダのadaptation_fieldを用いる場合には、adaptation_fieldは平文にする必要があるが、可変長の領域に対して暗号化するか否かの処理を切替えることは負荷が高い。したがって、スタッフィングを行う際には、符号化データにおけるスタッフィング用のデータ構造を用いて、NALユニットデータの境界がTSパケットのペイロード終端にアラインさせることが望ましい。
【0143】
また、TSパケットのAdaptation field、あるいは、アクセスユニット内に、ユーザーデータ格納用のSEI(User unregistered SEI)を挿入して、そのSEIにサイズ情報を格納してもよい。MP4ファイルに変換する際には、これらのいずれか1つ以上の方法により格納されたNALユニットのサイズ情報に基づいて、スタートコード形式をNALサイズ形式に変換することができる。また、サイズ情報が格納されているかどうかを示す情報を、MPEG2−TSにおけるデスクリプタなどを用いて格納してもよい。
【0144】
図17は、本変形例に係るファイル生成装置100がMP4ファイルを生成する処理動作を示すフローチャートである。具体的には、このフローチャートは、
図13Cに示すAU_infoテーブルを参照してトランスポートストリームをMP4ファイルに変化する処理動作の例を示す。
【0145】
ファイル生成装置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は、符号化データにおける各アクセスユニットの境界をサーチしてそれらのアクセスユニットを分離する。
【0146】
ステップ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テーブル内に示してもよい。
【0147】
なお、上記実施の形態および各変形例において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記実施の形態および各変形例におけるファイル生成装置などを実現するソフトウェアは、
図8または
図17などに示すフローチャートに含まれる各ステップを、コンピュータに実行させる。
【0148】
以上、一つまたは複数の態様に係るファイル生成装置について、実施の形態および各変形例に基づいて説明したが、本発明は、この実施の形態および各変形例に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を実施の形態および各変形例に施したものや、実施の形態および各変形例における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。
【0149】
例えば、実施の形態および各変形例では、MPEG2−TSによって構成されたファイルを元ファイルとして用いた。しかし、元ファイルは、MP4と異なるファイルフォーマットによって構成されているファイルであれば、MPEG2−TSのファイル以外のどのようなファイルまたはトランスポートストリームであってもよい。
【0150】
また、以下のような場合も本発明に含まれてもよい。
【0151】
(1)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0152】
(2)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
【0153】
(3)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【0154】
(4)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【0155】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【0156】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【0157】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【0158】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【0159】
(5)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【0160】
以上、本発明の一つまたは複数の態様に係るデータ送信方法およびデータ再生方法などについて、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の一つまたは複数の態様の範囲内に含まれてもよい。