以下、図面を参照して本発明の実施例を詳細に説明するが、この発明は以下の実施の形態に限定されない。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
なお、本実施例において説明される各機能ブロックは必ずしも個別のハードウェアである必要はない。すなわち、例えばいくつかの機能ブロックの機能は、1つのハードウェアにより実行されても良い。また、いくつかのハードウェアの連係動作により1つの機能ブロックの機能または、複数の機能ブロックの機能が実行されても良い。
本実施例では、画像処理装置として撮像装置を例にとって説明する。
本実施例の撮像装置100は、通常の「動画撮影モード」においては、1回の動画撮影の開始から終了までに撮影された動画データを1つのファイルとして記録媒体に記録することができる。また、通常の「静止画撮影モード」においては、1回の撮影指示に応じて撮影された静止画データを1つのファイルとして記録媒体に記録することができる。さらに、本実施例の撮像装置は、「ダイジェストムービーモード」を有する。この「ダイジェストムービーモード」では、静止画撮影の指示に応じて、撮影された静止画データを記録媒体に記録するだけでなく、静止画撮影の指示が入力されるまでに撮影された所定時間分の動画データを動画ファイルとして記録媒体に記録することができる。動画データについては、撮像装置に備えられたメモリに、エンコードした状態で一時的に記憶しておく。
また、「ダイジェストムービーモード」においては、たとえば、同一日付に撮影された動画データをすべて連結した一つの動画データを作成し、記録媒体に記録することができる。この場合には、記録媒体に既に記録されている動画ファイルの動画データに対して、新規に撮影された動画データを静止画撮影の指示のあるごとに連結(追記)していく。また、連結されるたびに、各静止画撮影に対応する動画データを一つのチャプタに対応するものとして取り扱う。そのために、動画ファイルにはチャプタを示すためのチャプタデータが記録されることになる。
撮像装置100は、「ダイジェストムービーモード」にモードが遷移すると、撮像部により得られた複数の画像を動画の各フレーム画像とした符号化動画データを作成し、メモリに順次記憶していく。所定時間以上過去の動画データについては、メモリ上で破棄または、上書きする。そして、静止画撮影の指示が入力されると、撮像部により得られた画像信号に基づいて、静止画データを作成し、記録媒体に記録する。このとき、それまでメモリに記憶していた所定時間分の動画データを動画ファイルとして記録媒体に記録するのである。記録媒体に既に記録されている動画ファイル(既存動画ファイル)の動画データに、この所定時間分の動画データを連結する場合には、メモリに一時的に記憶されている所定時間分の動画データを記録媒体に先に記録する。そして、その後、既存動画ファイルの動画データを解析し、連結位置を特定してから動画データの連結編集を行う。なお、本実施例の撮像装置100は、静止画撮影の指示に対応する動画をそれぞれ別々のチャプタとして区別するために、チャプタ情報を動画ファイルに格納する。このとき、チャプタのタイトルとしては、静止画の撮影された撮影時刻をテキストデータとして記載するものとする。
チャプタに対応する任意のシーンを削除する際には、削除対象のチャプタの記録媒体上での記録位置を特定し、削除対象のチャプタの動画データの少なくとも一部を読まないようにファイルアロケーションテーブルのクラスタチェーン書換える。具体的には、削除対象のチャプタの動画データの記録されているクラスタを読まないように、ファイルアロケーションテーブルのクラスタチェーンを書き換える。そして、動画ファイルのヘッダ情報を書き換えることで、削除対象のチャプタのデータを無効化すると共にデータの削減を行う。
このようにすることにより、動画の各シーンをデコードしてから削除シーンを含まないように再エンコードする必要がなくなるため高速に任意のシーンを削除する編集を行うことができるのである。
本実施例においては、ファイルアロケーションテーブルを用いた記録を行うファイルシステムに対応したフォーマット(本実施例ではファイルシステムとしてFAT32等を例とする)がなされた記録媒体を使用する。そして、前述した動画データの連結を行う際は、ファイルアロケーションテーブル(FAT)を編集している。従って、動画の追記や分離が容易に行えるのである。
以下、このような撮像装置について、説明する。
まず、図1を用いて本実施例の撮像装置100の全体構成を説明する。
本実施例の撮像装置100は、図1に示すように、CPU101と、RAM102と、ROM103と、操作部104とを有する。また、撮像装置100は、撮像部110と、画像処理部111と、マイクユニット120と、音声処理部121と、スピーカユニット122とを有する。また、撮像装置100は、符号化復号化処理部130と、表示部140と、表示制御部141と、記録再生部150と、記録媒体151と、通信部160とを有する。
なお、CPUは、Central Processing Unitの略称である。RAMは、Random Access Memoryの略称である。
本実施例の撮像装置100において、CPU101は、RAM102をワークメモリとしてROM103に記録された各種プログラムをRAM102に展開し、プログラムに応じて撮像装置100の各ブロックを制御する。操作部104は、例えば、電源ボタン、記録ボタン、ズーム調整ボタン、オートフォーカスボタン、メニュー表示ボタン、モード切替スイッチ、決定ボタン等の各種操作を入力するスイッチ類を有する。また、カーソルキー、ポインティングデバイス、タッチパネル、ダイヤル等のどのようなタイプの操作子であってもよい。操作部104は、ユーザによりこれらのキーやボタン、タッチパネルが操作されるとCPU101に操作信号を送信する。操作部104の各操作部材は、表示部に表示される種々の機能アイコンを選択操作することなどにより、場面ごとに適宜機能が割り当てられ、各種機能ボタンとして作用する。機能ボタンとしては、例えば終了ボタン、戻るボタン、画像送りボタン、ジャンプボタン、絞込みボタン、属性変更ボタン等がある。例えば、メニューボタンが押されると各種の設定可能なメニュー画面が表示部に表示される。利用者は、表示部に表示されたメニュー画面と、上下左右の4方向ボタンやSETボタンとを用いて直感的に各種設定を行うことができる。なお、操作部104は、表示部に対する接触を検知可能なタッチパネルであってもよい。タッチパネルは、抵抗膜方式や静電容量方式、表面弾性波方式、赤外線方式、電磁誘導方式、画像認識方式、光センサ方式等、様々な方式のタッチパネルのうちいずれの方式のものを用いても良い。
撮像部110は、レンズにより取り込まれた被写体の光学像を、絞りにより光量を制御して、CCDセンサやCMOSセンサ等の撮像素子により画像信号に変換し、得られたアナログ画像信号をデジタル画像信号に変換して一時的にRAM102に記憶する。RAM102に記憶されたデジタル画像信号は、その後、画像処理部111に送信される。画像処理部111は、デジタル画像信号のホワイトバランスや色、明るさなどをユーザに設定された設定値や画像の特性から自動的に判定した設定値に基づいて調整する画質調整処理を行い、処理をしたデジタル画像信号を再びRAM102に記憶する。また、画質調整処理済みまたは未処理のデジタル画像信号を、後述の表示制御部141に送信し、表示部140に撮像中の画像として表示することもできる。また、再生時においては、画像処理部111は、記録媒体151から記録再生部150によって読出され、符号化復号化処理部130において復号化された静止画ファイルや動画ファイルに含まれる画像データの画質調整等を行う。そして、画質調整済みまたは未処理のデジタル画像信号を、後述の表示制御部141に送信し、表示部140に画像として表示することもできる。
符号化復号化処理部130では、記録時においては、画像処理部111により処理されRAM102に記憶されたデジタル画像信号に対して、画像圧縮処理を行い、圧縮された動画データや静止画データを生成し、RAM102に一時的に記憶する処理を行う。また、再生時においては、記録媒体151から読出された画像ファイルの圧縮された動画データや静止画データを復号してデジタル画像信号を抽出し、RAM102に記憶していく処理を行う。
たとえば、動画データを生成する際は、動画データの各フレームをフレーム内符号化して圧縮符号化された動画データを生成する。また、動画データの複数のフレーム間での差分や動き予測などを利用して圧縮符号化された動画データを生成してもよい。たとえばMotionJPEG、MPEG、H.264(MPEG4−Part10 AVC)、等の様々な公知の圧縮符号化方式の動画データを生成することができる。一般に、フレーム内符号化されたフレーム画像データをIピクチャと呼び、前方のフレームとの差分を用いてフレーム間符号化された画像データをPピクチャと呼び、前方後方のフレームとの差分を用いてフレーム間符号化された画像データをBピクチャと呼ぶ。これらの圧縮方式は、公知の方式を用いており、本発明の特徴とは関係ないので説明を省略する。また、静止画データを生成する際には、JPEG等の一般的な圧縮符号化方式を用いるが、これらの圧縮符号化方式は、公知の方式を用いており、本発明の特徴とは関係ないので説明を省略する。なお、静止画データについては、撮像部110により得られたデジタル画像信号をそのまま記録する、いわゆるRAW画像データとしてもよい。
マイクユニット120は、たとえば、撮像装置100のハウジング内に内蔵された無指向性のマイクとAD変換部を有する。マイクユニット120では、マイクにより周囲の音声を集音(収音)し、取得したアナログ音声信号をAD変換部で、デジタル信号に変換してRAM102に一時的に記憶させる。RAM102に記憶されたデジタル音声信号は、その後、音声処理部121に送信される。音声処理部121では、記録時においては、RAM102に記憶されたデジタル音声信号の、レベルの適正化処理や雑音低減処理等の処理を行い、処理をしたデジタル音声信号を再びRAM102に記憶する。また、必要に応じて、音声信号を圧縮する処理を行う。音声圧縮方式については、AC3、AAC等の公知の一般的な音声圧縮方式を用いているため説明を省略する。また、再生時においては、記録媒体151から記録再生部150によって読出された音声ファイルや動画ファイルに含まれる圧縮音声データ復号する処理や音声レベルの適正化処理、なども行い、順次RAM102に記憶する処理も行う。スピーカユニット122は、スピーカとDA変換部とを有する。スピーカユニット122では、音声処理部121によりRAM102に記憶されたデジタル音声信号を読出してアナログ音声信号に変換し、アナログ音声信号によりスピーカから音声を出力する。
表示部140は、例えば、液晶パネルとバックライトとからなり、表示制御部141の制御により画像を表示する。表示部140は液晶表示装置に限られず、例えば有機ELディスプレイ、LEDディスプレイなど、ユーザに画像を提供することができればどのようなものであっても良い。表示制御部141では、画像処理部111により処理され、RAM102に記憶されたデジタル画像信号に基づいて、表示部140に画像を表示する。
記録再生部150では、動画記録時においては、RAM102に記憶されている、符号化復号化処理部130により生成された圧縮動画データ及び、音声処理部121で生成された音声データ、撮影日等の各種情報とともに、動画ファイルとして記録媒体151に書き込む。また静止画記録時においては、RAM102に記憶されている静止画データを撮影日等の各種情報とともに静止画ファイルとして記録媒体151に記録する。動画ファイルを記録媒体151に記録する際は、圧縮動画データと音声データとからなるデータストリームを形成し、順次記録媒体151に記録していき、ファイルヘッダ等を付加してFATやexFAT等のファイルフォーマットに適合した形で動画ファイルを記録媒体に記録する。また、再生時においては、記録媒体151に記録された動画ファイルや静止画ファイルを前述のファイルフォーマットに従って読出す。読出された動画ファイルや静止画ファイルは、CPU101によりヘッダが解析され、圧縮された動画データ、静止画データが抽出される。抽出された圧縮動画データ、静止画データは、RAM102に記憶されて、符号化復号化処理部130により復号される。
また、記録媒体151は、撮像装置に内蔵された記録媒体でも、取外し可能な記録媒体でもよい。例えば、ハードディスク、光ディスク、光磁気ディスク、CD−R、DVD−R、磁気テープ、不揮発性の半導体メモリ、フラッシュメモリ、などのあらゆる方式の記録媒体を含む。取り外し可能な記録媒体を用いる場合には、記録再生部150は、それらの取り外し可能な記録媒体を装着、排出するための機構を含む。
また、通信部160は、撮像装置100とは異なる外部装置との間で、制御信号や動画ファイル、静止画ファイル、各種データ等を送受信するものであり、有線接続、無線接続を問わず接続可能である。なお、通信方式はどのような方式であっても良い。
ここで、前述の画像処理部111、音声処理部121、符号化復号化処理部130、表示し制御部141、記録再生部150は、それぞれ、前述の各機能を実行するプログラムを搭載したマイクロコンピュータであってもよい。また、CPU101がROM103に記録された前述の処理を実行する為のプログラムをRAM102に展開して実行するようにしてもよい。
なお、本実施例の撮像装置100は、一例として、「QuickTime(登録商標)フォーマット」で動画ファイルを記録するものとするが、どのようなフォーマットであっても良い。
なお、本実施例では記録媒体151のファイル管理システムは組み込み機器で一般的に使用されているFATファイルシステムを使用するものとして説明をする。FATファイルシステムの技術自体は広く公知であるので、本実施例の特徴的な動作でのみその説明をする。また、FATファイルフォーマットであるNTFSフォーマットやexFATフォーマットなどを用いても良い。
次に、本実施例の撮像装置100の動作について説明する。
本実施例の撮像装置100は、ユーザによって操作部104を操作して電源を投入する指示が出されたことに応じて、不図示の電源供給部から、撮像装置の各ブロックに電源を供給する。
電源が供給されると、CPU101は、操作部104により設定されたカメラのモードが、再生モードであるか、「ダイジェストムービーモード」、静止画記録モード、動画記録モードであるかを判定する。なお、本実施例において、静止画記録モード、動画記録モードは、特徴的な構成に関わらないので説明を割愛する。
次に、再生モードについて、説明する。
操作部104により再生モードが設定されると、CPU101は、再生状態に移行させるように制御信号を撮像装置100の各ブロックに送信し、以下のような動作をさせる。
記録再生部150は、記録媒体151に記録された、符号化された動画データと符号化された音声データとからなる動画ファイルを読み出す。CPU101は読み出された符号化された動画データと符号化された音声データとを、RAM102にバッファする。そして、CPU101は、符号化された動画データを復号するように符号化復号化処理部130を制御する。また、CPU101は、符号化された音声データを復号するように音声処理部121を制御する。
そして、CPU101は、符号化復号化処理部130によって復号された動画データの各フレームデータを表示制御部141に送り、表示部140に各フレームの画像を表示させる。また、音声処理部121で、復号された音声データをスピーカユニット122に送信し、音声データに対応する音声を出力させる。
また、再生モードにおいては、指定されたチャプタにジャンプして、そのチャプタの先頭のシーンから再生を開始させたり、指定されたチャプタの動画を削除したりする処理を実行することもできる。削除処理については後述する。
次に、「ダイジェストムービーモード」について、図2のフロー図を用いて説明する。図2のフロー図は、ダイジェストムービーモードに設定されたときをスタートとするフロー図であり、CPU101がRAM102に展開したプログラムに基づいて、撮像装置100の各部を制御することにより、実行される処理である。なお、本実施形態において、動画データを順次追記していくか否かは、静止画記録の指示があった後で、動画データを記録媒体151に記録する前に行うものとする。すなわち、CPU101が、記録再生部150より、最後にダイジェストムービーモードで撮影された動画ファイルを読み出して撮影された日付の情報を確認する。そして、読み出された動画ファイルが当日に撮影されたものであれば、追記するものとし、異なる日に撮影されたものであれば、追記しないものとする。ダイジェストムービーモードにおいて撮影された動画は、たとえばダイジェストムービーモードで撮影された動画であることを示すための識別子「MDG」に4桁の整数を順次数字をインクリメントしたファイル名とする。このようにすることで、記録媒体151に記録されている識別子MDGを含む数字のもっとも大きい動画が最後に撮影されたものであることが容易に識別可能である。追記するか否かの条件については後述するが、追記するか否かの確認は、撮像装置100の起動時または、ダイジェストムービーモードへの切り替え時等に行ってもよい。
また、本実施形態においては、サムネイル画像の生成は、静止画撮影の指示が入力される毎に生成されるものとして説明する。この場合、追記した動画ファイルには複数のサムネイル画像が関連づけられることになる。しかし、追記する場合にはサムネイル画像を生成せずに、新規に動画ファイルを生成する場合にのみ、サムネイル画像を生成するようにしても良い。
操作部104によりダイジェストムービーモードが設定されると、CPU101は、撮像装置100の各ブロックを制御し、以下の動作を実行させる。
まず、撮像部110は、得られたデジタル画像信号をRAM102に送信し、一時的に記憶させる。そうすると、表示制御部141は、RAM102に記憶されたデジタル画像信号を読み出して表示部140に表示させる。また、画像処理部111は、RAM102に記憶されたデジタル画像信号を順次読み出して、前述の各種画質調整処理を行い、処理をしたデジタル画像信号を再びRAM102に記憶する。画像処理部111は、撮像部110で画像が撮像される度にこの処理を繰り返す。
また、符号化復号化処理部130は、画像処理部111によって処理されたデジタル画像信号を動画データとして符号化するための符号化処理を行う(S201)。例えば、符号化処理としては、MotionJPEG、MPEG、H.264(MPEG4−Part10 AVC)、等の様々な公知の圧縮符号化方式処理がある。本実施例においては、例えば、H.264におけるフレーム内予測符号化画像を含む動画データとなるように符号化処理を行うものとする。なお、フレーム内予測符号化画像は、IDRフレームと呼ばれるフレーム間予測符号化画像の飛び越し参照を禁止するフレームとして符号化する。各IDRフレームには、idr_pic_idが付加されている。
また、このときCPU101は音声処理部121に、マイクユニット入力されたデジタル音声信号に対して種々の調整処理を適用した後、予め設定された音声用の符号化方式に従って符号化処理を実行し、得られた符号化された音声信号をRAM102に記憶させる。
そして、符号化復号化処理部130、音声処理部121は、符号化された動画データと音声データをRAM102記憶していく(S202)。以後の説明では、音声データについては説明を省略するが、動画データとともに処理されるものとする。
本実施形態の撮像装置100においては、RAM102には、常に直前の予め定められた時間分の動画データが記憶されるようにRAM102に記憶されている動画データのうち、予め定められた時間より前に撮像された動画データを削除するようにしている。そのため、CPU101は、所定時間分以上の動画データがRAM102に記憶されたか否かを判定し(S203)、所定時間以上記憶されている場合(S203で、Yes)、所定時間よりも過去の時点で撮影された画像を示す動画データを破棄するようにしている。削除するデータのサイズは符号化単位で規定されるため、符号化方式によっては当該削除するデータのサイズをフレームまたは再生時間として決定することもできる。また、所定時間以上記憶されていない場合(S203で、No)、動画データの破棄を行わない。本実施例では所定時間は任意の時間であってよいが、例えば4秒、6秒、8秒など、ユーザが選択できるようにしても良い。そして、CPU101は、静止画撮影の指示が操作入力部112から入力されたか否かを判定し(S205)、静止画撮影の指示が入力されていない場合(S205でNo)、再びS201に戻り、動画データの生成処理、一時記憶を継続する。
なお、本実施形態では常に直前の予め定められた時間分の動画データがRAM102には記憶されるものとして説明するが、本発明の実施はこれに限らない。即ち、RAM102に記憶される動画データのサイズは定量可能なものであればよく、例えばフレーム数、GOP数(Group Of Pictures)、データサイズ等で規定される、予め定められた量であってよい。つまり、RAM102に記憶されている動画データは、当該動画データのサイズが予め定められたサイズ以上となった場合に、当該予め定められたサイズ未満のサイズとなるまで、動画データのフレームのうちの撮影時刻が古いフレームから順に削除されるようにしてもよい。
ここで、静止画撮影の指示が入力された場合(S205でYes)、CPU101は、記録媒体151の記録可能容量をチェックするように記録再生部150を制御し、RAM102に一時的に記憶されている動画データの記録が可能であるか否かを判定しても良い。この判定は、RAM102に一時的に記憶されている動画データのサイズと、記録する静止画データの見込みサイズとの和が、記録媒体151の記録可能容量よりも小さいか否かを比較することにより判定される。静止画データの見込みサイズはたとえば4MBとしても良いし、記録サイズや画質等に応じて変更してもよい。
この判定により、動画データと、静止画データとを記録媒体151に記録できない場合には、静止画撮影のみを行い、動画データを記録しないようにしても良い。
また、S205で静止画撮影の指示が入力されたときに、RAM102に例えば1秒未満や2秒未満等の短い時間分の動画データしか記憶されていない場合には、静止画撮影の指示を無効とするようにしても良い。この時間もユーザ画設定できるようにしても良い。
次に、静止画撮影の指示が入力された場合(S205でYes)、CPU101は、撮像部110に静止画データ用の撮影を実行させる(S210)。CPU101は、このとき並行して符号化復号化処理部130に、RAM102に記憶されている動画データの先頭フレームの画像を復号させ、サムネイル画像生成処理を実行させる(S211)。なお、本実施形態では記録される動画データのサムネイル画像は先頭フレームの画像から生成されるものとして説明するが、本発明の実施はこれに限らず、記録される動画データのフレームのうちのいずれかのフレームの画像から生成されればよい。すなわち、静止画撮影の指示があったときに、RAM102に記憶されている動画データのいずれかのフレームを用いたサムネイル画像が生成されればよい。このようにすることで、一度動画データの記録媒体へのファイル記録が終了してから、記録媒体から動画ファイルを読み出したりすることなく、動画データのサムネイルを生成することができるので、処理が早くなる。なお、静止画の撮影指示がなされたと判断した場合、CPU101は更なる静止画の撮影指示がなされても、指示を受け付けないよう制御する。
次に、CPU101は、符号化復号化処理部130によるサムネイル画像生成処理が完了したか否かを判定し(S212)、処理が完了している場合には、次に、S210で撮影されたデジタル画像信号を静止画データとするべく、画像処理部111に現像処理を、符号化復号化処理部130に符号化処理を順次実行させる(S220)。このとき、CPU101は並行して、サムネイル生成処理で生成されたサムネイル画像をRAM102に一時記憶されている符号化済みの動画データのヘッダ情報に含めて、記録媒体151に記録するように記録再生宇150を制御する(S221)。ここで、静止画の現像処理(S220)とは、撮影時に各画素に対してその周辺画素から足りない色情報を集め与えることで色情報を補完し、フルカラー画像を作り出す「デモザイク」処理等を含む処理で、このほかに、ガンマ補正、ホワイトバランス調整などの処理を含んでも良い。
CPU101は、前述した現像処理が終了すると、現像したデジタル画像データを再びRAM102に記憶させ、表示制御部141に読み出させて、表示部140に表示させる。これは、一般にデジタルカメラで撮影を行った直後に表示部140に、撮影画像を表示させる、所謂「レックレビュー」表示である。ちなみに、静止画撮影の指示がなされてから静止画の現像処理が終了するまでの間、表示部140には、何の画像も表示されておらず、黒画像が表示されている。また、代わりに「処理中」などの状態をユーザに提示するための表示をさせても良い。
また、現像処理が終了すると、CPU101は、予め設定された静止画記録用の符号化方式に従って符号化復号化処理部130に符号化処理を実行させる。次にCPU101は、静止画の現像処理、符号化処理が終了したか否かを判定する(S222)。静止画の符号化処理が終了したと判定すると、(S222でYes)、CPU101は、生成された静止画データを記録再生部150に送り、記録媒体151に記録させる(S223)。そして、ユーザが操作入力部102を操作してダイジェストムービーモードを抜ける指示をしていないかぎり(S224でNo)、CPU101は、静止画の記録と並行して、動画の撮影、符号化処理(S201)を開始する。このとき、CPU101は、表示制御部141に、RAM102に記憶されたデジタル画像信号を読み出させ、再びスルー画像を表示部140に表示させる。
以上のように、本実施例の撮像装置100は、「ダイジェストムービーモード」において、動画ファイルと、静止画ファイルを記録する。
ここで、本実施例の「ダイジェストムービーモード」において、記録媒体151に既に記録されている動画ファイル(既存動画ファイル)の動画データに対して、新たに撮影された動画データ(新規動画データ)を連結(追記)する場合の例について説明する。たとえば、既存動画ファイルの記録された日付と、新規動画データの取得した日付(撮影時点でのカメラの日付設定でも良い)とが同じ場合には、動画データを連結するものとすると、図3に示すように記録される。図3は、撮影タイミングと、動画ファイル、静止画ファイルの記録状態を示すものである。
同一の撮影日を有する静止画ファイルP1、P2、及びP3は記録媒体151の1つのフォルダ(同一フォルダ内)に記録され、各静止画の撮影直前にRAM102に記憶された動画データは同じフォルダに1つの連結された動画ファイルとして記録される。また、静止画ファイルP1からP3とは異なる撮影日を有するP4及びP5は、静止画ファイルP1が記録されたフォルダとは異なるフォルダに記録されるものとする。このとき、静止画ファイルP4の撮影直前にRAM102に記憶された動画データが、当該動画データの途中で撮影日が変更された場合であっても、静止画ファイルP4の撮影日と同一のフォルダに記録されるように制御するものとする。すなわち、撮影指示の入力されたタイミングの日付情報によって、動画データを連結するか新規に保存するかのいずれかを決定することにもなる。
また、本実施形態では、静止画撮影の指示が入力される毎に、動画データに対応するサムネイル画像を生成するものとして説明したが、たとえばP1の静止画データの撮影時に生成される動画データM1に対応するサムネイルは生成し、追記されるM2、M3の動画データのサムネイル画像を生成しないようにしても良い。このようにすると、動画ファイル1つについて、サムネイル画像を1つとすることができる。
次に、「ダイジェストムービーモード」において、記録媒体151に既に記録されている動画ファイル(既存動画ファイル)の動画データに対して、新たに撮影された動画データ(新規動画データ)を連結(追記)する編集を行う場合の動作について詳しく説明する。前述したように、連結(追記)するか否かの判定は、撮像装置100の起動時または、ダイジェストムービーモード選択時、または、静止画記録の指示が入力された後に行う。
この動画データの連結処理は、図2のS221において実行される処理であるが、後述するように、一部の処理は、S222、S223、S201からS204と並行に処理されても良い。
図4は、動画データの連結(追記)をする編集を行う場合の撮像装置の制御動作を示す図であり、図5は、図4の各ステップに対応し、記録媒体151内の動画ファイルの状態を示す図である。図4の動作は、CPU101が、撮像装置100の各ブロックを制御することにより実行される処理である。
まず、CPU101は、S202で、RAM102に記憶させた所定時間分の動画データを記録媒体151の空き領域に記録するように記録再生部150を制御する(S410)。このとき、ファイルシステムとしては、FATを用いているため、基本的なルールに則り、空いているクラスタに動画データを記録する。
図5(a)は、RAM102の動画データを記録媒体151に記録する前の特定の動画ファイルの記録状態を示す図である。図5(a)においては、クラスタ1から2にかけて、特定の動画ファイルの動画データが記録されており、クラスタ3に特定の動画ファイルのヘッダが記録されている。動画ファイルは、このように、クラスタ1から3に記録されている。そして、FAT領域には、クラスタ番号3→1→2の順でファイルが記録されていることを示すようにFATエントリーにクラスタ番号が記録されている。すなわち、クラスタ番号3のFATエントリーには「1」が記録されており、クラスタ番号1のFATエントリーには「2」が記録されており、クラスタ番号2のFATエントリーには、ファイル終端を示す「FF」が記録されている。そのため、特定の動画ファイルは、クラスタ番号3→1→2の順で記録媒体からデータを読み出せばよいのである。
そして、S410で、RAM102に記憶された所定時間分の動画データを記録媒体151に記録した状態を示す図が、図5(b)である。図5(b)では、クラスタ4、5に、所定時間分の動画データが記録された状態を示している。この状態では、FAT領域のFATエントリーを確認してもわかるように、所定時間分の動画データは、クラスタ1から3に記録された特定の動画ファイルとは、別のクラスタ4、5に記録されたデータとなっている。
次に、S420の処理を説明する。ここで、S410の処理が開始していれば、S410の処理が終了していなくても、S420の処理を開始しても良い。
CPU101は、RAM102に記憶された所定時間分の動画データの記録が開始した後に、記録媒体151に記録された特定の動画ファイルの動画データを解析し、連結位置を特定する。連結位置は、本実施例では、特定の動画ファイルの動画データの後とする。この処理は、特定の動画ファイルのサイズが大きいほど、ファイルの読み出しや解析に時間がかかるので、連結位置の特定までにも時間がかかることがある。
次に、CPU101は、記録媒体151に記録された、所定時間分の動画データを特定の動画ファイルに連結(追記)するために、FATエントリーを書き換えるように、記録再生部150を制御する(S430)。すなわち、図5(c)に示す要に、特定の動画ファイルの終端がクラスタ番号2である状態を変更し、クラスタ2の後、続けて、クラスタ4、5を読むように修正する。具体的には、FATのクラスタ番号2のFATエントリーをファイル終端を示す「FF」から、新規動画データの記録されているクラスタの先頭であるクラスタ4を読むように、「4」に書き換えるのである。
そして、CPU101は、特定の動画ファイルのファイルヘッダを読み出して、新規動画データのデータを管理する情報を追記するように、ファイルヘッダを編集し、記録媒体151に記録する(S440)。ファイルヘッダにはたとえば、動画の特定のフレーム、または特定のGOPの開始位置が動画ファイルのどの位置のデータであるかを示すような管理情報が記録されることになる。このような処理により、図5(c)に示すように、連結編集後の動画ファイルは、クラスタ1から5からなり、クラスタ番号3→1→2→4→5の順で記録された状態になる。
そして、CPU101は、処理をS222へ移す。
なお、S420からS440の処理は、S222、S223の処理と並行して実行されてもよく、さらには、次の撮影による動画データの一時記憶S201からS204の処理と並行して実行されても良い。なぜなら、S410の処理により、RAM102に記憶されていた動画データは、記録媒体151に既に記録されているため、動画データを一時的に記憶するためのRAM102の領域は開放されるからである。RAM102の動画データを一時記憶するための記憶領域が開放されれば、S201により得られた動画データをRAM102に記憶しはじめても良いのである。
このように、本実施例の撮像装置100のCPU101は、撮影の指示が入力されると、撮影の指示が入力されるまでに、RAM102に記憶された所定時間分の動画データを記録媒体151に記録するように記録再生部150を制御する(S410)。そして、RAM102に記憶された所定時間分の動画データの記録が開始した後に、CPU101は、記録媒体151に記録された特定の動画ファイルの動画データを解析し、連結位置を特定する(S420)。その後、連結位置に続けて前記所定時間分の動画データが再生されるように前記特定の動画ファイルを編集するようにFATやヘッダを編集している。
これにより、本実施例の撮像装置は、記録媒体151に記録された既存の動画ファイルの動画データに新規に撮影された動画データを連結する場合。既存動画ファイルの連結位置を解析する前に、RAMに一時的に記憶されている新規動画データを記録媒体に記録するようにし、RAM102の動画データ記憶領域を解放することができるようにしている。そのため、既存動画ファイルの連結位置を特定する前に、RAM102の動画データ記憶領域に、次の動画データを記憶できるようにすることができ、次に動画データを撮影するまでの時間が長くならないようにすることができる。
次に、記録媒体151に記録される動画ファイルのファイルフォーマットについて説明する。図6は、本実施例の動画のファイルフォーマットを説明するための図である。
本実施例において、動画ファイルはMOVフォーマットで記録されている。なおMOVフォーマットでは、ファイルに記録されるデータは「アトム」と呼ばれるデータ構造の内部に記述され、アトムを単位としてファイルに記録される。各アトムはそれぞれ、「Sizeフィールド」、「Typeフィールド」を有する。「Sizeフィールド」は、Sizeフィールドを含む、アトム全体のデータサイズを表す4バイトのフィールドである。「Typeフィールド」は、アトムの種類を表す4バイトのタイプ識別子のフィールドである。なお、各アトムにおいて「Typeフィールド」以降のフィールドはアトムによってはオプションであるため、ここでは説明を省略する。また、アトム内に他のアトムを包含することが可能であり、それにより入れ子構造を実現している。MOVフォーマットで記録された動画ファイルは、図6に示すような構造で各アトムを格納している。
図6に示すように、MOVフォーマットの動画ファイルは、以下のアトムを有する。
ファイルの種別を表す、ftyp(ファイルタイプアトム)701。後述のmvhd(ムービーヘッダアトム)706やtrak(トラックアトム)707、708、709などを含む、音声や映像に関する情報を格納した、moov(ムービーアトム)702。音声や映像、テキストなどの実データが格納した、mdat(ムービーデータアトム)703。
また、moov(ムービーアトム)702には、以下のアトムが格納される。
任意のデータが格納された、udta(ユーザーデータアトム)704。撮像装置100のモデル名や通信部152で受信した撮像装置100の位置情報やUTC時刻などのメタデータが格納された、meta(メタデータアトム)705。動画の作成日時や修正日時、タイムスケール、Duraionなどが格納された、mvhd(ムービーヘッダアトム)706。映像用のtrak(トラックアトム)707。音声用のtrak(トラックアトム)708。テキスト用のtrak(トラックアトム)709。
さらに、各trak(トラックアトム)707〜709には、以下のアトムが格納される。
そのトラックの作成日時やDuration(後述のチャンク内の各サンプルの間の時間的間隔)、そしてIDなどが格納した、tkhd(トラックヘッダアトム)710。なお、本実施例では、映像トラックのIDは1、音声トラックのIDは2、テキストトラックのIDは3、とする。トラック間の参照情報を格納したtref711。本実施例では、映像トラックがテキストトラックをチャプタとして参照するため、映像用のtref711には、テキストトラックのIDである3が記載され、それをチャプタとして参照するため、識別子として‘chap’と記載されている。音声トラックにおいても、も同様である。本実施例では、テキストトラックにはtrefは存在しなくて良い。
また、各trak(トラックアトム)707〜709には、以下のアトムも格納される。
1チャンクがいくつのサンプル(映像の場合はフレーム)数で構成されているかを示すstsc(サンプルチャンクアトム)712。本実施例では全ての映像チャンクが1チャンク=1サンプル(フレーム)から構成されるものとする。
各サンプル間の時間的間隔(Duration)を格納した、stts(同期サンプルアトム)713。なお、映像用のトラックの場合は、1つの動画ファイル内でフレーム間隔が変わらないので、たとえば、30フレーム毎秒であれば、「0.033秒」に対応するデータが記載される。また、テキスト用のトラックの場合は、各チャプタが異なる時間間隔を持つため、先頭から順に、例えば「4秒」、「3秒」、「4秒」、「2秒」と、各チャプタの長さに対応するデータが記載される。1サンプルあたり各サンプルのデータサイズを格納した、stsz(サンプルサイズアトム)714。各チャンクのファイルオフセットを格納したstco(チャンクオフセット)715。
音声や映像、テキストなどの実データが格納した、mdat(ムービーデータアトム)703には、以下のアトムが格納される。
各チャプタのタイトルをテキストデータとして格納したテキストチャンク716、717。テキストチャンク716、717は、最初の領域には、後に続くテキストデータのデータサイズ(16進数)を示すデータが格納される。テキストデータ領域にはテキストデータがASCIIコードで格納される。本実施例では、「ダイジェストムービーモード」において静止画の撮影された撮影時刻をテキストデータとして記載するものとする。すなわち、「ダイジェストムービーモード」で、12時34分56秒に静止画撮影の指示があった場合、記録媒体に記録される動画は、12時34分52秒〜12時34分56秒に対応する動画である。しかし、この動画のチャプタのタイトルとしては、静止画撮影の指示があった12時34分56秒に対応するテキストデータが書き込まれる。
また、音声や映像、テキストなどの実データが格納した、mdat(ムービーデータアトム)703には、以下のアトムも格納される。
音声データチャンク718、719。映像データチャンク720、721、722等。図7において、アルファベットはピクチャの種類を示す。すなわち、フレーム内予測符号化されたIピクチャであるか、前方予測のフレーム間予測符号化されたPピクチャ、双方向予測のフレーム間予測符号化されたBピクチャのいずれかを示す。本実施例では、フレーム内予測符号化されたIピクチャであるためIが付されている。さらに、アルファベットの添え字の数字は先頭からのフレーム番号を表している。つまり、映像データチャンク720は、1番目のフレームがIピクチャ(フレーム内予測符号化ピクチャ)であることを表している。
ここで、mdatアトム703のデータの格納状態について説明する。
前述したようにmdatアトム703には、テキストチャンク、音声チャンク、映像チャンクが格納されている。なお、本実施例においては、音声チャンク1個と、映像チャンクを15個とを組として格納している。これは、音声データ0.5秒と、映像の15フレームが対応するようにするためにこのように記録している。しかし、格納方法この方式に限られない。さらに、本実施例のようにチャプタごとに、テキストチャンク716、717が格納される。これは、チャプタ1つにつき一つのテキストチャンクが対応する。すなわち、本実施例のように「ダイジェストムービーモード」で撮影を繰り返すと、撮影される度にテキストチャンクがmdatアトムに格納されることになる。テキストチャンクは、チャプタ一つに対応するものとなる。なお、前述したように、テキスト用のtrakアトムのテキスト用のsttsアトムにも、テキストチャンクのサンプルの再生間隔(Duration)が格納されている。
動画ファイルはこのようなフォーマットで記録されている。
そのため、たとえば、mdat内の任意の映像フレームや音声データ、またはチャプタにアクセスする場合には、moov702のstsz714およびstco715に格納されている情報を用いればよい。
ここで、本実施例の撮像装置100の特徴的な動作である、記録媒体151に記録された動画ファイルの指定されたチャプタに対応する動画データを削除する編集処理について説明する。
削除対象のチャプタを選択する方法としては、動画ファイルのmoovアトムのたとえばテキスト用のtrakアトムを解析することで、チャプタの一覧画面を表示して、対象となるチャプタを選択させる方法がある。また、再生モードにおいて表示部140に表示しているフレームの含まれるチャプタを削除対象のチャプタとして選択しても良い。
本実施例においては、指定されたフレームの属するチャプタの動画データを削除するものとして説明を行う。
図7は、本実施例の編集処理の動作を説明するためのフロー図であって、CPU101がRAM102に展開したプログラムに基づいて、撮像装置100の各部を制御することにより、実行される処理である。また、図8は、動画ファイルの状態を示すものであって、図8(a)が編集前の動画ファイル、図8(b)が編集後の動画ファイルそれぞれの状態を示している。
CPU101は、表示中のフレーム等の指定されたフレームの属するチャプタの動画データを削除する指示が、操作部104より入力されたことに応じて図7のフロー図で示される処理を開始する。
まずCPU101は、指定されたフレームの番号(n)を取得する(S801)。次に、CPU101は、映像用のstts713を解析し、映像サンプルあたりの再生時間(前述のDuraitaion)Dvを取得する(S802)。そして、CPU101は、フレームの番号(n)と、映像サンプルあたりの再生時間Duration(Dv)とから、フレーム番号(n)までの時間(D)を算出する(S803)。
次にCPU101は、テキスト用sttsを解析し、動画ファイルの各チャプタに対応する各テキストチャンクの再生時間を取得し(S804)、指定されたフレーム番号(n)のフレームの再生時間(D)と比較する(S805)。
ここで、再生時間(D)が、c−1番目のテキストチャンクの再生時間と、c番目のテキストチャンクの再生時間の間である場合、指定されたフレーム番号(n)のフレームは、c番目のチャプタに属することになる。たとえば、フレーム番号(n)までの時間(D)が19秒であったとする。c−1番目のテキストチャンクの再生時間が18秒である場合、c−1番目のテキストチャンクに対応するチャプタは、18秒までで終了し、その後はc番目のテキストチャンクに対応するチャプタとなる。次にc番目のテキストチャンクの再生時間を加えると22秒になったとすると、フレーム番号(n)までの時間(D)は22秒より小さいので、指定されたフレーム番号(n)のフレームは、c番目のチャプタに属することになる。CPU101は、このように、再生時間(D)が、c−1番目のテキストチャンクの再生時間と、c番目のテキストチャンクの再生時間の間であるかを判定する。この判定により、指定されたフレームの属するチャプタがc番目のチャプタであることを特定する(S806)。
次に、CPU101は、指定されたフレームの属するc番目チャプタの再生時間を、映像サンプルあたりのDuraitaion(Dv)で除算する。これにより、c番目のチャプタの最後のフレーム番号を特定することができる(S807)。
次に、CPU101は、以下の処理によりc番目のチャプタの動画データの動画ファイル上における終端CutoffsetEを特定する(S808)。CPU101は、映像用のstszアトムより、c番目のチャプタの最後のフレームのデータサイズを、そして、映像用のstcoアトムより、c番目のチャプタの最後のフレームのファイルオフセットを取得する。そして、c番目のチャプタの最後のフレームのファイルオフセットにc番目のチャプタの最後のフレームのデータサイズを加算して、c番目のチャプタの最後のフレームのデータ上の終端を算出し、これを終端CutoffsetEとして特定する。
次に、CPU101は、以下の処理によりc番目のチャプタの動画データの動画ファイル上における先頭CutoffsetSを特定する(S809)。CPU101は、テキスト用のstcoアトムよりテキストチャンクのファイルオフセットを読み出して、指定されたフレームの属するc番目のチャプタのデータ上の先頭CutoffsetSとして特定する。
図6で説明したように、mdatアトムには、各チャプタごとにテキストチャンクが生成され、テキストチャンクは、各チャプタに属する音声チャンク、映像チャンクの先頭に配置され、また、音声チャンクは、対応する映像チャンクよりも前に配置される。そのため、S808、S809の処理により、c番目のチャプタの先頭と終端を特定することができる。なお、S808とS809の処理はどちらの処理を先に行っても良い。
ここで、図8(a)に示すように動画ファイルが記録されているものとして説明をする。
次に、CPU101は、CutoffsetSをクラスタサイズのサイズで切り上げた計算を行い、クラスタ境界CutoffsetS’を特定する(S811)。また、CPU101は、CutoffsetEをクラスタサイズのサイズで切り下げた計算を行い、クラスタ境界CutoffsetE’を特定する(S812)。
ここで、動画ファイルにおけるc番目のチャプタの動画データの先頭と終端のファイルオフセットがわかると、CPU101は、記録媒体上での動画ファイルにおけるc番目のチャプタの動画データの記録位置が特定する。これは、記録媒体151において、クラスタサイズが所定のサイズに決まっているため、ファイルの先頭から数えて何バイト目が何クラスタ目であるかをCPU101が算出する。そして、S811、S812の処理により、ファイルアロケーションテーブルを解析して、どのクラスタが、c番目のチャプタの動画データの記録先頭クラスタであるか、末尾クラスタであるかを特定する。
図8(a)に示すように、c番目のチャプタのデータは、クラスタ番号8からクラスタ番号11番に記録されている。すなわち、クラスタ境界CutoffsetS’は、c番目のチャプタのデータの先頭クラスタの先頭を示す。また、クラスタ境界CutoffsetE’は、c番目のチャプタのデータの末尾クラスタの先頭を示す。
次に、CPU101は、c番目チャプタの直前のチャプタであるc−1番目のチャプタの再生時間を、映像サンプルあたりのDuraitaion(Dv)で除算する。これにより、c−1番目のチャプタの最後のフレーム番号を特定する。そして、S808と同様に、CPU101は、映像用のstszアトムより、c−1番目のチャプタの最後のフレームのデータサイズを、そして、映像用のstcoアトムより、c−1番目のチャプタの最後のフレームのファイルオフセットを取得する。そして、c−1番目のチャプタの最後のフレームのファイルオフセットにc−1番目のチャプタの最後のフレームのデータサイズを加算して、c−1番目のチャプタの最後のフレームのデータ上の終端を算出する。そしてCPU101は、S812と同様にc−1番目のチャプタの最後のフレームのデータ上の終端をクラスタサイズのサイズで切り下げた計算を行い、c−1番目のチャプタの最後のフレームの最終クラスタを特定する(S813)。
図8(a)に示すように、c−1番目のチャプタのデータの最終クラスタは、クラスタ番号5である。
次に、CPU101は、テキスト用のstcoアトムよりテキストチャンクのファイルオフセットを読み出して、c+1番目のチャプタのデータ上の先頭を特定する。そして、S811と同様に、CPU101は、c+1番目のチャプタのデータ上の先頭を、クラスタサイズのサイズで切り上げた計算を行い、c+1番目のチャプタのデータの先頭クラスタを特定する(S814)。
図8(a)に示すように、c+1番目のチャプタのデータの先頭クラスタはクラスタ番号13である。
通常の動画ファイルであれば、チャプタ境界の動画データに着目すると、特定のクラスタに2つチャプタに対応する動画データがまたがって記録されていることがほとんどである。そのため、通常の動画ファイルであれば、c番目のチャプタのデータの先頭クラスタと末尾クラスタは、他のデータが記録されている可能性がある。しかし、本実施例の「ダイジェストムービーモード」では、同一クラスタ内に他のチャプタの動画データが含まれないように記録媒体に動画ファイルを記録することができる。そこで、本実施例では、c−1番目のチャプタに対応する動画データの最終クラスタの次に、c+1番目のチャプタの動画データの先頭のクラスタを読むようにファイルアロケーションテーブル(FAT)のクラスタチェーンを書き換える。
なお、「ダイジェストムービーモード」に限らず、同一クラスタ内に他のチャプタの動画データが含まれないように記録媒体に記録された動画ファイルを編集する場合であれば、本実施例の削除処理を適用することができる。
次に、CPU101は、c番目のチャプタのデータを無効とするために、moovアトム内の映像用、音声用、テキスト用の各trakアトム内のstcoアトム、stszアトム、sttsアトムを書き換える。すなわち、各サンプルのファイルオフセット、各サンプルのデータサイズ、再生時間(Duration)を書き換える(S815)。
次にCPU101は、動画ファイルのファイルアロケーションテーブル(FAT)を書き換える(S816)。すなわち、図8(b)に示すように、c番目のチャプタの先頭クラスタから最終クラスタについては、空きクラスタを示す「0」を書き込む。そして、c−1番目のチャプタに対応する動画データの最終クラスタの次にc+1番目のチャプタに対応する動画データの先頭のクラスタを読むようにファイルアロケーションテーブル(FAT)のクラスタチェーンを書き換える。また、削除を行った動画ファイルを示すディレクトリエントリのデータサイズや作成日時等の情報も書き換える。
このように、S815の処理により、c番目のチャプタの動画データを無効とすると共に、S816の処理により動画ファイルのc番目のチャプタの動画データの削除によるファイルサイズの削減を行う。
本実施例の撮像装置100は、このような方法で、動画ファイルの所定のチャプタに属する動画データを削除するため、動画のデコード、再エンコード処理を実行することなく、動画の編集を実行することができる。そのため、動画編集処理を高速に行うことができる。
なお、本実施例では、「ダイジェストムービーモード」のように、同一クラスタ内に他のチャプタの動画データが含まれないように記録媒体に動画ファイルが記録されている場合について説明した。しかし、通常の動画データのように、同一クラスタ内に他のチャプタの動画データが含まれる動画ファイルを編集する場合には、以下のように処理を行う。すなわち、c番目のチャプタのデータの先頭クラスタの次に終端クラスタを読むように、ファイルアロケーションテーブル(FAT)のクラスタチェーンを書き換えるようにする。
本実施例では、撮像装置100を例にとって説明した。しかし、本実施例の削除処理を実行することができるものであれば、本発明を適用することができる。例えば、コンピュータ、タブレット型端末、スマートフォン、携帯電話、テレビ、等であっても良い。また、本実施例の削除処理をコンピュータに実行させる為のプログラムも本発明のしそうに含まれる。
なお、本実施例の撮像装置100は、基本的に、既存動画ファイルの動画データに対して、新規動画データを追記するものとするが、以下のような条件を満たす場合には、追記しないようにしている。
・追記対象の既存動画ファイルがプロテクトされている場合
記録媒体151に記録されている特定の動画ファイル「MDG_000X.MOV」がプロテクトされている場合には、ユーザがファイルの改変を望まないファイルである可能性が高いので、追記不可能とする。
・追記撮影によりファイルサイズが所定のサイズを超える場合
記録媒体151は、前述したようにたとえばFATファイルシステムで管理されている。その場合、たとえば、FAT32では、1ファイルあたり4GB以上になると読み込めなくなってしまう。そのため、次の撮影により「追記動画ファイル」が4GBを超える場合には、追記不可能とする。
・追記対象の既存動画ファルの動画のGOP構造に異常がある場合
記録媒体151に記録されている追記対象である特定の動画ファイル「MDG_000X.MOV」のチェックの結果、GOP構造に異常がある場合には、追記する動画データにまで影響が出てしまう可能性があるので、追記不可能とする。
・追記対象のファイルが無い場合
ダイジェストムービーモードで撮影された動画には、ファイル名として、「MDG_000X.MOV」という、MDGという識別子と通し番号4桁が付加されるようになっている。しかし、ファイル名に「MDG」を含む識別子の動画がない場合には、ダイジェストムービーモードで撮影された動画ファイルが存在しないので、追記不可能とする。また、撮像装置100の不図示の不揮発性メモリに最後にダイジェストムービーモードで記録した動画ファイルのファイル名を記録させておき、そのファイルが存在しない場合にも、追記不可能とする。
・追記対象の動画ファイルの撮影日が撮像装置に設定された日と異なる場合
ダイジェストムービーモードで同一撮影日に撮影された動画データを順次追記する場合には、日付の変更に伴って、別の動画ファイルを記録することになるので、追記不可能とする。
・追記対象の動画ファイルに関連づけられた地域設定が撮像装置に設定された地域と異なる場合
ダイジェストムービーモードで同一地域で撮影された動画データを順次追記する場合には、地域の変更に伴って、別の動画ファイルを記録することになるので、追記不可能とする。たとえば地域情報は、GPSユニットを用いて、得られた位置情報を用いても良いし、撮像装置の時計の設定時に選択する、「国」の情報を用いても良い。
・追記対象の動画ファイルに関連づけられた撮像装置の情報が、新規動画データを撮影する撮像装置と異なる場合
同一の撮像装置で、ダイジェストムービーモードで撮影された動画データのみを追記する場合には、記録媒体に記録された追記対象の動画ファイルに関連づけられた撮像装置の識別情報が、撮影を行う撮像装置と一致するかを確認する。そして、異なる場合には追記不可とする。
・動画記録設定が追記元の既存動画ファイルと同一でない場合
本実施例のように、既存動画ファイルに新規動画データを追記する場合には、動画の途中で、フレームレートや画像サイズ、GOP構成、動画符号化方式が変更されてしまうと、シームレスに再生できなくなってしまう可能性がある。そのため、既存動画ファイルの動画データと、新規動画データの動画記録設定が同一でない場合には、追記不可能とする。フレームレートや画像サイズ、GOP構成、動画符号化方式等の情報は、既存動画ファイルのファイルヘッダ等に記録されている。
・音声記録設定が追記元の既存動画ファイルと同一でない場合
本実施例のように、既存動画ファイルに新規動画データを追記する場合には、動画の途中で、音声のサンプリングレート、チャンネル数、ビット深度や、音声符号化方式等が変更されてしまうと、再生できなくなってしまう可能性がある。そのため、既存動画ファイルの動画データと、新規動画データファイルの音声記録設定が同一でない場合には、追記不可能とする。音声のサンプリングレートや、音声符号化方式等の情報は、既存動画ファイルのファイルヘッダ等に記録されている。
・記録媒体151の挿抜履歴がある場合
撮像装置100の起動時に、CPU101は、最後に連続動画撮影モードにおいて撮影した後に、記録媒体151が挿抜された履歴が、不図示の不揮発性メモリに残っている場合には、追記不可能とする。これは、記録媒体151に記録されている「MDG_000X.MOV」がコンピュータなどにより編集されてしまい、画像サイズなどが変更され、追記により動画ファイル自体が壊れたりする可能性を低減するためである。そのためには、追記対象の「MDG_000X.MOV」のファイルヘッダに記録されている撮影日時情報と、不揮発性メモリに残っている挿抜履歴の時間情報とを比較する。追記動画ファイル「MDG_000X.MOV」は、その動画に記録されている複数のシーンの動画データのうち、最初に撮影された時間情報をファイルヘッダに記録されるようになっている。
・追記撮影により動画再生時間が所定時間を超える場合
撮像装置100においては、所定時間(たとえば、30分)を超える撮影を望まない場合を考慮し、連続動画撮影モードにおいて、新たな撮影をすることにより、「追記動画ファイル」の動画データの再生時間が30分を超える場合には、追記不可能とする。そのためには、たとえば、ファイルヘッダに記載されている「追記動画ファイル」の再生時間を読み出して、29分58秒等であれば、追記不可能とするのである。
・追記元の動画ファイルの記録されているフォルダ内のファイル数が所定数以上になる場合
撮像装置100においては、静止画ファイルや動画ファイルを記録媒体151に記録するファイル数をDCFという規格に基づいて記録している。このDCF規格では、1つのフォルダ内に最大9999個のファイルを記録可能としているが、本実施例のように撮影を行った際に、静止画ファイルが新たに生成されるため、静止画ファイルが追記元の動画ファイルの格納されているフォルダに記録できないことがある。その場合には、関連する静止画ファイルと、追記元の動画ファイルとが異なるフォルダに格納されてしまい、ユーザが後で閲覧するときに見づらくなってしまう。そこで、このような場合には、追記をせずに、動画を新規なファイルとして記録し、なおかつ新しいフォルダに格納するものとする。ここでは9999個のファイルを上限として説明したが、999個でも良いし、900個でも良いし、100個でも良い。
また、記録媒体151もしくは既存動画ファイルが壊れているなどの原因により、正常にチェックすることができなかった場合も、追記不可と判定する。
本実施例では、撮像装置について説明した。撮像装置としては、一般的なコンパクトデジタルカメラ、デジタル一眼カメラ、ビデオカメラ、携帯電話が含まれる。また、本発明の技術を適用可能な装置は、撮像装置に限らず、たとえば、カメラを接続したパーソナルコンピュータであっても良い。
(他の実施形態)
上述の実施形態は、システム或は装置のコンピュータ(或いはCPU、MPU等)によりソフトウェア的に実現することも可能である。従って、上述の実施形態をコンピュータで実現するために、該コンピュータに供給されるコンピュータプログラム自体も本発明を実現するものである。つまり、上述の実施形態の機能を実現するためのコンピュータプログラム自体も本発明の一つである。
なお、上述の実施形態を実現するためのコンピュータプログラムは、コンピュータで読み取り可能であれば、どのような形態であってもよい。例えば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等で構成することができるが、これらに限るものではない。上述の実施形態を実現するためのコンピュータプログラムは、記憶媒体又は有線/無線通信によりコンピュータに供給される。プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記憶媒体、MO、CD、DVD等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
有線/無線通信を用いたコンピュータプログラムの供給方法としては、コンピュータネットワーク上のサーバを利用する方法がある。この場合、本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムファイル)をサーバに記憶しておく。プログラムファイルとしては、実行形式のものであっても、ソースコードであっても良い。そして、このサーバにアクセスしたクライアントコンピュータに、プログラムファイルをダウンロードすることによって供給する。この場合、プログラムファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに分散して配置することも可能である。つまり、上述の実施形態を実現するためのプログラムファイルをクライアントコンピュータに提供するサーバ装置も本発明の一つである。
また、上述の実施形態を実現するためのコンピュータプログラムを暗号化して格納した記憶媒体を配布し、所定の条件を満たしたユーザに、暗号化を解く鍵情報を供給し、ユーザの有するコンピュータへのインストールを許可してもよい。鍵情報は、例えばインターネットを介してホームページからダウンロードさせることによって供給することができる。また、上述の実施形態を実現するためのコンピュータプログラムは、すでにコンピュータ上で稼働するOSの機能を利用するものであってもよい。さらに、上述の実施形態を実現するためのコンピュータプログラムは、その一部をコンピュータに装着される拡張ボード等のファームウェアで構成してもよいし、拡張ボード等が備えるCPUで実行するようにしてもよい。