(57)【要約】【課題】  複数の動画ファイルを結合して１つの動画ファイルを生成する場合に、複数の動画ファイルを個別にレンダリングし、個々のレンダリング結果を繋ぎ合わせると、符号化単位に制限があるハードウエアを用いて再生する際の互換性が下がる問題があった。【解決手段】  第１の動画ファイルのフレームのうち、所定の符号化単位で区切ったときに端数となるフレームを一時的に格納しておく。格納されている端数のフレームをデコードした結果に対して、第１の動画ファイルに結合される第２の動画ファイルに含まれるフレームをデコードした結果を加えてエンコードする。ここで、格納されている端数のフレームに対して、第２の動画ファイルに含まれるフレームを加えると、所定の符号化単位で区切ったときに端数となるフレームが発生しない。【選択図】  図２
2010283750.tif 000002
【特許請求の範囲】
【請求項１】
複数の動画ファイルを結合する画像編集装置において、
前記動画ファイルをデコードするためのデコーダを記憶する記憶手段と、
前記デコーダによりデコードされた前記動画ファイルを所定の符号化単位でエンコードするエンコード手段と、
前記エンコード手段によりエンコードされたエンコード結果を結合して、結合ファイルを生成する生成手段と、
第１の動画ファイルのフレームのうち、前記第１の動画ファイルのフレームを前記所定の符号化単位で区切ったときに端数となるフレームを一時的に格納する格納手段とを有し、
前記エンコード手段は、前記格納手段に格納されている端数のフレームをデコードした結果に対して、前記第１の動画ファイルに結合される第２の動画ファイルに含まれるフレームをデコードした結果を加えてエンコードし、
前記端数のフレームに対して、前記第２の動画ファイルに含まれるフレームを加えると、前記所定の符号化単位で区切ったときに端数となるフレームが発生しないことを特徴とする画像編集装置。
【請求項２】
前記符号化単位とは、フレーム間圧縮された動画ファイルを構成する最小の単位構造であることを特徴とする請求項１に記載の画像編集装置。
【請求項３】
前記符号化単位を再生機器の能力にしたがって設定する設定手段をさらに有することを特徴とする請求項１または２に記載の画像編集装置。
【請求項４】
前記符号化単位は、最小値及び最大値により指定された範囲または所定の固定値であることを特徴とする請求項１乃至３のいずれか１項に記載の画像編集装置。
【請求項５】
前記デコーダは、動画ファイルがロードされるときにメモリに読み込まれることを特徴とする前記請求項１乃至４のいずれか１項に記載の画像編集装置。
【請求項６】
前記メモリの空き容量にしたがって、前記メモリに読み込まれるデコーダを追加することを特徴とする請求項１乃至５のいずれか１項に記載の画像編集装置。
【請求項７】
複数の動画ファイルを結合する画像編集装置の制御方法において、
前記動画ファイルをデコードするためのデコーダを記憶するステップと、
前記デコーダによりデコードされた前記動画ファイルを所定の符号化単位でエンコードするステップと、
前記エンコードされたエンコード結果を結合して、結合ファイルを生成するステップと、
第１の動画ファイルのフレームのうち、前記第１の動画ファイルのフレームを前記所定の符号化単位で区切ったときに端数となるフレームを一時的に格納するステップと、
前記一時的に格納されている端数のフレームをデコードした結果に対して、前記第１の動画ファイルに結合される第２の動画ファイルに含まれるフレームをデコードした結果を加えてエンコードするステップとを有し、
前記端数のフレームに対して、前記第２の動画ファイルに含まれるフレームを加えると、前記所定の符号化単位で区切ったときに端数となるフレームが発生しないことを特徴とする制御方法。
【請求項８】
複数の動画ファイルを結合する画像編集装置を実現するためのコンピュータに、
前記動画ファイルをデコードするためのデコーダを記憶するステップと、
前記デコーダによりデコードされた前記動画ファイルを所定の符号化単位でエンコードするステップと、
前記エンコードされたエンコード結果を結合して、結合ファイルを生成するステップと、
第１の動画ファイルのフレームのうち、前記第１の動画ファイルのフレームを前記所定の符号化単位で区切ったときに端数となるフレームを一時的に格納するステップと、
前記一時的に格納されている端数のフレームをデコードした結果に対して、前記第１の動画ファイルに結合される第２の動画ファイルに含まれるフレームをデコードした結果を加えてエンコードするステップとを実行させ、
前記端数のフレームに対して、前記第２の動画ファイルに含まれるフレームを加えると、前記所定の符号化単位で区切ったときに端数となるフレームが発生しないことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の動画ファイルを結合して１つの動画ファイルを作成するための画像編集装置およびその制御方法およびプログラムに関する。
【背景技術】
【０００２】
従来、動画ファイルのフォーマットの種類は多数、存在する。そして、多種のフォーマットの動画ファイルを結合して一つの動画ファイルとして残す編集が行われている。（例えば特許文献１参照）
また、一般的に、デコーダを必要な分だけロードして動画ファイルをデコードした後、一つの動画ファイルとして保存することが行われている。この場合、解像度が大きい動画ファイルをたくさん扱うと、メモリを大量に消費してしまう。そこで、この対策として、動画ファイルを個別にレンダリングして繋ぎ合わせることが行われている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３００５２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、複数の動画ファイルを個別にレンダリングし、個々のレンダリング結果を繋ぎ合わせると、符号化単位が固定または所定の範囲内の制限があるハードウエアを用いて再生する際の互換性が下がる問題があった。再生の互換性が下がると、例えば、動画ファイルの再生時にノイズが現れたり、動画ファイルの再生が停止してしまう。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、複数の動画ファイルを結合する画像編集装置において、前記動画ファイルをデコードするためのデコーダを記憶する記憶手段と、前記デコーダによりデコードされた前記動画ファイルを所定の符号化単位でエンコードするエンコード手段と、前記エンコード手段によりエンコードされたエンコード結果を結合して、結合ファイルを生成する生成手段と、第１の動画ファイルのフレームのうち、前記第１の動画ファイルのフレームを前記所定の符号化単位で区切ったときに端数となるフレームを一時的に格納する格納手段とを有し、前記エンコード手段は、前記格納手段に格納されている端数のフレームをデコードした結果に対して、前記第１の動画ファイルに結合される第２の動画ファイルに含まれるフレームをデコードした結果を加えてエンコードし、前記端数のフレームに対して、前記第２の動画ファイルに含まれるフレームを加えると、前記所定の符号化単位で区切ったときに端数となるフレームが発生しないことを特徴とする。
【発明の効果】
【０００６】
本発明によれば、再生機器の符号化単位の制限に合わせたエンコード結果を得られるため、動画ファイルを再生する際の互換性が下がることを防ぐことができる。
【図面の簡単な説明】
【０００７】
【図１】本発明に係る画像編集装置の構成の一例を示すブロック図である。
【図２】本発明に係る動画ファイルの編集の一例を示す図である。
【図３】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図４】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図５】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図６】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図７】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図８】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【図９】本発明に係る画像編集装置が実行する動作の一例を示すフローチャート図である。
【発明を実施するための形態】
【０００８】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【０００９】
（第１の実施形態）
本実施形態では、画像編集装置が動画編集プログラムを起動し、それにしたがって動作することにより実現される。画像編集装置は複数の動画ファイルを結合して１つの動画ファイルを生成して保存する、いわゆるストーリーボード編集を行う。ストーリーボード編集では、複数の動画ファイルを並べて結合するだけでなく、動画ファイルを重ねて合成したり、カット処理や画面効果をかけたりすることができる。編集対象となる動画ファイルの数に制限はない。
【００１０】
また、動画ファイルのフォーマットには、例えばＭｏｔｉｏｎ  ＪＰＥＧ、ＭＰＥＧ２、Ｈ．２６４等、いろいろな種類があるが、本実施形態ではＨ．２６４の場合について説明する。Ｈ．２６４のフレーム間圧縮における符号化単位は、ＭＰＥＧで利用されているＧＯＰ（Ｇｒｏｕｐ  Ｏｆ  Ｐｉｃｔｕｒｅｓ）とよばれる動画を構成する最小の単位構造である。符号化単位は、動画ファイルの中で固定値でもいいし、可変値でもよいが、本実施形態では、固定値の場合について説明する。なお、符号化単位は再生機器の能力にしたがって予め設定された値となる。
【００１１】
まず、図１を参照して画像編集装置の構成を説明する。画像編集装置１００はパーソナルコンピュータ装置などの情報処理装置によって実現される。１１０は画像編集装置１００全体の動作を制御する制御部（中央演算処理装置、ＣＰＵ）である。１２０は内部メモリである。１３０は、動画編集プログラムやオペレーティングシステム（ＯＳ）、動画ファイルを記憶するハードディスクである。１４０は外部記録媒体を扱うメディアドライブである。１５０は動画ファイルを表示するディスプレイである。１６０は音を出力するスピーカである。１７０はキーボードやマウスなどからなる操作部である。１８０は、ＰＣＩバスなどのコンピュータ内部の各処理を相互に接続するための内部バスである。制御部１１０はハードディスク１３０から動画編集プログラムを読み取って起動し、このプログラムコードを実行することにより、以下に説明する画像編集装置１００の動作を実現する。なお、動画編集装置は単一の情報処理装置で実現してもよいし、必要に応じた複数の情報処理装置に各機能を分散して実現するようにしてもよい。複数の情報処理装置で構成される場合は、互いに通信可能なようにＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）などで接続される。
【００１２】
次に本実施形態において画像編集装置が実行する動画編集の手順を図面を参照して説明する。本実施形態ではＭｏｖｉｅ＿Ａ、Ｍｏｖｉｅ＿Ｂ、Ｍｏｖｉｅ＿Ｃというファイル名の３つの動画ファイルを編集対象とする場合について説明する。
【００１３】
まず、画像編集装置の制御部１１０はエンコードするときの条件を取得する（図３のＳ３０１）。本実施形態ではエンコードするときの条件はＧＯＰ単位（符号化単位）が所定値に固定されていることである。ＧＯＰ単位の固定値は、ユーザが操作部１７０を操作して所望の数値を入力して設定してもよい。あるいは、ユーザが操作部１７０を操作してエンコード結果を再生する対象機器のプロファイルを選び、それに対応する値をＧＯＰ単位の固定値として設定してもよい。あるいは、ユーザの入力操作無しに、エンコーダが保持している初期値をＧＯＰ単位の固定値として設定してもよい。ＧＯＰ単位の固定値の設定方法はこれらに限らず、他の設定方法でもよい。また、エンコードするときの条件は、ＧＯＰ単位以外にも、平均ビットレートや画像サイズなどのパラメータであってもよい。
【００１４】
そして、制御部１１０は編集対象の動画ファイルを解析し、ステップＳ３０１で取得したＧＯＰ単位の固定値にしたがって一回のエンコード範囲を決定する（Ｓ３０２）。ステップＳ３０２の処理の詳細は図４を参照して後述する。図２において、Ｍｏｖｉｅ＿Ａ２０１、Ｍｏｖｉｅ＿Ｂ２０２、Ｍｏｖｉｅ＿Ｃ２０３はＨ．２６４でエンコードされた動画ファイルである。２０４はＭｏｖｉｅ＿Ａ２０１をＧＯＰ単位で区切ったときに端数がないところまでの範囲（ｎＧＯＰ）を示している。２０５はＭｏｖｉｅ＿Ａ２０１をＧＯＰ単位で区切ったときに端数となった部分を示している。２０６はＭｏｖｉｅ＿Ａ２０１の端数２０５とＭｏｖｉｅ＿Ｂ２０２を足した範囲をＧＯＰ単位で区切ったときに端数がないところまでの範囲（ｍＧＯＰ）を示している。２０７はＭｏｖｉｅ＿Ａ２０１の端数２０５とＭｏｖｉｅ＿Ｂ２０２の範囲をＧＯＰ単位で区切ったときに端数となった部分を示している。２０８は、Ｍｏｖｉｅ＿Ｂ２０２の端数２０７とＭｏｖｉｅ＿Ｃ２０３を足した範囲である。本実施形態の一回のエンコード範囲は２０４、２０６、２０８と決定される。
【００１５】
次に制御部１１０は最初のエンコード範囲を設定する（Ｓ３０３）。本実施形態では最初にＭｏｖｉｅ＿Ａ２０１のｎＧＯＰ２０４の範囲を設定し、制御部１１０はＭｏｖｉｅ＿Ａ２０１のｎＧＯＰ２０４の範囲の動画ファイルをロードする。そして、動画ファイルがエンコードされた方式を解析し、解析結果に基づきデコードに必要なデコーダを決定する（Ｓ３０４）。解析方法としては例えば、動画ファイルに記述されたエンコード方式の情報を参照することが挙げられるがこれに限らない。本実施形態では解析の結果、Ｍｏｖｉｅ＿Ａ２０１のｎＧＯＰ２０４の範囲の動画ファイルがＨ．２６４でエンコードされていると判定したものとし、必要なデコーダをＨ．２６４であると決定する。なお、後述するステップＳ３１０でエンコード範囲としてｍＧＯＰ２０６の範囲を設定した場合は、ステップＳ３０４ではＭｏｖｉｅ＿Ａ２０１とＭｏｖｉｅ＿Ｂ２０２がエンコードされた方式を解析し、デコーダを決定する。また、後述するステップＳ３１０でエンコード範囲として２０８の範囲を設定した場合は、ステップＳ３０４ではＭｏｖｉｅ＿Ｂ２０２とＭｏｖｉｅ＿ｃ２０３がエンコードされた方式を解析し、デコーダを決定する。
【００１６】
そして制御部１１０はステップＳ３０４で決定されたデコーダをロードする（Ｓ３０５）。ステップＳ３０３でｎＧＯＰ２０４の範囲を設定した場合は、Ｄｅｃｏｄｅｒ＿Ａ２１１がロードされ、ステップＳ３０３でｍＧＯＰ２０６の範囲を設定した場合は、Ｄｅｃｏｄｅｒ＿Ａ２１２とＤｅｃｏｄｅｒ＿Ｂ２１３がロードされる。また、ステップＳ３０３で２０８の範囲を設定した場合は、Ｄｅｃｏｄｅｒ＿Ｂ２１４とＤｅｃｏｄｅｒ＿Ｃ２１５がロードされる。
【００１７】
そして制御部１１０はエンコーダをロードし（Ｓ３０６）、ステップＳ３０３で設定された範囲をステップＳ３０４で決定され、ステップＳ３０５でロードされたデコーダでデコードし、その出力結果をエンコードする（Ｓ３０７）。ステップＳ３０６ではｎＧＯＰ２０４の範囲ではエンコーダ２２１がロードされ、ｍＧＯＰ２０６の範囲ではエンコーダ２２２がロードされ、２０８の範囲ではエンコーダ２２３がロードされる。また、ステップＳ３０７で、ｎＧＯＰ２０４の範囲をエンコーダ２２１でエンコードした結果が２３１であり、ｍＧＯＰ２０６の範囲をエンコーダ２２２でエンコードした結果が２３２であり、２０８の範囲をエンコーダ２２３でエンコードした結果が２３３である。ステップＳ３０７の処理の詳細は図５を参照して後述する。
【００１８】
そして制御部１１０はエンコード結果を作成完了した後、エンコーダを開放し（Ｓ３０８）、デコーダを開放する（Ｓ３０９）。エンコード結果２３１の作成が完了するとエンコーダ２２１とデコーダ２１１が開放される。エンコード結果２３２の作成が完了するとエンコーダ２２２とデコーダ２１２と２１３が開放される。エンコード結果２３３の作成が完了するとエンコーダ２２３とデコーダ２１４と２１５が開放される。
【００１９】
そして制御部１１０は編集対象の動画ファイル全てについてエンコードが完了したかどうか判断し、完了していた場合はステップＳ３１２へ遷移し、完了していない場合はステップＳ３１１へ遷移する。制御部１１０は次のエンコード範囲を設定し（Ｓ３１１）、ステップＳ３０４へ遷移する。
【００２０】
編集対象の動画ファイル全てについてエンコードが完了すると、制御部１１０はエンコード結果２３１、２３２、２３３を結合し、結合ファイル２４０を生成する（Ｓ３１２）。結合結果２４０は先頭から順番にＭｏｖｉｅ＿Ａ、Ｍｏｖｉｅ＿Ｂ、Ｍｏｖｉｅ＿Ｃが連続して並んだ結果となる。
【００２１】
ステップＳ３０２の処理の詳細を図４のフローチャート図を用いて説明する。
まず、画像編集装置１００の制御部１１０は、編集対象の複数の動画ファイルのうち最初の動画ファイルの先頭を解析開始位置として設定（Ｓ４０１）し、ステップＳ４０１で設定された解析開始位置を取得する（Ｓ４０２）。ここでは、制御部１１０は編集対象のＭｏｖｉｅ＿Ａ２０１、Ｍｏｖｉｅ＿Ｂ２０２、Ｍｏｖｉｅ＿Ｃ２０３のうちＭｏｖｉｅ＿Ａ２０１の先頭を解析開始位置として設定し（Ｓ４０１）、取得する（Ｓ４０２）。
【００２２】
制御部１１０はステップＳ４０２で取得された解析開始位置が最後の動画ファイルかどうかを判定し（Ｓ４０３）、最後の動画ファイルであればステップＳ４１３へ遷移し、最後の動画ファイルでなければステップＳ４０４へ遷移する。ステップＳ４０４において制御部１１０はステップＳ４０２で取得された解析開始位置にあるＭｏｖｉｅ＿Ａのフレーム数を取得し、ステップＳ４０２で取得された解析開始位置の前にＧＯＰ単位で端数となるフレームがあったかどうか判定する（Ｓ４０５）。ＧＯＰ単位で端数となるフレームがあったかどうかは、後述のステップＳ４０８で一時的に格納されている値があるかどうかで判定する。端数となるフレームがあると判定された場合、制御部１１０はステップＳ４０８で保持されている値をステップＳ４０４で取得したフレーム数に加算し（Ｓ４０６）、ＧＯＰ単位で区切ると、端数が出るかどうかを判定する（Ｓ４０７）。一方、端数となるフレームがないと判定された場合、制御部１１０はステップＳ４０４で取得したフレーム数をＧＯＰ単位で区切ると、端数が出るかどうかを判定する（Ｓ４０７）。
【００２３】
ステップＳ４０７で端数が出ると判定された場合、制御部１１０は端数となったフレーム数を保持し（Ｓ４０８）、ＧＯＰ単位の端数が発生する手前のＧＯＰ単位の終了位置をエンコードの終了位置として設定する（Ｓ４０９）。ここでは、２０５のフレーム数が端数のフレーム数として保持され、位置２０９がエンコードの終了位置として設定される。ＧＯＰ単位で端数が出ないと判定された場合、制御部１１０は動画ファイルの終端をエンコード終了位置として設定する（Ｓ４１０）。制御部１１０はステップＳ４０９またはＳ４１０で設定されたエンコード終了位置を保持する（Ｓ４１１）。以上のように制御部１１０はステップＳ４０２からＳ４１１までの処理を実行することにより、最初のエンコード範囲を決定する。そして、制御部１１０は解析開始位置を次の動画ファイルの先頭に設定し（Ｓ４１２）、ステップＳ４０２からＳ４１２までの処理を繰り返す。そして、ＧＯＰ単位で端数が発生するかどうかに関わらず、最後の動画ファイルの末尾をエンコード終了位置として設定し（Ｓ４１３）、保持する（４１４）。動画ファイルの終端部分は、再生が終了する位置であるのでＧＯＰの単位より少ないフレーム数となっても再生時に問題は発生しないためである。以上のようにして、制御部１１０は、編集対象となる動画ファイルをＧＯＰ単位で区切り、エンコード範囲を調整した結果を得る。
【００２４】
次にステップＳ３０７の処理の詳細を図５のフローチャートを用いて説明する。
制御部１１０はステップＳ３０１で取得したＧＯＰ単位の固定値をエンコーダに設定し（Ｓ５０１）、動画ファイルをエンコードした結果を出力して出力結果ファイルを作成する（Ｓ５０２）。エンコーダ２２１でエンコードした結果を出力して出力結果ファイル２３１を作成する。エンコーダ２２２でエンコードした結果を出力して出力結果ファイル２３２を作成する。エンコーダ２２３でエンコードした結果を出力して出力結果ファイル２３３を作成する。
【００２５】
ステップＳ５０３において制御部１１０はエンコード時のレート制御情報、量子化パラメータを保存している状態かどうか判定する。ステップＳ３０７が２回目以降の処理のときエンコード時のレート制御情報、量子化パラメータを保存している状態となる。ステップＳ５０３でエンコード時のレート制御情報、量子化パラメータを保存していると判定された場合、ステップＳ５０４において制御部１１０はエンコードのレート制御情報、量子化パラメータを設定する。ここで、前回のエンコード範囲の終了時にステップＳ５０８で保存したエンコードのレート制御情報、量子化パラメータを再設定することで、前回のエンコード部分と今回のエンコード部分の画質の差を少なくすることができ、つなぎ目が滑らかになる。一方、エンコードのレート制御情報、量子化パラメータを保存していない場合、ステップＳ５０５へ移る。
【００２６】
ステップＳ５０５において制御部１１０は、動画ファイルのうちステップＳ３０２で決定した範囲をデコードし、デコード結果をエンコーダへと渡す。デコード結果は、１フレームずつエンコーダへ渡してもよいし、ＧＯＰ単位分のフレームを一括してエンコーダへ渡してもよい。そして、制御部１１０はデコード結果をエンコードし（Ｓ５０６）、エンコードが終了点に達したか判定する（Ｓ５０７）。終了点に達していない場合、ステップＳ５０５へ移り、終了点に達した場合、ステップＳ５０８において、制御部１１０はエンコードのレート制御情報、量子化パラメータを保存する。そして制御部１１０はエンコード結果の出力結果ファイルをクローズし（Ｓ５０９）、デコーダで使用した動画ファイルをクローズする（Ｓ５１０）。本実施形態では、出力結果ファイル２３１を作成完了後に、デコーダ２１１で使用していた動画ファイル２０１が開放され、出力結果ファイル２３２を作成完了後に、デコーダ２１２、２１３で使用していた動画ファイル２０１、２０２が開放される。また、出力結果ファイル２３３を作成完了後に、デコーダ２１４、２１５で使用していた動画ファイル２０２、２０３が開放される。
【００２７】
なお、本実施形態では、全てのエンコード結果を個別の出力結果ファイルに出力した後に結合したが、エンコード結果を出力すると、次々に追記していくようにしてもよい。
【００２８】
また、本実施形態では、エンコード範囲を切り替える時に、前回のエンコード時のレート制御情報、量子化パラメータを引き継ぐようにしたが、エンコードした動画を再生する機器での問題や画質に問題がなければ引き継ぐ処理を省略してもよい。
【００２９】
また、本実施形態では、ＧＯＰ単位に足りない端数のフレームがあるかどうかの判定を動画ファイルの終了点で動画ファイルごとに行った。これ以外にも動画ファイルに画面効果をつけるエフェクトの開始点・終了点や複数の動画を重ね合わせる効果をつける開始点・終了点で判定を行ってもよい。
【００３０】
上記の通り本実施形態では、動画ファイルのデコードとエンコードを行う前に、編集対象の動画ファイルを解析する。そしてＧＯＰ単位の固定値にしたがって動画ファイルを区切った時に端数のフレームが出ないように連続する第１の動画ファイルと第２の動画ファイルに跨ってエンコード範囲を決定し、決定したエンコード範囲毎にエンコード処理を行うようにした。これにより、再生対象のＧＯＰ単位の制限に合わせたエンコード結果を得られる。また、デコーダをロードして一括処理しなくて済むため、メモリ消費量を少なくすることができる。また、中間ファイルに変換し動画編集を行う方法に比べ、中間ファイルに変換する処理をしなくて済むため、エンコード処理を短時間で行うことができる。
【００３１】
（第２の実施形態）
第１の実施形態ではエンコード範囲を先に決定してからエンコード処理するようにした。これに対して、本実施形態では、デコードとエンコードの処理中に、所定の制限範囲内の任意の値をＧＯＰ単位として動画ファイルを区切ったときに端数のフレームを出さずにエンコードできるかどうか判断する場合について説明する。ＧＯＰ単位の所定の制限の範囲とは、エンコードした映像を再生する機器の制約である。本実施形態ではＧＯＰ単位の所定の制限範囲は、最小値と最大値で指定された範囲である。
【００３２】
本実施形態の画像編集装置が実行する動作について図２および図６〜図９を用いて説明する。なお、以下では第１の実施形態と同様の部分については説明を省略し、本実施形態に特有の部分について詳細に説明する。
【００３３】
まず、制御部１１０はエンコード条件を取得する（Ｓ６０１）。本実施形態ではエンコード条件としてＧＯＰ単位の所定の制限範囲を示す最小値と最大値を取得する。そして、制御部１１０は動画ファイル毎にＧＯＰ単位の制限範囲に収まるようにデコードとエンコードを行う（Ｓ６０２）。本実施形態では、２０４、２０６、２０８の各範囲をデコードしエンコードする。各範囲の処理で、終了点を決定後、次の範囲に移るときにデコーダとエンコーダを開放し、次の範囲の処理への切り替えが行われる。また、メモリに空き容量が十分ある場合は、処理の切り替えを行わずに、次に必要になったデコーダを追加でロードして続きの処理を行う。そして、制御部１１０は編集対象の動画ファイルの最後までエンコードが完了したか判定し（Ｓ６０３）、エンコードが完了していれば、エンコード結果を結合する（Ｓ６０４）。エンコード処理を３回に分けて行った場合は、２０４、２０６、２０８の範囲をそれぞれエンコードした結果、２３１、２３２、２３３を結合し、一つの動画ファイル２４０を作成する。一方、エンコードが完了していない場合は、ステップＳ６０２へ移る。
【００３４】
次に、ステップＳ６０２の処理の詳細について図７を参照して説明する。
制御部１１０はエンコーダをロードする（Ｓ７０１）。エンコード処理を３回に分けて行った場合は、エンコーダ２２１が最初のエンコード処理でロードされ不要になると開放され、次にエンコーダ２２２がロードされ不要になると開放され、最後にエンコーダ２２３がロードされ不要になると開放される。そして、制御部はエンコーダにステップＳ６０１で取得したエンコードの条件を設定し（Ｓ７０２）、エンコード結果を出力する出力結果ファイルを作成する（Ｓ７０３）。エンコード処理を３回に分けて行った場合は、２３１、２３２、２３３の出力結果ファイルが作成される。エンコードする範囲が２０４から２０６へ変わるときにデコーダとエンコーダを開放しなかった場合は、出力結果ファイル２３２は作成されないことになる。ステップＳ７０４において、制御部１１０は解析開始位置を取得する。初期値は編集対象の動画ファイルの先頭となり、２回目以降はステップＳ８０５で保持した値となる。ステップＳ７０５において制御ファイルはＧＯＰ単位の制限範囲をデコードをするときに使用する動画ファイルをロードし、それに適合するデコーダをロードし（Ｓ７０６）、デコードするフレーム数がＧＯＰの制限範囲に収まるかどうかを判断する（Ｓ７０７）。本実施形態では動画ファイル２０１をロードした場合、デコード範囲によってデコーダ２１１か２１２がロードされ、動画ファイル２０２をロードした場合、デコード範囲によってデコーダ２１３か２１４がロードされる。また、動画ファイル２０３をロードした場合、デコーダ２１５がロードされる。ステップＳ７０７でデコードするフレーム数がＧＯＰの制限範囲に収まると判断されれば、制御部１１０はＧＯＰの制限範囲に収まるフレーム数をデコードし（Ｓ７０８）、デコードしたフレーム数をカウントする（Ｓ７０９）。ここで、デコードしたフレーム数をカウントしておくことで、編集対象の動画ファイルのどの位置をデコードしているか判別できる。そして、制御部１１０はデコーダの出力をエンコードし（Ｓ７１０）、エンコード結果を出力し（Ｓ７１１）、次のエンコード範囲の処理に移る。制御部１１０はステップＳ７０７からステップＳ７１１を繰り返すことでＧＯＰ単位の制限範囲で、２０４、２０６、２０８について次々とデコードとエンコードを繰り返し、エンコード結果として２３１、２３２、２３３を出力する。
【００３５】
一方、ステップＳ７０７でデコードするフレーム数がＧＯＰの制限範囲に収まらないと判断されれば、制御部１１０は図８のフローチャートに示す処理を実行する。
【００３６】
まず、制御部１１０はＧＯＰの制限範囲に収まらなかったフレーム数をデコーダのデコードする残フレーム数として保持する（Ｓ８０２）。ここで、２０５、２０７のフレーム数が保持される。そして、制御部１１０は編集対象の動画ファイルの中でエンコードが完了済みとなっている最後の位置が編集対象の最後の動画ファイル上にあるか判定する（Ｓ８０３）。最後の動画ファイル上にないと判定された場合はステップＳ８０５において制御部１１０は編集対象の動画ファイルの中でエンコードが完了した位置を保持する。本実施形態では、２０４、２０６の終了点が保持される。そして、制御部１１０は、メモリの空き容量を取得し（Ｓ８０６）、次のファイルのデコードで利用するメモリ使用量を算出する（Ｓ８０７）。本実施形態では、エンコード範囲２０４が完了し、次のエンコード範囲２０６に移る場合、動画ファイル２０１の次の動画ファイル２０２をデコードするデコーダ２１３のメモリ使用量を算出する。エンコード範囲２０６が完了し、次のエンコード範囲２０８に移る場合、動画ファイル２０２の次の動画ファイル２０３をデコードするデコーダ２１５のメモリ使用量を算出する。そして、制御部１１０はＳ８０６で取得したメモリの空き容量とＳ８０７で算出したデコーダのメモリ使用量からデコードを引き続き行うことができるかどうか判断する（Ｓ８０８）。デコードを引き続き行うことができると判定した場合、制御部１１０はステップＳ７０４の処理を実行する。本実施形態では、２０４から２０６へデコードしエンコードする範囲が変わるときにデコーダとエンコーダの開放しなかった場合は、２２２のエンコーダをロードせずに２２１のエンコーダを引き続き使うことができる。２１２のデコーダも同様に２１１のデコーダを引き続き利用することができる。２０６から２０８へデコードしエンコードする範囲が変わるときにデコーダとエンコーダの開放しなかった場合も、同様にロード済みのデコーダ、エンコーダを引き続き利用できる。２２３のエンコーダをロードせずにロード済みの２２２もしくは、２２１のエンコーダを引き続き使うことができる。２１４のデコーダも同様に２１３のデコーダを引き続き利用することができる。
【００３７】
一方、ステップＳ８０８でできないと判定された場合、制御部１１０は図９のステップＳ９０６の処理を実行する。また、ステップＳ８０３で最後の動画ファイル上にあると判定された場合は、制御部１１０は図９のフローチャートに示す処理に移行する。
【００３８】
図９は制御部１１０が、デコードしてエンコードする処理を切り替えるために、一旦、エンコーダとデコーダで使用していた動画ファイルをクローズして、エンコーダとデコーダを開放する処理を説明するためのフローチャート図である。
【００３９】
制御部１１０は、ステップＳ８０２で保持したデコーダのデコードする残フレーム数がゼロかどうか判定し（Ｓ９０２）、デコーダのデコードする残フレーム数がゼロでない場合、残フレームをデコードする（Ｓ９０３）。そして、デコーダの出力をエンコードし（Ｓ９０４）、エンコード結果を出力し（Ｓ９０５）、エンコード結果の出力ファイルをクローズする（Ｓ９０６）。本実施形態では、２３１、２３２、２３３であらわされる、エンコード結果のうち使用していたものをクローズする。一方、ステップＳ９０２でデコーダのデコードする残フレーム数がゼロの場合、ステップＳ９０６の処理を実行する。ステップＳ９０３からＳ９０５の処理は、ステップＳ８０３で編集対象の最後の動画ファイルにＧＯＰ単位の制限範囲のうち最小値より少ない端数のフレームがあった場合に行われる。なお、動画ファイルの終端部分は再生が終了する位置なので再生時に問題は起きない。
【００４０】
次に制御部１１０はエンコーダを開放する（Ｓ９０７）。エンコーダ２２１、２２２、２２３のうち使用していたものを開放する。また、制御部１１０はデコードに使用したファイルをクローズする（Ｓ９０８）。動画ファイル２０１、２０２、２０３のうち使用していたものをクローズする。また、制御部１１０はデコーダを開放する（Ｓ９０９）。本実施形態では、デコーダ２１１、２１２、２１３、２１４、２１５のうち使用していたものを開放する。
【００４１】
ステップＳ７０４からステップＳ８０８において制御部１１０はメモリに空きがある範囲で、動画ファイルごとにＧＯＰ単位の制限範囲内でデコードしてエンコードする処理を実行する。さらに、これとともに使用していたデコーダとエンコーダを全て開放し、デコーダとエンコーダが使用していた動画ファイルもクローズする。
【００４２】
なお、本実施形態では、ＧＯＰ単位の制限範囲に足りない端数のフレームの判定をデコーダのデコードしたフレーム数と動画ファイルの終了点で動画ファイルごとに行った。デコードしたフレーム数以外にも、エンコードしたフレーム数や、デコード前に読み込んだフレーム数で行ってもよい。また、動画ファイルに画面効果をつけるエフェクトの開始点・終了点で判定を行ってもよい。複数の動画ファイルを重ね合わせる効果をつける開始点・終了点で判定を行ってよい。
【００４３】
また、本実施形態では、デコーダの開放を行うタイミングをエンコーダの開放を行うタイミングで行ったが、デコーダの開放処理は、デコーダが使用されなくなった時点で実施するようにしてもよい。
【００４４】
また、本実施形態では、メモリに空き容量がある場合に、次のファイルのデコードで使用するデコーダをロードするようにしたが、空き容量に関係なくエンコードを中断し、続きのエンコードを行うようにしてもよい。
【００４５】
上記したように本実施形態によれば、再生対象のＧＯＰ単位の制限に合わせたエンコード結果を得られる。また、デコーダをロードして一括処理しないため、メモリ消費量を少なくすることができる。また、中間ファイルに変換し動画編集を行う方法に比べ、中間ファイルに変換する処理が無いため、早くエンコードを行うことができる。
【００４６】
また、デコーダをメモリにロードする際にメモリに空き容量が無い場合は、一回処理を中断しデコーダ、エンコーダで利用していたメモリを開放し、その後処理を引き継ぎ続きからエンコード出来るようにした。これによって、編集対象の動画ファイルで使用するデコーダを全てロードして一括処理すると、メモリが足りなくなる場合でも、編集対象の動画ファイルをエンコードすることができるようになる。
【００４７】
（他の実施形態）
本発明の目的は以下のように達成されることは言うまでもない。まず、前述した実施例の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵまたはＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００４８】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【００４９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけではない。例えば、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーションシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【００５０】
さらに、以下のような処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。まず、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行う。
【図１】
2010283750.tif 000003
【図２】
2010283750.tif 000004
【図３】
2010283750.tif 000005
【図４】
2010283750.tif 000006
【図５】
2010283750.tif 000007
【図６】
2010283750.tif 000008
【図７】
2010283750.tif 000009
【図８】
2010283750.tif 000010
【図９】
2010283750.tif 000011