(57)【要約】【課題】メモリを効率的に使用することで、データ落ちの少ない映像配信をより多くのクライアントへ提供できるようにする。【解決手段】特定の相手装置への配信処理が映像フレームの生成より遅れていることを検出すると、前記配信制御手段が保持している一送信単位の映像フレーム数を減少し、その後、一定期間について前記配信処理の遅延が解消したことを検出すると前記配信制御手段が保持している一送信単位の映像フレーム数を増加するようにして、生成された画像データを一時的に保存できなくなって画像データを連続で送れなくなったり、配信するクライアント数を制限したりしなければならなくなってしまう不都合が発生しないようにする。【選択図】図２
2011234233.tif 000002
【特許請求の範囲】
【請求項１】
映像フレームを生成して符号化する撮像処理手段と、
前記撮像処理手段により符号化された映像フレームを一時保存する一時記憶部と、
前記一時記憶部に保存した単数または複数の映像フレームを一送信単位として配信を行う配信制御手段と、
前記一送信単位としてまとめられた映像フレームを実際に相手装置に送る通信処理手段と、
前記配信制御手段により行われる配信処理の遅延状況を監視する遅延監視手段と、
を有し、
前記遅延監視手段は、前記配信制御手段により行われている特定の相手装置への配信処理が映像フレームの生成より遅れていることを検出すると、前記配信制御手段が保持している一送信単位の映像フレーム数を減少し、その後、一定期間について前記配信処理の遅延が解消したことを検出すると前記配信制御手段が保持している一送信単位の映像フレーム数を増加することを特徴とする映像配信装置。
【請求項２】
前記遅延監視手段が検出する遅延時間は複数の閾値を持ち、一送信単位の最大数を複数段階で変更することを特徴とする請求項１に記載の映像配信装置。
【請求項３】
映像フレームを生成して符号化する撮像処理手段と、
前記撮像処理手段により符号化された映像フレームを一時保存する一時記憶部と、
前記一時記憶部に保存した単数または複数の映像フレームを一送信単位として配信を行う配信制御手段と、
前記一送信単位としてまとめられた映像フレームを実際に相手装置に送る通信処理手段と、
前記一時記憶部のメモリ使用量を上限閾値と復旧閾値とで監視するメモリ監視手段と、
を有し、
前記メモリ監視手段は、前記一時記憶部のメモリ使用量が前記上限閾値を上回ったことを検出すると、前記配信制御手段が配信を行う映像フレームの送信単位を減少させ、
前記一時記憶部のメモリ使用量が前記復旧閾値を下回ったことを検出すると、前記配信制御手段が配信を行う映像フレームの送信単位を増加させることを特徴とする映像配信装置。
【請求項４】
前記メモリ監視手段が検出する下限閾値は複数の閾値を持ち、一送信単位に含まれる映像フレーム数の最大値を増減させることを特徴とする請求項３に記載の映像配信装置。
【請求項５】
映像フレームを生成して符号化する撮像処理手段と、
前記撮像処理手段により符号化された映像フレームを一時保存する一時記憶部と、
前記一時記憶部に保存した単数または複数の映像フレームを一送信単位として配信を行う配信制御手段と、
前記一送信単位としてまとめられた映像フレームを実際に相手装置に送る通信処理手段と、
前記配信制御手段により行われる配信処理の遅延状況を監視する遅延監視手段と、
前記一時記憶部のメモリ使用量を上限閾値と復旧閾値とで監視するメモリ監視手段と、
を有し、
前記遅延監視手段により相手装置毎への一送信単位に含まれる映像フレーム数を増減させ、かつ前記メモリ監視手段により一送信単位に含まれる映像フレーム数を増減させることを特徴とする映像配信装置。
【請求項６】
映像フレームを生成して符号化する撮像処理工程と、
前記撮像処理工程において符号化された映像フレームを一時記憶部へ一時保存する一時記憶工程と、
前記一時記憶部に保存した単数または複数の映像フレームを一送信単位として配信を行う配信制御工程と、
前記一送信単位としてまとめられた映像フレームを実際に相手装置に送る通信処理工程と、
前記配信制御工程において行われる配信処理の遅延状況を監視する遅延監視工程と、
を有し、
前記遅延監視工程においては、前記配信制御工程において行われている特定の相手装置への配信処理が映像フレームの生成より遅れていることを検出すると、前記配信制御工程において保持している一送信単位の映像フレーム数を減少し、その後、一定期間について前記配信処理の遅延が解消したことを検出すると前記配信制御工程において保持している一送信単位の映像フレーム数を増加することを特徴とする映像配信方法。
【請求項７】
映像フレームを生成して符号化する撮像処理工程と、
前記撮像処理工程において符号化された映像フレームを一時記憶部へ一時保存する一時記憶工程と、
前記一時記憶部に保存した単数または複数の映像フレームを一送信単位として配信を行う配信制御工程と、
前記一送信単位としてまとめられた映像フレームを実際に相手装置に送る通信処理工程と、
前記一時記憶部のメモリ使用量を上限閾値と復旧閾値とで監視するメモリ監視工程と、
を有し、
前記メモリ監視工程においては、前記一時記憶部のメモリ使用量が前記上限閾値を上回ったことを検出すると、前記配信制御工程において配信を行う映像フレームの送信単位を減少させ、
前記一時記憶部のメモリ使用量が前記復旧閾値を下回ったことを検出すると、前記配信制御工程において配信を行う映像フレームの送信単位を増加させることを特徴とする映像配信方法。
【請求項８】
映像フレームを生成して符号化する撮像処理工程と、
前記撮像処理工程において符号化された映像フレームを一時記憶部へ一時保存する一時記憶工程と、
前記一時記憶部に保存した単数または複数の映像フレームを一送信単位として配信を行う配信制御工程と、
前記一送信単位としてまとめられた映像フレームを実際に相手装置に送る通信処理工程と、
前記配信制御工程において行われる配信処理の遅延状況を監視する遅延監視工程と、
前記一時記憶部のメモリ使用量を上限閾値と復旧閾値とで監視するメモリ監視工程と、
を有し、
前記遅延監視工程において相手装置毎への一送信単位に含まれる映像フレーム数を増減させ、かつ前記メモリ監視工程において一送信単位に含まれる映像フレーム数を増減させることを特徴とする映像配信方法。
【請求項９】
映像フレームを生成して符号化する撮像処理工程と、
前記撮像処理工程において符号化された映像フレームを一時記憶部へ一時保存する一時記憶工程と、
前記一時記憶部に保存した単数または複数の映像フレームを一送信単位として配信を行う配信制御工程と、
前記一送信単位としてまとめられた映像フレームを実際に相手装置に送る通信処理工程と、
前記配信制御工程において行われる配信処理の遅延状況を監視する遅延監視工程とをコンピュータに実行させ、
前記遅延監視工程においては、前記配信制御工程において行われている特定の相手装置への配信処理が映像フレームの生成より遅れていることを検出すると、前記配信制御工程において保持している一送信単位の映像フレーム数を減少し、その後、一定期間について前記配信処理の遅延が解消したことを検出すると前記配信制御工程において保持している一送信単位の映像フレーム数を増加するようコンピュータを制御することを特徴とするコンピュータプログラム。
【請求項１０】
映像フレームを生成して符号化する撮像処理工程と、
前記撮像処理工程において符号化された映像フレームを一時記憶部へ一時保存する一時記憶工程と、
前記一時記憶部に保存した単数または複数の映像フレームを一送信単位として配信を行う配信制御工程と、
前記一送信単位としてまとめられた映像フレームを実際に相手装置に送る通信処理工程と、
前記一時記憶部のメモリ使用量を上限閾値と復旧閾値とで監視するメモリ監視工程とをコンピュータに実行させ、
前記メモリ監視工程においては、前記一時記憶部のメモリ使用量が前記上限閾値を上回ったことを検出すると、前記配信制御工程において配信を行う映像フレームの送信単位を減少させ、
前記一時記憶部のメモリ使用量が前記復旧閾値を下回ったことを検出すると、前記配信制御工程において配信を行う映像フレームの送信単位を増加させるようコンピュータを制御することを特徴とするコンピュータプログラム。
【請求項１１】
映像フレームを生成して符号化する撮像処理工程と、
前記撮像処理工程において符号化された映像フレームを一時記憶部へ一時保存する一時記憶工程と、
前記一時記憶部に保存した単数または複数の映像フレームを一送信単位として配信を行う配信制御工程と、
前記一送信単位としてまとめられた映像フレームを実際に相手装置に送る通信処理工程と、
前記配信制御工程において行われる配信処理の遅延状況を監視する遅延監視工程と、
前記一時記憶部のメモリ使用量を上限閾値と復旧閾値とで監視するメモリ監視工程とをコンピュータに実行させ、
前記遅延監視工程において相手装置毎への一送信単位に含まれる映像フレーム数を増減させ、かつ前記メモリ監視工程において一送信単位に含まれる映像フレーム数を増減させるようコンピュータを制御することを特徴とするコンピュータプログラム。
【請求項１２】
請求項９〜１１の何れか１項に記載のコンピュータプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は映像配信装置及び映像配信方法に関し、特に、搭載メモリが少ない組込み機器が多人数に映像を配信する際に、メモリを効率的に使用するために用いて好適な技術に関するものである。
【背景技術】
【０００２】
近年、インターネットなどIP(Internet Protocol)ネットワークを利用した配信システムが増加してきている。例えば、スキー場や動物園の状況を配信するインターネットサイトに採用されており、他にも店舗・ビル監視などにも採用されている。前述の配信システムは、監視用途にも使用されるため、配信画像の遅延を小さく抑える必要があり、高いリアルタイム性が求められている。また、同時に多数のクライアントに配信することが求められている。
【０００３】
従来、多人数に配信する際は、サーバ上のメモリにその時接続している全クライアントの配信データを一時的に保持しながら、各クライアントの配信速度に合わせて配信処理を行っていた。
【０００４】
例えば、特許文献１ではネットワークの障害等が原因で送信の遅延や中断が発生した場合に、送信できなかった過去の映像フレーム群を破棄して、常に最新の映像フレーム群を送信する方法が開示されている。
また、特許文献２では音声とマルチメディアデータを伝送するネットワークにおいて、マルチメディアデータのフラグメントサイズを動的に変更する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−０８６３６２号公報
【特許文献２】特開２０００−０２２７４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前述の特許文献１に開示された従来技術では、多数のクライアントに映像配信する際に、ネットワーク帯域が狭い等の理由で配信処理が間に合わないクライアントが複数存在した場合、一時的に保持しなければならないデータ量が増えてしまう。このような場合には、配信サーバが使用できるメモリ容量が不足する。このため、生成された画像データを一時的に保存できなくなって画像データを連続で送れなくなったり、配信するクライアント数を制限したりしなければならなくなってしまう。
本発明は前述の問題点に鑑み、メモリを効率的に使用することで、データ落ちの少ない映像配信をより多くのクライアントへ提供できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の映像配信装置は、映像フレームを生成して符号化する撮像処理手段と、前記撮像処理手段により符号化された映像フレームを一時保存する一時記憶部と、前記一時記憶部に保存した単数または複数の映像フレームを一送信単位として配信を行う配信制御手段と、前記一送信単位としてまとめられた映像フレームを実際に相手装置に送る通信処理手段と、前記配信制御手段により行われる配信処理の遅延状況を監視する遅延監視手段とを有し、前記遅延監視手段は、前記配信制御手段により行われている特定の相手装置への配信処理が映像フレームの生成より遅れていることを検出すると、前記配信制御手段が保持している一送信単位の映像フレーム数を減少し、その後、一定期間について前記配信処理の遅延が解消したことを検出すると前記配信制御手段が保持している一送信単位の映像フレーム数を増加することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、配信処理が間に合わなくなったクライアントのフラグメントに含まれる画像フレーム数を減らすようにしたので、クライアントが送信するデータを新しいフレームに集中させることができる。これにより、一時的にメモリ上に保持しなければならないデータ量を減らすことができ、データ落ちの少ない映像配信をより多くのクライアントへ提供することができる。
【図面の簡単な説明】
【０００９】
【図１】配信カメラサーバのハードウェア構成を説明するブロック図である。
【図２】配信カメラサーバのソフトウェア機能構成の概略を示すブロック図である。
【図３】撮像処理プログラムの動作手順を説明するフローチャートである。
【図４】配信制御プログラムの動作手順を説明するフローチャートである。
【図５】遅延監視プログラムの動作手順を説明するフローチャートである。
【図６】配信遅延が発生したクライアント情報の例を示す図である。
【図７】フラグメントサイズ５固定時のメモリ使用量を説明する図である。
【図８】第１の実施形態を適用時のメモリ使用量を説明する図である。
【図９】配信制御プログラムの第２の例を説明するフローチャートである。
【図１０】メモリ監視プログラムの動作手順を説明するフローチャートである。
【図１１】第２の実施形態を適用時の一時記憶部の使用量を説明する図である。
【発明を実施するための形態】
【００１０】
以下に、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。
（第１の実施形態）
以下、本発明の実施に好適な配信システムの第１の構成例と動作について、図面を用いながら説明する。なお、音声データの配信は画像データの配信処理とデータの内容が異なるだけで同列に扱えるため、本実施形態では画像データの配信を中心に説明する。
【００１１】
図１は、本発明の第１の実施形態を表す配信カメラサーバのハードウェア構成を説明するブロック図である。
図１に示すように、本実施形態の配信カメラサーバはＣＰＵ１００、１次記憶装置１１０、２次記憶装置１２０、画像キャプチャＩ／Ｆ１３０、音声キャプチャＩ／Ｆ１４０、ネットワークＩ／Ｆ１６０が内部バス１０１を介して相互に接続されている。
【００１２】
ここで、１次記憶装置１１０はＲＡＭに代表される書き込み可能な高速の記憶装置で、ＯＳや各種プログラム及び各種データがロードされ、またＯＳや各種プログラムの作業領域としても使用される。２次記憶装置１２０はＦＤＤやＨＤＤ、フラッシュメモリ、ＣＤ−ＲＯＭドライブ等に代表される不揮発性を持った記憶装置で、ＯＳや各種プログラム及び各種データの永続的な記憶領域として使用される他に、短期的な各種データの記憶領域としても使用される。カメラサーバの１次記憶装置１１０及び２次記憶装置１２０に置かれる各種プログラム等の詳細については後述する。
【００１３】
画像キャプチャＩ／Ｆ１３０にはカメラ１７０が接続され、カメラ１７０が撮影した画像データを所定のフォーマットに変換・圧縮して１次記憶装置１１０に転送する。音声キャプチャＩ／Ｆ１４０にはマイク１８０が接続され、マイク１８０が集音した音データを所定のフォーマットに変換・圧縮して１次記憶装置１１０に転送する。ネットワークＩ／Ｆ１６０はEthernet(登録商標)等の通信媒体１９０と接続するためのI/Fであり、通信媒体１９０を介してクライアント等との通信を担う。カメラサーバとクライアント間のネットワークは通信規格を満足する複数のルータ、スイッチ、ケーブル等から構成される。本実施形態においては各サーバ・クライアント間の通信が支障なく行えるものであればその通信規格、規模、構成を問わない。故に、インターネットからLAN (Local Area Network)にまで適用可能である。
【００１４】
図２（Ａ）は、配信カメラサーバのソフトウェア機能構成の概略を示すブロック図である。
図２（Ａ）に示すように、１次記憶装置１１０には、ＯＳ、撮像処理プログラム２１０、配信制御プログラム２１１、通信処理プログラム２１２、一時記憶部２１３、及び遅延監視プログラム２１４がロードされる。ＯＳはカメラサーバ全体を制御する基本プログラムであり、本実施形態の映像配信装置２００の主要な構成要件がＯＳによって構成される。
【００１５】
撮像処理プログラム２１０は、カメラ１７０で生成された画像フレーム（映像フレーム）を画像キャプチャＩ／Ｆ１３０を経由して取得し符号化して、一時記憶部２１３に一時保存する。そして、不要になった画像フレームを一時記憶部２１３から削除する。配信制御プログラム２１１は、各種クライアントからのリクエストに応じ、一時記憶部２１３に保存されている単数または複数の画像フレームを一送信単位とし、通信処理プログラム２１２を通して配信する。本実施形態では理解しやすくするため、特に説明しない限り５フレームを１GOP(Group Of Pictures)とし、５フレームを一送信単位（以下、１フラグメント）として配信するものとする。
【００１６】
通信処理プログラム２１２は、ネットワークＩ／Ｆ１６０を制御し、通信媒体１９０を介して通信の相手装置である各種クライアントへ配信データを送り届ける。遅延監視プログラム２１４は、画像フレームが一時記憶部２１３に保存された際に各種クライアントへの配信処理が遅延しているかどうかを判定し、配信処理の遅延状況を監視する。また、本実施形態では配信処理が遅延判定タイミングを画像フレームが一時記憶部２１３に保存されたタイミングで実施するが、クライアント毎（相手装置毎）にフラグメント分の画像フレームを送信完了したタイミング、または定期的なタイミングで実施してもよい。各プログラム同士の連携は、必要に応じてＯＳが提供する機能を用いることとする。
【００１７】
図３は、配信カメラサーバの撮像処理プログラム２１０の動作手順を説明するフローチャートである。撮像処理プログラム２１０は、装置が電源投入された時に起動する。
起動されると、Ｓ３００において画像キャプチャＩ／Ｆ１３０を初期化する。次に、Ｓ３０１においてカメラ１７０から画像フレームが供給されるのを待機する。
【００１８】
Ｓ３０１の待機状態において、画像フレームが生成されるとＳ３０２に進んで符号化を行う。その後、Ｓ３０３に進み、一時記憶部２１３の空き容量をチェックする。このチェックの結果、一時記憶部２１３に空きがなければＳ３０１に戻る。この場合は、画像フレームは保存されず次の画像フレームの生成待ちとなる。また、Ｓ３０３のチェックの結果、バッファに空きがあれば、Ｓ３０４に進み、画像フレームを保存し、最新フレーム番号を更新する。
【００１９】
次に、Ｓ３０５において、現在配信している特定のクライアントが存在するか判断する。この判断の結果、特定のクライアントが存在しない場合には待機状態となる。また、配信クライアントが存在する場合にはＳ３０６に進み、一時記憶部２１３に存在するクライアント情報に画像フレームを登録する。次に、Ｓ３０７において未送信フレーム数が次フラグメントサイズより多いかどうかを判断する。次フラグメントサイズとは、次の送信時に何枚の画像フレームを一送信単位としてクライアントに配信するかを示す値である。
【００２０】
Ｓ３０７の判断の結果、未送信フレーム数の方が多い場合、Ｓ３０８に進んで未送信フレームの古いデータを次フラグメントサイズ以下になるまで登録解除する。その後、Ｓ３０９に進む。また、Ｓ３０７の判断の結果、未送信フレーム数の方が多くない場合は、Ｓ３０９に直接進む。
【００２１】
Ｓ３０９においては、Ｓ３０６〜Ｓ３０８の処理を全ての配信クライアントに対して行ったか否かを判断する。この判断の結果、行っていない場合にはＳ３０６に戻り、前述した処理を実行する。また、行った場合にはＳ３１０に進む。Ｓ３１０においては、遅延監視プログラム２１４に画像生成通知メッセージを送信する。
次に、Ｓ３１１に進み、クライアントへの送信処理が完了し、どのクライアントにも登録されていない登録解除済み画像フレームを一時記憶部２１３から解放し、その後、Ｓ３０１の画像生成待ち処理に戻る。
【００２２】
図４は、配信カメラサーバの配信制御プログラム２１１の動作手順を説明するフローチャートである。配信制御プログラム２１１は、クライアントから配信リクエストを受信した時に起動される。
起動されると、Ｓ４００においてクライアント情報を生成し、一時記憶部２１３に保存する。本実施形態では、この時、何枚の画像フレームを一送信単位としてクライアントに配信するかという次フラグメントサイズを「５」に設定する。
【００２３】
次に、Ｓ４０１に進み、遅延監視プログラム２１４からのメッセージ受信処理を行う。その後、Ｓ４０２において受信メッセージ毎に振り分けを行う。遅延監視プログラム２１４から配信遅延通知を受信していた場合は次フラグメントサイズを小さくし（Ｓ４０３）、配信復旧通知を受信していた場合は次フラグメントサイズを大きくする（Ｓ４０４）。本実施形態では、配信遅延通知を受信した場合は次フラグメントサイズを所定値（例えば「５」）から所定値（例えば「１」）に減少させ、一送信単位の映像フレーム数が減少する。また、配信復旧通知を受信した場合は次フラグメントサイズを「１」から「５」に増加させ、一送信単位の映像フレーム数を増加させる。また、配信遅延通知または配信復旧通知を遅延時間に応じて段階的に通知し、一送信単位の最大数を複数段階で変更することも可能である。また、Ｓ４０２の処理において、メッセージがない場合にはＳ４０３あるいはＳ４０４の処理を行わずにＳ４０６に進む。
【００２４】
本実施形態においては、生成した画像フレームの情報は撮像処理プログラム２１０がクライアント情報に適宜書き込むので、Ｓ４０６においては、未送信フレームが次フラグメントサイズ分存在するかどうかを判断する。未送信フレームが次フラグメントサイズに満たない場合は一定時間の待機を行い（Ｓ４０５）、メッセージ受信処理（Ｓ４０１）に戻る。
【００２５】
未送信フレームが次フラグメントサイズ以上存在している場合は、先頭フレームの連続性をチェックする（Ｓ４０７）。具体的には、未送信フレームの先頭が前回送信したデータの次フレームである、または先頭がフレーム内符号化された画像フレーム（以下、Iフレームと呼ぶ）であるかどうかをチェックする。
【００２６】
Ｓ４０７のチェックの結果、連続性がない（どちらも満たさない）場合は、先頭の画像フレームはクライアント側で受信しても表示できないため一定時間の待機を行い（Ｓ４０５）、メッセージ受信処理（Ｓ４０１）に戻る。一定時間の待機を行うことで、撮像処理プログラム２１０が新たに画像フレームを生成し、未送信フレーム情報を書き換える。
【００２７】
一方、Ｓ４０７のチェックの結果、連続性がある（どちらかを満たす）場合は、一時記憶部２１３に保存してあるクライアント情報を更新する（Ｓ４０８）。次に、未送信フレームの先頭から次フラグメントサイズ分の画像フレームとそのヘッダ情報を作成し、通信処理プログラム２１２を通してクライアントに送信する（Ｓ４０９）。
【００２８】
Ｓ４０９の送信処理が完了したら、Ｓ４１０において次データを送信する必要があるかどうかを確認する。この確認の結果、次のデータを送信する場合はメッセージ受信処理（Ｓ４０１）に戻る。クライアントへの送信処理において通信の切断が検出された場合、またはクライアント要求分の画像フレームの配信が完了した場合は、Ｓ４１１に進み、一時記憶部２１３に保存しているクライアント情報を解放し、処理を終了する。
【００２９】
図５は、配信カメラサーバの遅延監視プログラム２１４の動作手順を説明するフローチャートである。
遅延監視プログラム２１４は、装置が電源投入された時に起動する。
起動されると、Ｓ５００において他のプログラムからメッセージを受信するまで待機状態になる。そして、メッセージを受信すると、Ｓ５０１に進み、それが遅延チェックするメッセージであるかを確認する。本実施形態では、撮像処理プログラム２１０からの画像生成通知を遅延チェックするメッセージとする。画像生成のタイミング以外にもクライアントの配信完了のタイミング、または一定時間の経過タイミング、またはこれらの組合せのタイミングで行うことも可能である。
【００３０】
Ｓ５０１の確認の結果、画像生成通知でなかった場合は、Ｓ５００に戻り、再度メッセージ受信待ちとなる。また、画像生成通知を受信した場合は、配信しているクライアント全員に対して以下の処理を繰り返す。まず、Ｓ５０２に進み、クライアントの状態を判断し、配信クライアントの状態により、処理を振り分ける。
【００３１】
すなわち、Ｓ５０２の判断の結果、クライアントに配信遅延が発生していない場合（配信遅延なし）は、Ｓ５０３に進んで送信フレームの最終画像フレームと未送信フレームの先頭フレームが連続かどうかを判断する。この判断の結果、連続の場合は何もしない。非連続の場合、つまり撮像処理プログラム２１０のＳ３０８にて未送信フレームの登録解除が行われた場合は、配信制御プログラム２１１に配信遅延通知を送り（Ｓ５０４）、クライアントの状態を配信遅延中に変更する（Ｓ５０５）。
【００３２】
クライアントに配信遅延が発生している場合（配信遅延中）は、まず一定時間以上データを破棄せずに送信できているかをチェックする（Ｓ５０６）。具体的には、連続送信フレーム数が配信遅延の復旧を示す一定フレーム数以上になったかどうかで判断する。この判断の結果、一定時間に達しない場合は、何もしない。一定時間に達した場合は、配信制御プログラム２１１に配信復旧通知を送り（Ｓ５０７）、クライアントの状態を配信遅延なしに変更する（Ｓ５０８）。Ｓ５０５またはＳ５０８の処理を終了したら、Ｓ５０９に進み、全てのクライアントについて配信状態の判断を行ったか否かを判断する。この判断の結果、行っていない場合にはＳ５０２に戻って前述の処理を行う。また、行ったＳ５００に戻る。
【００３３】
図６は、配信遅延が発生したクライアント情報の例を示す図である。
図６を用いて、クライアント情報に保持される情報がフレーム生成や配信処理の過程で変わっていく様子を説明する。ただし、図６はあくまで一例であり、必ずしも図中の変数を使用し、図通りの順序で処理が実行されるわけではない。
【００３４】
送信フレーム番号は、配信制御プログラム２１１が変更する送信中の画像フレームの先頭番号であり、未送信状態は−１が設定される。
送信フラグメントサイズは、配信制御プログラム２１１が変更する送信中の画像フレーム数であり、未送信状態は０が設定される。
未送信フレーム番号は、撮像処理プログラム２１０が変更する送信待ち画像フレームの先頭番号であり、未送信状態は−１が設定される。
未送信フレーム数は、撮像処理プログラム２１０が変更する送信待ち画像フレーム数である。
次フラグメントサイズは、次に送信するフラグメントの画像フレーム数であり、配信制御プログラム２１１が配信遅延通知または配信復旧通知を受信した際に増減する。本実施形態では、配信遅延が発生すると次フラグメントサイズは「１」に変更され、配信復旧が発生すると次フラグメントサイズは「５」に変更される。
連続送信フレーム数は、連続で送信している画像フレーム数であり、一枚でも画像フレームを送信しなければ０に設定される。
【００３５】
フレーム番号０（最初はIフレーム）が生成された時、未送信フレームに０が設定され、未送信フレーム数がインクリメントされて１に設定される。フレーム番号１，２，３が生成されると、未送信フレーム数が２，３，４に順番に増えていく。
【００３６】
そして、フレーム番号４が生成された時、ちょうど次フラグメントサイズである５フレームになるので、配信制御プログラム２１１は送信処理を開始する。そして、送信フレーム番号を０、送信フラグメントサイズを５に変更、連続送信フレーム数に５を加算し、未送信フレーム番号と未送信フレーム数を初期状態に変更する。
【００３７】
フレーム番号５が生成された時、未送信フレーム番号に５を登録し、未送信フレーム数をインクリメントし１に変更する。そして、フレーム番号０〜５の送信が完了する前に、フレーム番号６、７、８、９が生成されると、未送信フレーム数が２、３、４、５に順番に増えていく。フレーム番号９が生成された時は、本クライアントが使用するフレームは０〜９までの１０フレームである。
【００３８】
フレーム番号１０が生成されると、撮像処理プログラム２１０にて未送信フレーム番号を１０に変更し、フレーム番号５〜９の登録を解除する。そして、遅延監視プログラム２１４にて送信フレームの最終フレーム番号４と未送信フレームの先頭フレーム番号１０から配信遅延を検出し、配信制御プログラム２１１にて次フラグメントサイズを「１」に変更する。
【００３９】
フレーム番号１１が生成されると、次フラグメントサイズは「１」なので未送信フレーム番号を１に更新し、未送信フレーム数を１に設定する。フレーム番号１２が生成された時も同様に未送信フレーム番号を更新する。フレーム番号１０、１１、１２では、クライアントが使用するフレームは、フレーム番号０〜４とフレーム１０（または１１、または１２）の合計６フレームである。
【００４０】
次に、送信処理が完了したとすると、未送信フレーム番号１２の送信を試みるが、Ｓ４０７にて連続性がないと判断されるため（先頭がIフレームでないため）、送信処理が実行されない。
次のIフレームであるフレーム番号１５が生成されると送信フレーム番号を１５、送信フラグメントサイズを「１」、連続送信フレーム数を１に変更し、未送信フレーム番号と未送信フレーム数を初期状態に変更する。
【００４１】
フレーム番号１６が生成されると、未送信フレーム番号に１６を保存し、未送信フレーム数をインクリメントして１に変更する。フレーム番号１６以降では、クライアントが使用するフレームはフレーム番号１５と未送信フレームの１フレームの合計２フレームになる。
【００４２】
以上のように、フラグメントサイズが「５固定」であった期間は、１クライアントが使用するフレーム数は最小で５フレーム、最大で１０フレームであったが、フラグメントサイズが１に変更された後は最小で１フレーム、最大で２フレームになる。
【００４３】
図６は、配信処理が遅延した場合のクライアント情報の説明である。フレーム番号５〜９が生成される間に配信処理が完了するような充分な配信能力があるクライアントに対しては配信遅延を検出しない。このため、フラグメントサイズが「５」のままなので今までと変わりなく配信することができる。
【００４４】
本実施形態では、リアルタイム性を高めるため、一時的に保持する画像フレームは次の１フラグメントのみとして説明しているが、複数フラグメントを一時的に保持しても構わない。また、次フラグメントを越えて次の画像フレームを生成した場合に配信遅延を検出しているが、実際はフレーム内符号化されたIフレームと、フレーム間符号化されたPフレーム／Bフレームとではデータサイズが異なる。このため、１GOP単位でデータサイズを計算し、そこから配信する次フラグメントのデータ量に応じた時間を算出し、その時間を超えた場合に遅延を検出するなどが有効である。
【００４５】
図７は、フラグメントサイズが「５固定」で、複数クライアントに配信した際の一時記憶部２１３の状態を説明する図である。図７では、配信能力が画像生成の半分程度のクライアント７０１と配信能力が画像生成より充分高いクライアント７０２の例である。
【００４６】
図７において、クライアント７０１は最初のフラグメント（フレーム番号０〜４）を配信している間に、フレーム番号１２まで生成され、フレーム番号５〜９は登録解除されていることを示している。
クライアント７０２は、フレーム番号０〜４は送信済みで登録解除しており、フレーム番号５〜９を送信中で、フレーム番号１０〜１２は送信待ちになっていることを示している。
【００４７】
配信カメラサーバの一時記憶部２１３の画像用メモリ領域は全クライアント共通で使用しており、最大で１５フレーム分保持できるとすると、画像用メモリの使用量は８６パーセント（１３／１５フレーム）となる。
【００４８】
図８は、本実施形態を適用し、複数クライアントに配信した際の一時記憶部２１３の状態を説明する図である。本図では、配信能力が画像生成の半分程度のクライアント８０１と、配信能力が画像生成より充分高いクライアント８０２の例である。
【００４９】
クライアント８０１は、遅延を検出してフラグメントサイズは１になっており、５フレーム中２フレームを毎回送信している状態である。この時使用しているフレームは２フレームである。
クライアント８０２は、図７と同様に充分な配信能力があるので、５フレーム単位で全てのフレームを送っていることを示している。この時使用しているフレームは８フレームである。
【００５０】
配信カメラサーバの一時記憶部２１３の画像用メモリ領域は全クライアント共通で使用しており、最大で１５フレーム分保持できるとすると、画像用メモリの使用量は５３パーセント（８／１５フレーム）となる。
【００５１】
このように本実施形態を適用し、遅延クライアントのフラグメントサイズを減らすことで画像用メモリの参照を最近のデータに集中させることができ、メモリの使用効率を向上させることができる。また、メモリの使用効率を向上させることで、画像フレームを生成時に一時記憶部２１３に保存できなくなることが減り、画像フレーム落ちの少ない映像配信ができる。同時に、複数クライアントに配信してもメモリの使用量は大きく増えないので、より多くのクライアントへ配信することができる。
【００５２】
（第２の実施形態）
以下、本発明の実施に好適な配信システム第２の構成と動作について、図面を用いながら説明する。なお、音声データの配信は画像データの配信処理とデータの内容が異なるだけで同列に扱えるため、本実施形態では画像データの配信を中心に説明する。また、本実施形態における配信カメラサーバのハードウェア構成は、図１と同じため省略する。
【００５３】
図２（Ｂ）は、配信カメラサーバのソフトウェア機能構成を説明するブロック図である。
１次記憶装置１１０には、ＯＳ、撮像処理プログラム９１０、配信制御プログラム９１１、通信処理プログラム９１２、一時記憶部９１３、及びメモリ監視プログラム９１４がロードされる。
【００５４】
ＯＳはカメラサーバ全体を制御する基本プログラムであり、本実施形態の映像配信装置９００の主要な構成要件がＯＳによって構成される。
撮像処理プログラム９１０は、カメラ１７０で生成された画像フレームを画像キャプチャＩ／Ｆ１３０を経由して取得し符号化して、一時記憶部９１３に保存する。そして、不要になった画像フレームを一時記憶部９１３から削除する。
配信制御プログラム９１１は、各種クライアントからのリクエストに応じ、一時記憶部９１３に保存されている単数または複数の画像フレームを一送信単位とし、通信処理プログラム９１２を通して配信する。
【００５５】
本実施形態では理解しやすくするため、特に説明しない限り５フレームを１GOP(Group Of Pictures)とし、５フレームを一送信単位（以下、１フラグメント）として配信するものとする。
【００５６】
通信処理プログラム９１２は、ネットワークＩ／Ｆ１６０を制御し、通信媒体１９０を介して各種クライアントへ配信データを送り届ける。
メモリ監視プログラム９１４は、画像フレームが一時記憶部９１３に保存された際にメモリの使用量を計算し、空き容量が充分かどうかを判定する。
また、本実施形態では配信処理が遅延判定タイミングを画像フレームが一時記憶部９１３に保存されたタイミングで実施するが、クライアント毎にフラグメント分の画像フレームを送信完了したタイミング、または定期的なタイミングで実施してもよい。
各プログラム同士の連携は、必要に応じてＯＳが提供する機能を用いることとする。
各プログラムは特に記述がない限り、図２の対応するプログラムと同じ処理を行うものとする。
【００５７】
本実施形態における撮像処理プログラム９１０のフローチャートの説明は、図３と同じため省略する。
図９は、配信カメラサーバの配信制御プログラム９１１の動作手順を説明するフローチャートである。この配信制御プログラム９１１は、クライアントから配信リクエストを受信した時に起動される。なお、図９のフローチャート各ステップの処理において、図４のフローチャートで説明した処理と同様な処理を行うステップについては、図４のステップ番号と同一のステップ番号を付して説明を省略する。
【００５８】
Ｓ４０２の受信メッセージ毎に振り分け処理の結果、メモリ監視プログラム９１４からメモリ逼迫通知を受信していた場合は次フラグメントサイズが逼迫時の最大フラグメントサイズを越えているかどうかを判定する（Ｓ９０３）。この判定の結果、越えていた場合は次フラグメントサイズを逼迫時の最大フラグメントサイズに変更する（Ｓ９０４）。メモリ監視プログラム９１４からメモリ復旧通知を受信していた場合は、次フラグメントサイズが逼迫時の最大フラグメントサイズと同じ、且つ連続で一定期間以上送信できているかどうかを判定する（Ｓ９０５）。この判定の結果、満たしている場合は遅延が解消したとして、次フラグメントサイズを増加させる（Ｓ９０６）。また、Ｓ４０２の振り分け処理において、メッセージがない場合にはＳ４０６に進む。
【００５９】
本実施形態では、メモリ逼迫通知を受信した場合は次フラグメントサイズを所定値（例えば「５」）から所定値（例えば「２」）に減少させ（Ｓ９０４）、メモリ復旧通知を受信した場合は次フラグメントサイズを「２」から「５」に増加させる（Ｓ９０６）。しかし、メモリ逼迫通知またはメモリ復旧通知をメモリの使用量に応じて段階的に通知し、次フラグメントサイズを段階的に変更することも可能である。
Ｓ９０４またはＳ９０６の処理を終了した後の処理は、前述した図４のＳ４０６〜Ｓ４１１の各処理と同様であるので、詳細な説明を省略する。
【００６０】
図１０は、配信カメラサーバのメモリ監視プログラム９１４の動作手順を説明するフローチャートである。
【００６１】
メモリ監視プログラム９１４は、装置が電源投入された時に起動する。
起動されると、他のプログラムからメッセージを受信するまで待機状態になる（Ｓ１０００）。そして、メッセージを受信すると、それがメモリチェックするメッセージであるかを確認する（Ｓ１００１）。本実施形態では、撮像処理プログラム９１０からの画像生成通知を遅延チェックするメッセージとする。なお、画像生成のタイミング以外にもクライアントの配信完了のタイミング、または一定時間の経過タイミング、またはこれらの組合せのタイミングで行うことも可能である。また、画像生成通知でなかった場合は、再度メッセージ受信待ち（Ｓ１０００）に戻り、画像生成通知を受信した場合は、Ｓ１００２に進む。
【００６２】
Ｓ１００２においては、画像用メモリの状態を判断する。この判断の結果、画像用メモリが通常（初期状態）の場合にはＳ１００３に進む。Ｓ１００３においては、現在の画像用メモリの使用量を測定し、使用量が上限の閾値以上かどうかを判定する。
【００６３】
Ｓ１００３の判定の結果、上限閾値に満たない場合は何もしない。上限閾値を上回った場合は、Ｓ１００４において配信制御プログラム９１１にメモリ逼迫通知を送り、その後、Ｓ１００５において画像用メモリの状態を逼迫中に変更する。本実施形態ではメモリ使用量の上限閾値を一時記憶部９１３に保持できる最大画像フレーム数の８０パーセントとするが、単純に一時記憶部９１３内の画像用メモリ容量の８０パーセントとすることも可能である。
【００６４】
一方、Ｓ１００２の判断の結果、画像用メモリの状態が逼迫中の場合は、Ｓ１００６に進み、画像用メモリの使用量が復旧閾値（下限閾値）を下回ったかをチェックする。このチェックの結果、復旧閾値を下回らない場合は、何もしない。また、復旧閾値を下回った場合はＳ１００７に進み、配信制御プログラム９１１にメモリ復旧通知を送る。その後、Ｓ１００８に進み、画像用メモリの状態を通常に変更する。
【００６５】
メモリ監視プログラム９１４は、一時記憶部９１３のメモリ使用量が上限閾値を上回ったことを検出すると、映像フレームの一送信単位が所定の上限値を超える相手装置への一送信単位（例えば「５」）を所定値（上限値未満、例えば「２」）に減少させる。
また、一時記憶部９１３のメモリ使用量が復旧閾値を下回ったことを検出すると、映像フレームの一送信単位を増加させる。一送信単位が所定値（例えば「２」）に減少するように設定されていた相手装置への一送信単位は、減少される前の値（例えば「５」）に増加させる。すなわち、本実施形態においては、下限閾値は複数の閾値を持ち、一送信単位に含まれる映像フレーム数の最大値を増減させるようにしている。
【００６６】
本実施形態では、メモリ使用量の復旧閾値を一時記憶部９１３に保持できる最大画像フレーム数の３０パーセントとするが、単純に一時記憶部９１３内の画像用メモリ容量の３０パーセントとすることも可能である。また、下限閾値を段階的に複数設定して複数の閾値を保持しておき、次フラグメントサイズを段階的に変更したり、次フラグメントサイズを急激に何度も変更したりするようにすることもできる。そこで、次フラグメントサイズを小さくした場合は一定期間フラグメントサイズをその値にすることも有効である。
【００６７】
図１１は、本実施形態を適用し、複数クライアントに配信した際の一時記憶部９１３の状態である。
図１１では、配信能力が画像生成の半分程度のクライアント１１０１と、配信能力が画像生成より充分高いクライアント１１０２の例である。
クライアント１１０１とクライアント１１０２に配信を開始した時は、フラグメントサイズが「５」のため、図７に示したようにメモリ使用量が８０パーセントを越える。このため、逼迫時のフラグメントサイズが適用され、クライアント１１０１とクライアント１１０２のフラグメントは共に２フレームになっている。
【００６８】
配信カメラサーバの一時記憶部９１３の画像用メモリ領域は全クライアント共通で使用しており、最大で１５フレーム分保持できるとすると、画像用メモリの使用量は３３パーセント（５／１５フレーム）となる。このように、本実施形態を適用し、遅延クライアントのフラグメントサイズを減らすことで画像用メモリの参照を最近のデータに集中させることができ、メモリの使用効率を向上させることができる。
【００６９】
また、メモリの使用効率を向上させることで、画像フレームを生成時に一時記憶部９１３に保存できなくなることが減り、画像フレーム落ちの少ない映像配信ができる。同時に、複数クライアントに配信してもメモリの使用量は大きく増えないので、より多くのクライアントへ配信することができる。また、第１の実施形態と一緒に適用することで、より効率よくメモリを使用することができる。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【００７０】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、前述した実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種のコンピュータ読み取り可能な記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００７１】
２００  映像配信装置、２１０、撮像処理プログラム、２１１  配信制御プログラム、２１２  通信処理プログラム、２１３  時記憶部、２１４  遅延監視プログラム、９１４  メモリ監視プログラム
【図１】
2011234233.tif 000003
【図２】
2011234233.tif 000004
【図３】
2011234233.tif 000005
【図４】
2011234233.tif 000006
【図５】
2011234233.tif 000007
【図６】
2011234233.tif 000008
【図７】
2011234233.tif 000009
【図８】
2011234233.tif 000010
【図９】
2011234233.tif 000011
【図１０】
2011234233.tif 000012
【図１１】
2011234233.tif 000013