説明

画像編集装置およびその制御方法およびプログラム

【課題】 複数の動画ファイルを結合して1つの動画ファイルを生成する場合に、複数の動画ファイルを個別にレンダリングし、個々のレンダリング結果を繋ぎ合わせると、符号化単位に制限があるハードウエアを用いて再生する際の互換性が下がる問題があった。
【解決手段】 第1の動画ファイルのフレームのうち、所定の符号化単位で区切ったときに端数となるフレームを一時的に格納しておく。格納されている端数のフレームをデコードした結果に対して、第1の動画ファイルに結合される第2の動画ファイルに含まれるフレームをデコードした結果を加えてエンコードする。ここで、格納されている端数のフレームに対して、第2の動画ファイルに含まれるフレームを加えると、所定の符号化単位で区切ったときに端数となるフレームが発生しない。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の動画ファイルを結合して1つの動画ファイルを作成するための画像編集装置およびその制御方法およびプログラムに関する。
【背景技術】
【0002】
従来、動画ファイルのフォーマットの種類は多数、存在する。そして、多種のフォーマットの動画ファイルを結合して一つの動画ファイルとして残す編集が行われている。(例えば特許文献1参照)
また、一般的に、デコーダを必要な分だけロードして動画ファイルをデコードした後、一つの動画ファイルとして保存することが行われている。この場合、解像度が大きい動画ファイルをたくさん扱うと、メモリを大量に消費してしまう。そこで、この対策として、動画ファイルを個別にレンダリングして繋ぎ合わせることが行われている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−300528号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、複数の動画ファイルを個別にレンダリングし、個々のレンダリング結果を繋ぎ合わせると、符号化単位が固定または所定の範囲内の制限があるハードウエアを用いて再生する際の互換性が下がる問題があった。再生の互換性が下がると、例えば、動画ファイルの再生時にノイズが現れたり、動画ファイルの再生が停止してしまう。
【課題を解決するための手段】
【0005】
上記課題を解決するため、複数の動画ファイルを結合する画像編集装置において、前記動画ファイルをデコードするためのデコーダを記憶する記憶手段と、前記デコーダによりデコードされた前記動画ファイルを所定の符号化単位でエンコードするエンコード手段と、前記エンコード手段によりエンコードされたエンコード結果を結合して、結合ファイルを生成する生成手段と、第1の動画ファイルのフレームのうち、前記第1の動画ファイルのフレームを前記所定の符号化単位で区切ったときに端数となるフレームを一時的に格納する格納手段とを有し、前記エンコード手段は、前記格納手段に格納されている端数のフレームをデコードした結果に対して、前記第1の動画ファイルに結合される第2の動画ファイルに含まれるフレームをデコードした結果を加えてエンコードし、前記端数のフレームに対して、前記第2の動画ファイルに含まれるフレームを加えると、前記所定の符号化単位で区切ったときに端数となるフレームが発生しないことを特徴とする。
【発明の効果】
【0006】
本発明によれば、再生機器の符号化単位の制限に合わせたエンコード結果を得られるため、動画ファイルを再生する際の互換性が下がることを防ぐことができる。
【図面の簡単な説明】
【0007】
【図1】本発明に係る画像編集装置の構成の一例を示すブロック図である。
【図2】本発明に係る動画ファイルの編集の一例を示す図である。
【図3】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図4】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図5】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図6】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図7】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図8】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図9】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【発明を実施するための形態】
【0008】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【0009】
(第1の実施形態)
本実施形態では、画像編集装置が動画編集プログラムを起動し、それにしたがって動作することにより実現される。画像編集装置は複数の動画ファイルを結合して1つの動画ファイルを生成して保存する、いわゆるストーリーボード編集を行う。ストーリーボード編集では、複数の動画ファイルを並べて結合するだけでなく、動画ファイルを重ねて合成したり、カット処理や画面効果をかけたりすることができる。編集対象となる動画ファイルの数に制限はない。
【0010】
また、動画ファイルのフォーマットには、例えばMotion JPEG、MPEG2、H.264等、いろいろな種類があるが、本実施形態ではH.264の場合について説明する。H.264のフレーム間圧縮における符号化単位は、MPEGで利用されているGOP(Group Of Pictures)とよばれる動画を構成する最小の単位構造である。符号化単位は、動画ファイルの中で固定値でもいいし、可変値でもよいが、本実施形態では、固定値の場合について説明する。なお、符号化単位は再生機器の能力にしたがって予め設定された値となる。
【0011】
まず、図1を参照して画像編集装置の構成を説明する。画像編集装置100はパーソナルコンピュータ装置などの情報処理装置によって実現される。110は画像編集装置100全体の動作を制御する制御部(中央演算処理装置、CPU)である。120は内部メモリである。130は、動画編集プログラムやオペレーティングシステム(OS)、動画ファイルを記憶するハードディスクである。140は外部記録媒体を扱うメディアドライブである。150は動画ファイルを表示するディスプレイである。160は音を出力するスピーカである。170はキーボードやマウスなどからなる操作部である。180は、PCIバスなどのコンピュータ内部の各処理を相互に接続するための内部バスである。制御部110はハードディスク130から動画編集プログラムを読み取って起動し、このプログラムコードを実行することにより、以下に説明する画像編集装置100の動作を実現する。なお、動画編集装置は単一の情報処理装置で実現してもよいし、必要に応じた複数の情報処理装置に各機能を分散して実現するようにしてもよい。複数の情報処理装置で構成される場合は、互いに通信可能なようにLocal Area Network(LAN)などで接続される。
【0012】
次に本実施形態において画像編集装置が実行する動画編集の手順を図面を参照して説明する。本実施形態ではMovie_A、Movie_B、Movie_Cというファイル名の3つの動画ファイルを編集対象とする場合について説明する。
【0013】
まず、画像編集装置の制御部110はエンコードするときの条件を取得する(図3のS301)。本実施形態ではエンコードするときの条件はGOP単位(符号化単位)が所定値に固定されていることである。GOP単位の固定値は、ユーザが操作部170を操作して所望の数値を入力して設定してもよい。あるいは、ユーザが操作部170を操作してエンコード結果を再生する対象機器のプロファイルを選び、それに対応する値をGOP単位の固定値として設定してもよい。あるいは、ユーザの入力操作無しに、エンコーダが保持している初期値をGOP単位の固定値として設定してもよい。GOP単位の固定値の設定方法はこれらに限らず、他の設定方法でもよい。また、エンコードするときの条件は、GOP単位以外にも、平均ビットレートや画像サイズなどのパラメータであってもよい。
【0014】
そして、制御部110は編集対象の動画ファイルを解析し、ステップS301で取得したGOP単位の固定値にしたがって一回のエンコード範囲を決定する(S302)。ステップS302の処理の詳細は図4を参照して後述する。図2において、Movie_A201、Movie_B202、Movie_C203はH.264でエンコードされた動画ファイルである。204はMovie_A201をGOP単位で区切ったときに端数がないところまでの範囲(nGOP)を示している。205はMovie_A201をGOP単位で区切ったときに端数となった部分を示している。206はMovie_A201の端数205とMovie_B202を足した範囲をGOP単位で区切ったときに端数がないところまでの範囲(mGOP)を示している。207はMovie_A201の端数205とMovie_B202の範囲をGOP単位で区切ったときに端数となった部分を示している。208は、Movie_B202の端数207とMovie_C203を足した範囲である。本実施形態の一回のエンコード範囲は204、206、208と決定される。
【0015】
次に制御部110は最初のエンコード範囲を設定する(S303)。本実施形態では最初にMovie_A201のnGOP204の範囲を設定し、制御部110はMovie_A201のnGOP204の範囲の動画ファイルをロードする。そして、動画ファイルがエンコードされた方式を解析し、解析結果に基づきデコードに必要なデコーダを決定する(S304)。解析方法としては例えば、動画ファイルに記述されたエンコード方式の情報を参照することが挙げられるがこれに限らない。本実施形態では解析の結果、Movie_A201のnGOP204の範囲の動画ファイルがH.264でエンコードされていると判定したものとし、必要なデコーダをH.264であると決定する。なお、後述するステップS310でエンコード範囲としてmGOP206の範囲を設定した場合は、ステップS304ではMovie_A201とMovie_B202がエンコードされた方式を解析し、デコーダを決定する。また、後述するステップS310でエンコード範囲として208の範囲を設定した場合は、ステップS304ではMovie_B202とMovie_c203がエンコードされた方式を解析し、デコーダを決定する。
【0016】
そして制御部110はステップS304で決定されたデコーダをロードする(S305)。ステップS303でnGOP204の範囲を設定した場合は、Decoder_A211がロードされ、ステップS303でmGOP206の範囲を設定した場合は、Decoder_A212とDecoder_B213がロードされる。また、ステップS303で208の範囲を設定した場合は、Decoder_B214とDecoder_C215がロードされる。
【0017】
そして制御部110はエンコーダをロードし(S306)、ステップS303で設定された範囲をステップS304で決定され、ステップS305でロードされたデコーダでデコードし、その出力結果をエンコードする(S307)。ステップS306ではnGOP204の範囲ではエンコーダ221がロードされ、mGOP206の範囲ではエンコーダ222がロードされ、208の範囲ではエンコーダ223がロードされる。また、ステップS307で、nGOP204の範囲をエンコーダ221でエンコードした結果が231であり、mGOP206の範囲をエンコーダ222でエンコードした結果が232であり、208の範囲をエンコーダ223でエンコードした結果が233である。ステップS307の処理の詳細は図5を参照して後述する。
【0018】
そして制御部110はエンコード結果を作成完了した後、エンコーダを開放し(S308)、デコーダを開放する(S309)。エンコード結果231の作成が完了するとエンコーダ221とデコーダ211が開放される。エンコード結果232の作成が完了するとエンコーダ222とデコーダ212と213が開放される。エンコード結果233の作成が完了するとエンコーダ223とデコーダ214と215が開放される。
【0019】
そして制御部110は編集対象の動画ファイル全てについてエンコードが完了したかどうか判断し、完了していた場合はステップS312へ遷移し、完了していない場合はステップS311へ遷移する。制御部110は次のエンコード範囲を設定し(S311)、ステップS304へ遷移する。
【0020】
編集対象の動画ファイル全てについてエンコードが完了すると、制御部110はエンコード結果231、232、233を結合し、結合ファイル240を生成する(S312)。結合結果240は先頭から順番にMovie_A、Movie_B、Movie_Cが連続して並んだ結果となる。
【0021】
ステップS302の処理の詳細を図4のフローチャート図を用いて説明する。
まず、画像編集装置100の制御部110は、編集対象の複数の動画ファイルのうち最初の動画ファイルの先頭を解析開始位置として設定(S401)し、ステップS401で設定された解析開始位置を取得する(S402)。ここでは、制御部110は編集対象のMovie_A201、Movie_B202、Movie_C203のうちMovie_A201の先頭を解析開始位置として設定し(S401)、取得する(S402)。
【0022】
制御部110はステップS402で取得された解析開始位置が最後の動画ファイルかどうかを判定し(S403)、最後の動画ファイルであればステップS413へ遷移し、最後の動画ファイルでなければステップS404へ遷移する。ステップS404において制御部110はステップS402で取得された解析開始位置にあるMovie_Aのフレーム数を取得し、ステップS402で取得された解析開始位置の前にGOP単位で端数となるフレームがあったかどうか判定する(S405)。GOP単位で端数となるフレームがあったかどうかは、後述のステップS408で一時的に格納されている値があるかどうかで判定する。端数となるフレームがあると判定された場合、制御部110はステップS408で保持されている値をステップS404で取得したフレーム数に加算し(S406)、GOP単位で区切ると、端数が出るかどうかを判定する(S407)。一方、端数となるフレームがないと判定された場合、制御部110はステップS404で取得したフレーム数をGOP単位で区切ると、端数が出るかどうかを判定する(S407)。
【0023】
ステップS407で端数が出ると判定された場合、制御部110は端数となったフレーム数を保持し(S408)、GOP単位の端数が発生する手前のGOP単位の終了位置をエンコードの終了位置として設定する(S409)。ここでは、205のフレーム数が端数のフレーム数として保持され、位置209がエンコードの終了位置として設定される。GOP単位で端数が出ないと判定された場合、制御部110は動画ファイルの終端をエンコード終了位置として設定する(S410)。制御部110はステップS409またはS410で設定されたエンコード終了位置を保持する(S411)。以上のように制御部110はステップS402からS411までの処理を実行することにより、最初のエンコード範囲を決定する。そして、制御部110は解析開始位置を次の動画ファイルの先頭に設定し(S412)、ステップS402からS412までの処理を繰り返す。そして、GOP単位で端数が発生するかどうかに関わらず、最後の動画ファイルの末尾をエンコード終了位置として設定し(S413)、保持する(414)。動画ファイルの終端部分は、再生が終了する位置であるのでGOPの単位より少ないフレーム数となっても再生時に問題は発生しないためである。以上のようにして、制御部110は、編集対象となる動画ファイルをGOP単位で区切り、エンコード範囲を調整した結果を得る。
【0024】
次にステップS307の処理の詳細を図5のフローチャートを用いて説明する。
制御部110はステップS301で取得したGOP単位の固定値をエンコーダに設定し(S501)、動画ファイルをエンコードした結果を出力して出力結果ファイルを作成する(S502)。エンコーダ221でエンコードした結果を出力して出力結果ファイル231を作成する。エンコーダ222でエンコードした結果を出力して出力結果ファイル232を作成する。エンコーダ223でエンコードした結果を出力して出力結果ファイル233を作成する。
【0025】
ステップS503において制御部110はエンコード時のレート制御情報、量子化パラメータを保存している状態かどうか判定する。ステップS307が2回目以降の処理のときエンコード時のレート制御情報、量子化パラメータを保存している状態となる。ステップS503でエンコード時のレート制御情報、量子化パラメータを保存していると判定された場合、ステップS504において制御部110はエンコードのレート制御情報、量子化パラメータを設定する。ここで、前回のエンコード範囲の終了時にステップS508で保存したエンコードのレート制御情報、量子化パラメータを再設定することで、前回のエンコード部分と今回のエンコード部分の画質の差を少なくすることができ、つなぎ目が滑らかになる。一方、エンコードのレート制御情報、量子化パラメータを保存していない場合、ステップS505へ移る。
【0026】
ステップS505において制御部110は、動画ファイルのうちステップS302で決定した範囲をデコードし、デコード結果をエンコーダへと渡す。デコード結果は、1フレームずつエンコーダへ渡してもよいし、GOP単位分のフレームを一括してエンコーダへ渡してもよい。そして、制御部110はデコード結果をエンコードし(S506)、エンコードが終了点に達したか判定する(S507)。終了点に達していない場合、ステップS505へ移り、終了点に達した場合、ステップS508において、制御部110はエンコードのレート制御情報、量子化パラメータを保存する。そして制御部110はエンコード結果の出力結果ファイルをクローズし(S509)、デコーダで使用した動画ファイルをクローズする(S510)。本実施形態では、出力結果ファイル231を作成完了後に、デコーダ211で使用していた動画ファイル201が開放され、出力結果ファイル232を作成完了後に、デコーダ212、213で使用していた動画ファイル201、202が開放される。また、出力結果ファイル233を作成完了後に、デコーダ214、215で使用していた動画ファイル202、203が開放される。
【0027】
なお、本実施形態では、全てのエンコード結果を個別の出力結果ファイルに出力した後に結合したが、エンコード結果を出力すると、次々に追記していくようにしてもよい。
【0028】
また、本実施形態では、エンコード範囲を切り替える時に、前回のエンコード時のレート制御情報、量子化パラメータを引き継ぐようにしたが、エンコードした動画を再生する機器での問題や画質に問題がなければ引き継ぐ処理を省略してもよい。
【0029】
また、本実施形態では、GOP単位に足りない端数のフレームがあるかどうかの判定を動画ファイルの終了点で動画ファイルごとに行った。これ以外にも動画ファイルに画面効果をつけるエフェクトの開始点・終了点や複数の動画を重ね合わせる効果をつける開始点・終了点で判定を行ってもよい。
【0030】
上記の通り本実施形態では、動画ファイルのデコードとエンコードを行う前に、編集対象の動画ファイルを解析する。そしてGOP単位の固定値にしたがって動画ファイルを区切った時に端数のフレームが出ないように連続する第1の動画ファイルと第2の動画ファイルに跨ってエンコード範囲を決定し、決定したエンコード範囲毎にエンコード処理を行うようにした。これにより、再生対象のGOP単位の制限に合わせたエンコード結果を得られる。また、デコーダをロードして一括処理しなくて済むため、メモリ消費量を少なくすることができる。また、中間ファイルに変換し動画編集を行う方法に比べ、中間ファイルに変換する処理をしなくて済むため、エンコード処理を短時間で行うことができる。
【0031】
(第2の実施形態)
第1の実施形態ではエンコード範囲を先に決定してからエンコード処理するようにした。これに対して、本実施形態では、デコードとエンコードの処理中に、所定の制限範囲内の任意の値をGOP単位として動画ファイルを区切ったときに端数のフレームを出さずにエンコードできるかどうか判断する場合について説明する。GOP単位の所定の制限の範囲とは、エンコードした映像を再生する機器の制約である。本実施形態ではGOP単位の所定の制限範囲は、最小値と最大値で指定された範囲である。
【0032】
本実施形態の画像編集装置が実行する動作について図2および図6〜図9を用いて説明する。なお、以下では第1の実施形態と同様の部分については説明を省略し、本実施形態に特有の部分について詳細に説明する。
【0033】
まず、制御部110はエンコード条件を取得する(S601)。本実施形態ではエンコード条件としてGOP単位の所定の制限範囲を示す最小値と最大値を取得する。そして、制御部110は動画ファイル毎にGOP単位の制限範囲に収まるようにデコードとエンコードを行う(S602)。本実施形態では、204、206、208の各範囲をデコードしエンコードする。各範囲の処理で、終了点を決定後、次の範囲に移るときにデコーダとエンコーダを開放し、次の範囲の処理への切り替えが行われる。また、メモリに空き容量が十分ある場合は、処理の切り替えを行わずに、次に必要になったデコーダを追加でロードして続きの処理を行う。そして、制御部110は編集対象の動画ファイルの最後までエンコードが完了したか判定し(S603)、エンコードが完了していれば、エンコード結果を結合する(S604)。エンコード処理を3回に分けて行った場合は、204、206、208の範囲をそれぞれエンコードした結果、231、232、233を結合し、一つの動画ファイル240を作成する。一方、エンコードが完了していない場合は、ステップS602へ移る。
【0034】
次に、ステップS602の処理の詳細について図7を参照して説明する。
制御部110はエンコーダをロードする(S701)。エンコード処理を3回に分けて行った場合は、エンコーダ221が最初のエンコード処理でロードされ不要になると開放され、次にエンコーダ222がロードされ不要になると開放され、最後にエンコーダ223がロードされ不要になると開放される。そして、制御部はエンコーダにステップS601で取得したエンコードの条件を設定し(S702)、エンコード結果を出力する出力結果ファイルを作成する(S703)。エンコード処理を3回に分けて行った場合は、231、232、233の出力結果ファイルが作成される。エンコードする範囲が204から206へ変わるときにデコーダとエンコーダを開放しなかった場合は、出力結果ファイル232は作成されないことになる。ステップS704において、制御部110は解析開始位置を取得する。初期値は編集対象の動画ファイルの先頭となり、2回目以降はステップS805で保持した値となる。ステップS705において制御ファイルはGOP単位の制限範囲をデコードをするときに使用する動画ファイルをロードし、それに適合するデコーダをロードし(S706)、デコードするフレーム数がGOPの制限範囲に収まるかどうかを判断する(S707)。本実施形態では動画ファイル201をロードした場合、デコード範囲によってデコーダ211か212がロードされ、動画ファイル202をロードした場合、デコード範囲によってデコーダ213か214がロードされる。また、動画ファイル203をロードした場合、デコーダ215がロードされる。ステップS707でデコードするフレーム数がGOPの制限範囲に収まると判断されれば、制御部110はGOPの制限範囲に収まるフレーム数をデコードし(S708)、デコードしたフレーム数をカウントする(S709)。ここで、デコードしたフレーム数をカウントしておくことで、編集対象の動画ファイルのどの位置をデコードしているか判別できる。そして、制御部110はデコーダの出力をエンコードし(S710)、エンコード結果を出力し(S711)、次のエンコード範囲の処理に移る。制御部110はステップS707からステップS711を繰り返すことでGOP単位の制限範囲で、204、206、208について次々とデコードとエンコードを繰り返し、エンコード結果として231、232、233を出力する。
【0035】
一方、ステップS707でデコードするフレーム数がGOPの制限範囲に収まらないと判断されれば、制御部110は図8のフローチャートに示す処理を実行する。
【0036】
まず、制御部110はGOPの制限範囲に収まらなかったフレーム数をデコーダのデコードする残フレーム数として保持する(S802)。ここで、205、207のフレーム数が保持される。そして、制御部110は編集対象の動画ファイルの中でエンコードが完了済みとなっている最後の位置が編集対象の最後の動画ファイル上にあるか判定する(S803)。最後の動画ファイル上にないと判定された場合はステップS805において制御部110は編集対象の動画ファイルの中でエンコードが完了した位置を保持する。本実施形態では、204、206の終了点が保持される。そして、制御部110は、メモリの空き容量を取得し(S806)、次のファイルのデコードで利用するメモリ使用量を算出する(S807)。本実施形態では、エンコード範囲204が完了し、次のエンコード範囲206に移る場合、動画ファイル201の次の動画ファイル202をデコードするデコーダ213のメモリ使用量を算出する。エンコード範囲206が完了し、次のエンコード範囲208に移る場合、動画ファイル202の次の動画ファイル203をデコードするデコーダ215のメモリ使用量を算出する。そして、制御部110はS806で取得したメモリの空き容量とS807で算出したデコーダのメモリ使用量からデコードを引き続き行うことができるかどうか判断する(S808)。デコードを引き続き行うことができると判定した場合、制御部110はステップS704の処理を実行する。本実施形態では、204から206へデコードしエンコードする範囲が変わるときにデコーダとエンコーダの開放しなかった場合は、222のエンコーダをロードせずに221のエンコーダを引き続き使うことができる。212のデコーダも同様に211のデコーダを引き続き利用することができる。206から208へデコードしエンコードする範囲が変わるときにデコーダとエンコーダの開放しなかった場合も、同様にロード済みのデコーダ、エンコーダを引き続き利用できる。223のエンコーダをロードせずにロード済みの222もしくは、221のエンコーダを引き続き使うことができる。214のデコーダも同様に213のデコーダを引き続き利用することができる。
【0037】
一方、ステップS808でできないと判定された場合、制御部110は図9のステップS906の処理を実行する。また、ステップS803で最後の動画ファイル上にあると判定された場合は、制御部110は図9のフローチャートに示す処理に移行する。
【0038】
図9は制御部110が、デコードしてエンコードする処理を切り替えるために、一旦、エンコーダとデコーダで使用していた動画ファイルをクローズして、エンコーダとデコーダを開放する処理を説明するためのフローチャート図である。
【0039】
制御部110は、ステップS802で保持したデコーダのデコードする残フレーム数がゼロかどうか判定し(S902)、デコーダのデコードする残フレーム数がゼロでない場合、残フレームをデコードする(S903)。そして、デコーダの出力をエンコードし(S904)、エンコード結果を出力し(S905)、エンコード結果の出力ファイルをクローズする(S906)。本実施形態では、231、232、233であらわされる、エンコード結果のうち使用していたものをクローズする。一方、ステップS902でデコーダのデコードする残フレーム数がゼロの場合、ステップS906の処理を実行する。ステップS903からS905の処理は、ステップS803で編集対象の最後の動画ファイルにGOP単位の制限範囲のうち最小値より少ない端数のフレームがあった場合に行われる。なお、動画ファイルの終端部分は再生が終了する位置なので再生時に問題は起きない。
【0040】
次に制御部110はエンコーダを開放する(S907)。エンコーダ221、222、223のうち使用していたものを開放する。また、制御部110はデコードに使用したファイルをクローズする(S908)。動画ファイル201、202、203のうち使用していたものをクローズする。また、制御部110はデコーダを開放する(S909)。本実施形態では、デコーダ211、212、213、214、215のうち使用していたものを開放する。
【0041】
ステップS704からステップS808において制御部110はメモリに空きがある範囲で、動画ファイルごとにGOP単位の制限範囲内でデコードしてエンコードする処理を実行する。さらに、これとともに使用していたデコーダとエンコーダを全て開放し、デコーダとエンコーダが使用していた動画ファイルもクローズする。
【0042】
なお、本実施形態では、GOP単位の制限範囲に足りない端数のフレームの判定をデコーダのデコードしたフレーム数と動画ファイルの終了点で動画ファイルごとに行った。デコードしたフレーム数以外にも、エンコードしたフレーム数や、デコード前に読み込んだフレーム数で行ってもよい。また、動画ファイルに画面効果をつけるエフェクトの開始点・終了点で判定を行ってもよい。複数の動画ファイルを重ね合わせる効果をつける開始点・終了点で判定を行ってよい。
【0043】
また、本実施形態では、デコーダの開放を行うタイミングをエンコーダの開放を行うタイミングで行ったが、デコーダの開放処理は、デコーダが使用されなくなった時点で実施するようにしてもよい。
【0044】
また、本実施形態では、メモリに空き容量がある場合に、次のファイルのデコードで使用するデコーダをロードするようにしたが、空き容量に関係なくエンコードを中断し、続きのエンコードを行うようにしてもよい。
【0045】
上記したように本実施形態によれば、再生対象のGOP単位の制限に合わせたエンコード結果を得られる。また、デコーダをロードして一括処理しないため、メモリ消費量を少なくすることができる。また、中間ファイルに変換し動画編集を行う方法に比べ、中間ファイルに変換する処理が無いため、早くエンコードを行うことができる。
【0046】
また、デコーダをメモリにロードする際にメモリに空き容量が無い場合は、一回処理を中断しデコーダ、エンコーダで利用していたメモリを開放し、その後処理を引き継ぎ続きからエンコード出来るようにした。これによって、編集対象の動画ファイルで使用するデコーダを全てロードして一括処理すると、メモリが足りなくなる場合でも、編集対象の動画ファイルをエンコードすることができるようになる。
【0047】
(他の実施形態)
本発明の目的は以下のように達成されることは言うまでもない。まず、前述した実施例の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ(またはCPUまたはMPU)が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0048】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM、DVDなどを用いることができる。
【0049】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけではない。例えば、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーションシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【0050】
さらに、以下のような処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。まず、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行う。

【特許請求の範囲】
【請求項1】
複数の動画ファイルを結合する画像編集装置において、
前記動画ファイルをデコードするためのデコーダを記憶する記憶手段と、
前記デコーダによりデコードされた前記動画ファイルを所定の符号化単位でエンコードするエンコード手段と、
前記エンコード手段によりエンコードされたエンコード結果を結合して、結合ファイルを生成する生成手段と、
第1の動画ファイルのフレームのうち、前記第1の動画ファイルのフレームを前記所定の符号化単位で区切ったときに端数となるフレームを一時的に格納する格納手段とを有し、
前記エンコード手段は、前記格納手段に格納されている端数のフレームをデコードした結果に対して、前記第1の動画ファイルに結合される第2の動画ファイルに含まれるフレームをデコードした結果を加えてエンコードし、
前記端数のフレームに対して、前記第2の動画ファイルに含まれるフレームを加えると、前記所定の符号化単位で区切ったときに端数となるフレームが発生しないことを特徴とする画像編集装置。
【請求項2】
前記符号化単位とは、フレーム間圧縮された動画ファイルを構成する最小の単位構造であることを特徴とする請求項1に記載の画像編集装置。
【請求項3】
前記符号化単位を再生機器の能力にしたがって設定する設定手段をさらに有することを特徴とする請求項1または2に記載の画像編集装置。
【請求項4】
前記符号化単位は、最小値及び最大値により指定された範囲または所定の固定値であることを特徴とする請求項1乃至3のいずれか1項に記載の画像編集装置。
【請求項5】
前記デコーダは、動画ファイルがロードされるときにメモリに読み込まれることを特徴とする前記請求項1乃至4のいずれか1項に記載の画像編集装置。
【請求項6】
前記メモリの空き容量にしたがって、前記メモリに読み込まれるデコーダを追加することを特徴とする請求項1乃至5のいずれか1項に記載の画像編集装置。
【請求項7】
複数の動画ファイルを結合する画像編集装置の制御方法において、
前記動画ファイルをデコードするためのデコーダを記憶するステップと、
前記デコーダによりデコードされた前記動画ファイルを所定の符号化単位でエンコードするステップと、
前記エンコードされたエンコード結果を結合して、結合ファイルを生成するステップと、
第1の動画ファイルのフレームのうち、前記第1の動画ファイルのフレームを前記所定の符号化単位で区切ったときに端数となるフレームを一時的に格納するステップと、
前記一時的に格納されている端数のフレームをデコードした結果に対して、前記第1の動画ファイルに結合される第2の動画ファイルに含まれるフレームをデコードした結果を加えてエンコードするステップとを有し、
前記端数のフレームに対して、前記第2の動画ファイルに含まれるフレームを加えると、前記所定の符号化単位で区切ったときに端数となるフレームが発生しないことを特徴とする制御方法。
【請求項8】
複数の動画ファイルを結合する画像編集装置を実現するためのコンピュータに、
前記動画ファイルをデコードするためのデコーダを記憶するステップと、
前記デコーダによりデコードされた前記動画ファイルを所定の符号化単位でエンコードするステップと、
前記エンコードされたエンコード結果を結合して、結合ファイルを生成するステップと、
第1の動画ファイルのフレームのうち、前記第1の動画ファイルのフレームを前記所定の符号化単位で区切ったときに端数となるフレームを一時的に格納するステップと、
前記一時的に格納されている端数のフレームをデコードした結果に対して、前記第1の動画ファイルに結合される第2の動画ファイルに含まれるフレームをデコードした結果を加えてエンコードするステップとを実行させ、
前記端数のフレームに対して、前記第2の動画ファイルに含まれるフレームを加えると、前記所定の符号化単位で区切ったときに端数となるフレームが発生しないことを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2010−283750(P2010−283750A)
【公開日】平成22年12月16日(2010.12.16)
【国際特許分類】
【出願番号】特願2009−137344(P2009−137344)
【出願日】平成21年6月8日(2009.6.8)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】