(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-07-12
(45)【発行日】2022-07-21
(54)【発明の名称】映像データ送信装置、映像データ送信プログラムおよび映像データ送信方法
(51)【国際特許分類】
H04N 21/238 20110101AFI20220713BHJP
H04N 21/24 20110101ALI20220713BHJP
【FI】
H04N21/238
H04N21/24
(21)【出願番号】P 2021008205
(22)【出願日】2021-01-21
【審査請求日】2021-01-21
(73)【特許権者】
【識別番号】501158538
【氏名又は名称】三菱電機インフォメーションネットワーク株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】溝井国際特許業務法人
(72)【発明者】
【氏名】下島 明久
【審査官】益戸 宏
(56)【参考文献】
【文献】特開2021-197584(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00-21/858
(57)【特許請求の範囲】
【請求項1】
記憶領域と
して複数のチャンク領域が設定されているセグメントファイルの各チャンク領域に、ネットワークカメラの撮影した映像データであるフレームを、指定されている指定枚数だけ順番に格納するファイル作成部と、
前記チャンク領域に前記指定枚数の前記フレームが格納されているかを確認する時間間隔を示すチャンク応答間隔を前記フレームのフレームレイトに基づいて決定し、前記ファイル作成部によって前記指定枚数の前記フレームが新たに格納された前記チャンク領域である格納チャンク領域が存在するかどうかを、決定された前記チャンク応答間隔が経過するたびに確認し、前記格納チャンク領域が存在する場合には、前記格納チャンク領域に格納された指定枚数のフレームを1チャンクとして、前記映像データを要求する要求装置に送信する応答部と、
を備える映像データ送信装置。
【請求項2】
前記応答部は、
前記フレームレイトに加えて、前記指定枚数に基づいて、前記チャンク応答間隔を決定する請求項1に記載の映像データ送信装置。
【請求項3】
前記応答部は、
前記フレームレイトを示す値の逆数と、前記指定枚数とに基づいて、前記チャンク応答間隔を決定する請求項2に記載の映像データ送信装置。
【請求項4】
前記映像データ送信装置は、さらに、
前記複数のチャンク領域に格納される複数のフレームを前記ネットワークカメラから取得し、取得した前記複数のフレームから前記フレームレイトを算出する映像取得部を備え、
前記応答部は、
前記映像取得部が算出した前記フレームレイトを用いて前記チャンク応答間隔を決定する請求項1から請求項3のいずれか1項に記載の映像データ送信装置。
【請求項5】
コンピュータに、
記憶領域として複数のチャンク領域が設定されているセグメントファイルの各チャンク領域に、ネットワークカメラの撮影した映像データであるフレームを、指定されている指定枚数だけ順番に格納するフレーム格納処理と、
前記チャンク領域に前記指定枚数の前記フレームが格納されているかを確認する時間間隔を示すチャンク応答間隔を前記フレームのフレームレイトに基づいて決定し、前記フレーム格納処理によって前記指定枚数の前記フレームが新たに格納された前記チャンク領域である格納チャンク領域が存在するかどうかを、決定された前記チャンク応答間隔が経過するたびに確認し、前記格納チャンク領域が存在する場合には、前記格納チャンク領域に格納された指定枚数のフレームを1チャンクとして、前記映像データを要求する要求装置に送信する応答処理と、
を実行させる映像データ送信プログラム。
【請求項6】
コンピュータが、
記憶領域として複数のチャンク領域が設定されているセグメントファイルの各チャンク領域に、ネットワークカメラの撮影した映像データであるフレームを、指定されている指定枚数だけ順番に格納し、
前記チャンク領域に前記指定枚数の前記フレームが格納されているかを確認する時間間隔を示すチャンク応答間隔を前記フレームのフレームレイトに基づいて決定し、前記指定枚数の前記フレームが新たに格納された前記チャンク領域である格納チャンク領域が存在するかどうかを、決定された前記チャンク応答間隔が経過するたびに確認し、前記格納チャンク領域が存在する場合には、前記格納チャンク領域に格納された指定枚数のフレームを1チャンクとして、前記映像データを要求する要求装置に送信する映像データ送信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ライブ映像を送信する映像データ送信装置、映像データ送信装置に使用する映像データ送信プログラム、映像データ送信装置が実施する映像データ送信方法に関する。
【背景技術】
【0002】
モバイル端末およびWebブラウザでの映像配信には、HLS(HTTP Live Streaming)およびMPEG-DASHという方式がある。これらの方式では、一般的に10秒から30秒程度の遅延が発生する。この遅延を軽減する方式として、CMAF(Common Media Application Format))と呼ばれる技術がある。CMAF方式では、一つの映像セグメントファイル内にchunkと呼ばれる区切りを設け、chunk単位でクライアント端末に映像データを送ることで遅延を軽減する。
【0003】
しかし、CMAF方式では、セグメントファイルが未完成な状態で順次chunk単位の映像データを応答するため、セグメントファイルが完成しているか未完成であるかを映像配信サーバが確認する必要がある。セグメントファイルが完成状態かを必要以上に確認する場合には映像配信サーバに負荷がかかり、一方、確認間隔を開けすぎると、その分映像配信に遅延が発生する。
【0004】
従来技術にはHTTP応答によって発生する映像配信の遅延対策に関する技術の開示はあるが(例えば特許文献1)、ライブ映像の配信において、配信遅延の低減と、セグメントファイルの完成状態確認の負荷とのバランスのとれた映像配信サーバの提供に関する開示はない。
【先行技術文献】
【特許文献】
【0005】
【文献】国際公開第2014/057896号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示は、ライブ映像の配信において、配信の遅延低減と、セグメントファイルの完成状態確認の負荷低減との、双方のバランスのとれた映像配信サーバを提供することを目的とする。
【課題を解決するための手段】
【0007】
本開示に係る映像配信サーバは、
記憶領域として複数のチャンク領域が設定されているセグメントファイルの各チャンク領域に、ネットワークカメラの撮影した映像データであるフレームを、指定されている指定枚数だけ順番に格納するファイル作成部と、
前記チャンク領域に前記指定枚数の前記フレームが格納されているかを確認する時間間隔を示すチャンク応答間隔を前記フレームのフレームレイトに基づいて決定し、前記ファイル作成部によって前記指定枚数の前記フレームが新たに格納された前記チャンク領域である格納チャンク領域が存在するかどうかを、決定された前記チャンク応答間隔が経過するたびに確認し、前記格納チャンク領域が存在する場合には、前記格納チャンク領域に格納された指定枚数のフレームを1チャンクとして、前記映像データを要求する要求装置に送信する応答部と、
を備える。
【0008】
前記応答部は、
前記フレームレイトに加えて、前記指定枚数に基づいて、前記チャンク応答間隔を決定する。
【0009】
前記応答部は、
前記フレームレイトを示す値の逆数と、前記指定枚数とに基づいて、前記チャンク応答間隔を決定する。
【0010】
前記映像データ送信装置は、さらに、
前記複数のチャンク領域に格納される複数のフレームを前記ネットワークカメラから取得し、取得した前記複数のフレームから前記フレームレイトを算出する映像取得部を備え、
前記応答部は、
前記映像取得部が算出した前記フレームレイトを用いて前記チャンク応答間隔を決定する。
【0011】
本開示の映像データ送信プログラムは、
コンピュータに、
記憶領域として複数のチャンク領域が設定されているセグメントファイルの各チャンク領域に、ネットワークカメラの撮影した映像データであるフレームを、指定されている指定枚数だけ順番に格納するフレーム格納処理と、
前記チャンク領域に前記指定枚数の前記フレームが格納されているかを確認する時間間隔を示すチャンク応答間隔を前記フレームのフレームレイトに基づいて決定し、前記フレーム格納処理によって前記指定枚数の前記フレームが新たに格納された前記チャンク領域である格納チャンク領域が存在するかどうかを、決定された前記チャンク応答間隔が経過するたびに確認し、前記格納チャンク領域が存在する場合には、前記格納チャンク領域に格納された指定枚数のフレームを1チャンクとして、前記映像データを要求する要求装置に送信する応答処理と、
を実行させる。
【0012】
本開示の映像データ送信方法では、
コンピュータが、
記憶領域として複数のチャンク領域が設定されているセグメントファイルの各チャンク領域に、ネットワークカメラの撮影した映像データであるフレームを、指定されている指定枚数だけ順番に格納し、
前記チャンク領域に前記指定枚数の前記フレームが格納されているかを確認する時間間隔を示すチャンク応答間隔を前記フレームのフレームレイトに基づいて決定し、前記指定枚数の前記フレームが新たに格納された前記チャンク領域である格納チャンク領域が存在するかどうかを、決定された前記チャンク応答間隔が経過するたびに確認し、前記格納チャンク領域が存在する場合には、前記格納チャンク領域に格納された指定枚数のフレームを1チャンクとして、前記映像データを要求する要求装置に送信する。
【発明の効果】
【0013】
本開示に係る映像配信サーバによれば、ライブ映像の配信において、配信の遅延低減と、セグメントファイルの完成状態確認の負荷低減との、双方のバランスのとれた映像配信サーバを提供することができる。
【図面の簡単な説明】
【0014】
【
図1】実施の形態1の図で、映像配信システム1000の構成図。
【
図2】実施の形態1の図で、映像配信システム1000の動作概要を示す図。
【
図3】実施の形態1の図で、映像配信サーバ100の特徴を示す図。
【
図4】実施の形態1の図で、映像配信サーバ100のハードウェア構成図。
【
図5】実施の形態1の図で、クライアント端末200による映像再生の概要を説明する図。
【
図6】実施の形態1の図で、クライアント端末200の動作を示すフローチャート。
【
図7】実施の形態1の図で、映像取得部111の動作概要を示す図。
【
図8】実施の形態1の図で、ブラウザビューア部112の起動動作を示す図。
【
図9】実施の形態1の図で、ブラウザビューア部112によるセグメントファイルの作成を示す図。
【
図10】実施の形態1の図で、ブラウザビューア部112のセグメントファイルの作成動作を示すフローチャート。
【
図11】実施の形態1の図で、映像配信サーバ100の動作を示すシーケンス図。
【
図12】実施の形態1の図で、映像配信サーバ100の効果を示す図。
【発明を実施するための形態】
【0015】
実施の形態の説明および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は、適宜に省略または簡略化する。以下の実施の形態では、「部」を、「回路」、「工程」、「手順」、「処理」または「サーキットリー」に適宜読み替えてもよい。
【0016】
実施の形態1.
図1から
図12を参照して、実施の形態1の映像配信システム1000を説明する。映像配信システム1000の特徴は映像配信サーバ100にある。
【0017】
***構成の説明***
図1は、映像配信システム1000の構成図である。映像配信システム1000は、複数のネットワークカメラ11、映像配信サーバ100,クライアント端末200を備えている。映像配信サーバ100は映像データ送信装置である。クライアント端末200はライブ映像の配信を要求する要求装置である。複数のネットワークカメラ11、映像配信サーバ100およびクライアント端末200は、ネットワーク300に接続している。
図1では3台のネットワークカメラ11を示している。各ネットワークカメラ11は、フレームレイトを示すFPS(Frames Per Second)値が異なる。3台のネットワークカメラ11はそれぞれ、FPS=30、FPS=10、FPS=1である。例えばFPS=30は、30枚/秒を示す。
【0018】
映像配信サーバ100は、映像取得部111、ブラウザビューア部112および受信応答部113を備えている。映像取得部111はネットワークカメラ11から映像データを取得する。ブラウザビューア部112はセグメントファイルを作成するファイル作成部である。受信応答部113は、クライアント端末200の要求に応答する応答部である。
【0019】
映像配信サーバ100では、各ネットワークカメラ11から映像データを取得し、クライアント端末200からのリクエストに応答して、取得した映像データをリアルタイムにより近い状態でクライアント端末200へ送信する。クライアント端末200は、映像配信サーバ100へネットワークカメラ11の撮影する映像の配信を要求する配信要求を送信し、映像配信サーバ100から映像データを受信する。
【0020】
図2は、映像配信システム1000の動作概要を示す。映像配信サーバ100の映像取得部111は、ネットワークカメラ11から、ネットワークカメラ11の撮影した映像データを取得する。映像取得部111は、ネットワークカメラ11から取得した映像データからFPS値を算出する。ブラウザビューア部112は、セグメントフィルを作成する。ブラウザビューア部112は、セグメントフィルに、映像取得部111の取得した映像データである複数のフレームおよび映像取得部111の算出したFPS値を書き込む。ブラウザビューア部112はHLS用プレイリストも作成する。
図3で後述するが、受信応答部113は、FPS値から後述のチャンク応答間隔△tを決定し、チャンク応答間隔△tごとにセグメントフィルのチャンク領域を確認する。チャンク領域を確認したときに、新たに指定枚数のフレームが格納されている場合に、新たに格納された指定枚数のフレームを1チャンクとして、クライアント端末200に送信する。
【0021】
図3は、映像配信サーバ100の特徴を示す。chunk応答処理の適切な間隔がネットワークカメラ11の映像ごとで異なること、セグメントファイルの過剰な状態確認は映像配信サーバ100に負荷を与える可能性があることに着目し、映像配信サーバ100の特徴概要は以下のようである。映像配信サーバ100は、映像データのFPS値から適切な応答間隔であるチャンク応答間隔△tを決定する。チャンク応答間隔△tにより、映像配信サーバ100にとって負荷が少なくし、かつ、応答間隔を最小にして映像配信の遅延時間を低減する。
【0022】
映像配信サーバ100が従来のWebサーバの動作と異なる点は、chunk応答の間隔をFPS値に合わせて最適化する点にある。
【0023】
実施の形態1の映像配信サーバ100によれば、chunk応答時に無駄な待機時間が発生しないため、ライブ再生の遅延時間を最小限に抑えることができる。また、chunk応答処理の間隔を最適化することで、映像配信サーバ100への不要な負荷を軽減でき、サービスのセッション数増加などを実現できる。以下、
図3を説明する。
【0024】
映像配信サーバ100の特徴は、受信応答部113によるチャンク応答間隔△tの決定にある。
図3を参照してチャンク応答間隔△tの決定と、チャンク応答間隔△tの使用を説明する。なおチャンク応答間隔△tの決定と、チャンク応答間隔△tの使用との具体的な説明は
図11で後述する。
【0025】
ステップS01において、クライアント端末200が、セグメントファイル2をリクエストする。この状態では、クライアント端末200はすでにセグメントファイル1に含まれるフレームはクライアント端末200へ送信済とする。
【0026】
図3に示すように、セグメントファイルにはchunk1からchunk10として示す複数のchunk領域(以下、チャンク領域と表記)が設定されている。中段のchunk10には「chunk」と表示していないのは、chunk10には、まだフレームが格納されていないことを示す。セグメントファイルの中に示す1から10の長方形が各チャンク領域を示す。実施の形態1においてチャンク領域とは、フレームの格納領域を意味する。受信応答部113は、チャンク領域に格納された指定枚数のフレームを1チャンクとして、クライアント端末200に送信する。
【0027】
ステップS02(
図11のステップS131に対応)において、映像配信サーバ100の受信応答部113は、リクエストされたファイル名である「セグメントファイル2」からフレームのFPS値を取得し、チャンク応答間隔△tを決定する。FPS値=10の場合、チャンク応答間隔△t=0.1秒とする。ここでは各チャンク領域には1フレームが格納される前提である。つまり後述の指定枚数<N>が1枚の場合である。
【0028】
ステップS03(ステップS132に対応)において、受信応答部113は、ファイルのロック状態とファイルサイズとを取得する。ステップS03では、チャンク領域8に対して新たにチャンク領域9にフレームが格納されているとする。受信応答部113は、チャンク領域9の分、ファイルサイズが増加したことを確認する。またロック状態とは、セグメントファイルをブラウザビューア部112が作成途中である場合である。ロック状態ではセグメントファイルにフレームが格納される可能性がある。
【0029】
ステップS04(ステップS134に対応)において、受信応答部113は、取得したサイズ分のフレーム、すなわちチャンク領域9に格納されたフレームを1チャンクとして、かつ、応答として、クライアント端末200に送信する。ステップS04の完了の状態では、ロック状態であるので、まだ最後のチャンク領域10までフレームが書き込まれていない。
【0030】
ステップS05において、受信応答部113は、ステップS02で決定したチャンク応答間隔△t=0.1秒だけ待機する。
【0031】
ステップS06において、受信応答部113は、再度、ファイルのロック状態とファイルサイズを取得する。ステップS06ではチャンク領域10にフレームが書き込まれ、かつ、ロック状態が解放されて未ロック状態であり、受信応答部113はこの状態を取得する。
ステップS07において、受信応答部113は、取得したサイズ分のデータを応答する。すなわち、受信応答部113は、チャンク領域10に格納されているフレームを1チャンクとして、クライアント端末200へ送信する。未ロック状態であるので処理はステップS08へ進む。
ステップS08において、受信応答部113は、「0¥r¥n¥r¥n」をクライアント端末200へ送信し、チャンク応答を終了する。以上の受信応答部113の動作詳細は
図11の説明で後述する。
【0032】
図4は、映像配信サーバ100のハードウェア構成図である。
図4に示す映像配信サーバ100は、コンピュータである。映像配信サーバ100は、プロセッサ110を備える。映像配信サーバ100は、プロセッサ110の他に、主記憶装置120、補助記憶装置130、入力インタフェース140、出力インタフェース150、通信インタフェース160といった、他のハードウェアを備える。プロセッサ110は、信号線170を介して、他のハードウェアと接続され、他のハードウェアを制御する。
【0033】
映像配信サーバ100は、機能要素として、映像取得部111、ブラウザビューア部112および受信応答部113を備える。映像取得部111、ブラウザビューア部112および受信応答部113の機能は、映像データ送信プログラム101により実現される。
【0034】
プロセッサ110は、映像データ送信プログラム101を実行する装置である。映像データ送信プログラム101は、映像取得部111、ブラウザビューア部112および受信応答部113の機能を実現するプログラムである。プロセッサ110は、演算処理を行うIC(Integrated Circuit)である。プロセッサ110の具体例は、CPU(Central Processing Unit)、DSP(Digital
Signal Processor)、GPU(Graphics Processing Unit)である。
【0035】
主記憶装置120は、データを揮発的に保管する。主記憶装置120の具体例は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)である。主記憶装置120は、プロセッサ110の演算結果を保持する。主記憶装置120は共有メモリ111mを実現する。
【0036】
補助記憶装置130は、データを不揮発的に保管する。補助記憶装置130の具体例は、HDD(Hard Disk Drive)である。また、補助記憶装置130は、SD(登録商標)(Secure Digital)メモリカード、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disk)といった可搬記録媒体であってもよい。補助記憶装置130は、映像データ送信プログラム101を記憶している。
【0037】
入力インタフェース140は、各装置からデータが入力されるポートである。出力インタフェース150は、各種機器が接続され、各種機器にプロセッサ110によりデータが出力されるポートである。
【0038】
通信インタフェース160は、プロセッサ110がネットワークカメラ11およびクライアント端末200のような他の装置と通信するための通信ポートである。
【0039】
プロセッサ110は補助記憶装置130から映像データ送信プログラム101を主記憶装置120にロードし、主記憶装置120から映像データ送信プログラム101を読み込み実行する。映像配信サーバ100は、プロセッサ110を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、映像データ送信プログラム101の実行を分担する。それぞれのプロセッサは、プロセッサ110と同じように、映像データ送信プログラム101を実行する装置である。映像データ送信プログラム101により利用、処理または出力されるデータ、情報、信号値および変数値は、主記憶装置120、補助記憶装置130、または、プロセッサ110内の、レジスタあるいはキャッシュメモリに記憶される。
【0040】
映像データ送信プログラム101は、映像取得部111、ブラウザビューア部112および受信応答部113の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させるプログラムである。
【0041】
また、映像データ送信方法は、コンピュータである映像配信サーバ100が、映像データ送信プログラム101を実行することにより行われる方法である。映像データ送信プログラム101は、コンピュータ読み取り可能な記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【0042】
***動作の説明***
図5は、クライアント端末200による映像再生の概要を説明する図である。
図5を参照してクライアント端末200と映像配信サーバ100とのやり取りの概要を説明する。
ステップS31において、クライアント端末200は、映像配信サーバ100へプレイリストをリクエストする。
ステップS32において、受信応答部113がプレイリストを検索し取得する。
ステップS33において、受信応答部113が、取得したプレイリストをクライアント端末200へ送信する。
ステップS34において、クライアント端末200が、初期セグメントファイルおよびセグメントファイルを映像配信サーバ100へ、リクエストする。
ステップS35において、受信応答部113が、初期セグメントファイルおよびセグメントファイルを検索し取得する。
ステップS36において、受信応答部113が、初期セグメントファイルおよびセグメントファイルを応答する。セグメントファイルの応答とは、チャンク応答間隔△tに基づくチャンク応答である。
【0043】
図6は、クライアント端末200の動作を示すフローチャートであり、
図5におけるクライアント端末200の動作をさらに具体的に説明する図である。
ステップS201において、クライアント端末200は、プロセス起動用CGI(Common Gateway Interface)をリクエストする。
ステップS202において、クライアント端末200は、映像配信サーバ100から、応答htmlデータを受信する。
ステップS203において、クライアント端末200は、応答htmlに埋め込まれているプレイヤーを読み込み、プレイヤーを起動し同時にプレイリストを映像配信サーバ100にリクエストする。
ステップS204において、クライアント端末200は、映像配信サーバ100からプレイリストを受信する。
ステップS205において、クライアント端末200は、プレイリストに記載のあるセグメントファイルを、映像配信サーバ100にリクエストする。
ステップS206において、クライアント端末200は、受信したセグメントファイルのデータを再生する。
ステップS207において、クライアント端末200は、映像配信サーバ100に、プレイリストを再度リクエストする。なお、ステップS204からステップS207については、基本ループである。エラー発生あるいはブラウザタブ削除でプロセスが終了する。
【0044】
図7は、映像取得部111の動作概要を示す図である。映像取得部111はネットワークカメラ11の映像データを取得し、共有メモリ111mに格納する。詳細は
図11で後述する。
【0045】
図8は、ブラウザビューア部112の起動動作を示す図である。
ステップS11において、クライアント端末200がブラウザビューア部112の起動用CGIをリクエストする。
ステップS12において、受信応答部113が、ブラウザビューア部112の起動用CGIを起動する。
ステップS13において、起動用CGIがブラウザビューア部112のプロセスを起動する。
ステップS14において、起動用CGIが、応答用のhtmlデータを標準出力に出力する。
ステップS15において、受信応答部113は、標準出力に出力されたデータを応答する。標準出力に出力されたデータには映像再生の際に必要なプレイヤーと、プレイリストが含まれている。
【0046】
図9は、ブラウザビューア部112のセグメントファイル作成を示す図である。
図10は、ブラウザビューア部112のセグメントファイル作成動作を示すフローチャートである。
図9、
図10を参照して、ブラウザビューア部112によるセグメントファイル作成を説明する。
ステップS21において、ブラウザビューア部112は、共有メモリ111mにアクセスし、映像取得部111によって共有メモリ111mに格納された、FPS値、キーフレーム間隔、映像データを取得する。映像取得部111による共有メモリ111mへの格納は
図11のシーケンスで説明する。
ステップS22において、ブラウザビューア部112はセグメントファイルを作成し、作成したセグメントファイルをセグメントファイル用ディレクトリ112dに格納する。
【0047】
図10を説明する。
ステップS121において、ブラウザビューア部112は、映像取得部111の共有メモリ111mから、FPS値、キーフレーム間隔を取得する。これらは、セグメントファイルの作成に使用される。
ステップS122において、ブラウザビューア部112は、映像取得部111の共有メモリ111mから、映像データを取得する。
ステップS123において、ブラウザビューア部112は、映像データをから、Flagmented MP4の初期セグメントファイルを作成する。
ステップS124において、ブラウザビューア部112は、映像データをから、Flagmented MP4のセグメントファイルを作成する。
ステップS125において、ブラウザビューア部112は、HLSプレイリストを作成または更新する。
ステップS126において、ブラウザビューア部112は、古くなったセグメントファイルを削除する。
ステップS127において、ブラウザビューア部112は、セグメントファイルおよびプレイリストを削除する。
図10に示すように、プロセス停止までステップS124からステップS126はループする。このループは停止命令やエラー時に終了する。
【0048】
なお
図10において、各ネットワークカメラ11毎にセグメントファイル用ディレクトリ112dが作成され、セグメントファイルは各ディレクトリに作成、保管される。また、作成中のセグメントファイルは、受信応答部113に未完成であるかどうかを判断させるため、排他制御を行う。排他制御により受信応答部113はロック状態かどうかを判断することとなる(
図3のステップS03、S06、
図11のステップS132等)。例えばc言語のflockなどを使用できるが、受信応答部113がセグメントファイルのファイルサイズを確認しながら、セグメントファイルの完成状態を判断する方法は問わない。
【0049】
図11は、映像配信サーバ100の動作を示すシーケンス図である。
図11は
図3に対応している。まずクライアント端末200がセグメントフィル2をリクエストする。これは
図3のステップS01である。
ステップS111において、映像取得部111は、各ネットワークカメラ11から映像データを取得する。
ステップS112において、映像取得部111は、映像データを、フレーム単位で共有メモリ111mに格納する。
ステップS113において、映像取得部111は、取得した映像データの実績値から、キーフレーム間隔、FPS値を算出する。映像取得部111は、複数のチャンク領域に格納される複数のフレームをネットワークカメラから取得し、取得した複数のフレームからフレームレイトを算出する。
ステップS114において、映像取得部111は、算出したキーフレーム間隔,FPS値を共有メモリ111mに格納する。
【0050】
次に,
図11におけるブラウザビューア部112の動作を説明する。
図11におけるブラウザビューア部112の動作は、
図10から抜き出した主要処理を示している。
ステップS121、S122において、ブラウザビューア部112は、キーフレーム間隔,FPS値,映像データを共有メモリ111mから取得する。
ステップS123、S124において、ファイル作成部であるブラウザビューア部112は、複数のチャンク領域が設定されているセグメントファイルの各チャンク領域(フレームが書き込まれる記憶領域)に、ネットワークカメラの撮影した映像データであるフレームを、指定されている指定枚数<N>だけ順番に格納する。
図3で説明したように、実施の形態1では指定枚数<N>はN=1であるので、各チャンク領域には1枚のフレームが格納される。
具体的には以下のようである。ブラウザビューア部112は、セグメントファイルを作成する。
図2および
図3に示すように、セグメントファイルにはFPS値が記録されていると共に、複数のチャンク領域に分割されている。実施の形態1では、指定枚数は1枚であるので、各チャンク領域には1枚のフレームが格納される。ブラウザビューア部112は、セグメントファイル用ディレクトリ112dに、作成中のセグメントファイルおよび作成中のセグメントファイルを格納する。
【0051】
次に,
図11における受信応答部113の動作を説明する。
図11の受信応答部113の動作は
図3の受信応答部113の動作に対応している。
【0052】
<ステップS131>
ステップS131において、受信応答部113は、チャンク領域に指定枚数<N>のフレームが格納されているかを確認する時間間隔を示すチャンク応答間隔△tを、フレームのフレームレイトに基づいて決定する。指定枚数<N>の値は、予め受信応答部113に設定されている。受信応答部113は、映像取得部111が算出したフレームレイトを用いてチャンク応答間隔△tを決定する。セグメントファイルはネットワークカメラ11ごとに作成されるので、ネットワークカメラ11のFPS値が既知であるときには既知のFPS値を用いることもできる。この場合、既知のFPS値が受信応答部113に設定される。受信応答部113は、フレームレイトに加えて、指定枚数<N>に基づいて、チャンク応答間隔△tを決定する。受信応答部113は、フレームレイトを示すFPS値の逆数と、指定枚数<N>とに基づいて、チャンク応答間隔△tを決定することができる。
図3ではセグメントファイル2についてはチャンク応答間隔△tは0.1秒であった。これは、FPS値の逆数=(1/10)と指定枚数<N>=1との積から決定した。仮にFPS値=10、指定枚数<N>=2であれば、チャンク応答間隔△tは0.2秒となる。以下の説明では指定枚数<N>=1とする。
【0053】
受信応答部113は、リクエストされたファイル名からデータのFPS値を取得し、応答間隔△tを決定する。例えば
図3のセグメントファイル2がリクエストされた場合を想定する。
図2に示すように、「セグメントファイル2」というファイル名から、受信応答部113はデータであるフレームのFPS値を取得できる。セグメントファイル2ではFPS値=10である。受信応答部113は、チャンク応答間隔△tを、FPS値の逆数=(1/10)=0.1と、指定枚数<N>=1との積から、0.1秒と決定する。
【0054】
<ステップS132>
ステップS132において、受信応答部113は、
図3のチャンク領域9までフレームが格納されているセグメントファイル2のロック状態とファイルサイズをチェックする。ロック状態は「ロック」であり、ファイルサイズはチャンク領域8までの格納状態から、チャンク領域9にフレームが格納された状態である。
【0055】
<ステップS133>
ステップS133において、受信応答部113は、受信応答部113はロック状態かどうかを判定する。この例では「ロック状態」なので、処理はステップS136に進む。
【0056】
<ステップS136>
ステップS136(1)において、まず受信応答部113は、新規取得サイズ分応答する。つまり、受信応答部113は、前回から新たに格納されたチャンク領域9(格納チャンク領域)のフレームを1チャンクとして、クライアント端末200に送信する。
そしてステップS136(2)において、受信応答部113は、チャンク応答間隔△tだけ待機した後、ステップS132において、セグメントファイル2のロック状態とファイルサイズをチェックする。ステップS132では受信応答部113は、セグメントファイル2のロック状態とファイルサイズをチェックする。
【0057】
<ステップS133>
ステップS133において、ロック状態であれば処理はステップS136に進み、ロック状態でなければ、つまりセグメントファイル2へのフレームの格納が終了した場合には、処理はステップS134に進む。ここでは未ロック状態とする。つまりセグメントファイル2はチャンク領域10までフレームが格納されているとする。
【0058】
<ステップS134>
ステップS134において、受信応答部113は、新規取得サイズ分応答する。すなわち受信応答部113は、チャンク領域10に格納されたフレームを1チャンクとして、クライアント端末200に送信する。
【0059】
<ステップS135>
ステップS135において、受信応答部113は、「0¥r¥n¥r¥n」をクライアント端末200に応答し、チャンク応答が終了する。
【0060】
受信応答部113によるステップS132,ステップS133,ステップS136の一連の処理をさらに説明しておく。受信応答部113は、ブラウザビューア部112によって指定枚数<N>のフレームが新たに格納されたチャンク領域である「格納チャンク領域」が存在するかどうかを、決定されたチャンク応答間隔△tが経過するたびに確認する。
図11に示すように、受信応答部113は、ステップS132、次にステップS133、ステップS133でYESであればステップS136(1)における新規取得分の応答、次にステップS136(2)におけるチャンク応答間隔△tの待機というように処理を進める。つまりステップS136(2)と、ステップS132のセグメントファイルのファイルサイズチェックとの関係は、「格納チャンク領域が存在するかどうかを、決定されたチャンク応答間隔△tが経過するたびに確認する。」という関係である。そして受信応答部113は、格納チャンク領域が存在する場合には、格納チャンク領域に格納された指定枚数のフレームを1チャンクとして、映像データを要求する要求装置であるクライアント端末200に送信する(ステップS136(1)、ステップS134)。
【0061】
***実施の形態1の効果の説明***
図12は、比較例との比較において、実施の形態1の映像配信サーバ100の効果を説明する図である。映像配信サーバ100の指定枚数<N>は1枚とする。
図12の左は、「FPS=1、GOV=1」の映像データの場合を示す。
図12の右は、「FPS=30、GOV=30」の映像データの場合を示す。
【0062】
まず
図12の左を説明する。FPS=1(枚/秒)であるので、チャンク完成間隔、すなわち、チャンク領域に1フレームが格納される間隔は、映像配信サーバ100および比較例も、1000msecである。最速応答に必要なファイル状態のチェック回数/秒は、どちらも1回である。チャンク応答間隔△tは、映像配信サーバ100の場合、FPS値の逆数と、指定枚数<N>との積であるので、チャンク応答間隔△t=1秒=1000msecである。一方、比較例は70msecである。70msecは従来から仮定した値である。ファイル状態のチェック(回数/秒)は、チャンク応答間隔△t=1000msecと、チャンク応答間隔△t=70msecとから、映像配信サーバ100と比較例は、それぞれ、1回、1000/70=14.3から15回となる。無駄なファイル状態のチェック(回数/秒)は、映像配信サーバ100が0回であるのに対して比較例は14回となる。応答時間の遅延は、1チャンクあたり、どちらも0msecである。
図12の左の場合、「無駄なファイル状態のチェック(回数/秒)」により、比較例では14回の無駄が生じており、比較例の配信サーバでは無駄なCPU負荷が生じている。
【0063】
まず
図12の右を説明する。FPS=30(枚/秒)であるので、チャンク完成間隔、すなわち、1つのチャンク領域に1フレームが格納される間隔は、映像配信サーバ100および比較例も、33msecである。最速応答に必要なファイル状態のチェック回数/秒は、1000/33=30より、どちらも30回である。チャンク応答間隔△tは、映像配信サーバ100の場合、FPS値の逆数と、指定枚数<N>との積であるので、チャンク応答間隔△t=1/30×1=33msecである。一方、比較例は70msecである。70msecは上記のように従来から仮定した値である。ファイル状態のチェック(回数/秒)は、チャンク応答間隔△t=33msecと、チャンク応答間隔△t=70msecとから、映像配信サーバ100と比較例は、それぞれ、30回、15回となる。無駄なファイル状態のチェック(回数/秒)は、映像配信サーバ100、比較例とも0回である。応答時間の遅延は、1チャンクあたり、映像配信サーバ100、比較例ではそれぞれ、0msec、37msec(70msec-33msec)である。
図12の右の場合、「1チャンクあたりの応答時間の遅延」により、比較例では37msecの遅延が生じている。
【0064】
図12に示すように、映像配信サーバ100によれば、受信応答部113がフレームレイトに基づいてチャンク応答間隔△tを決定するので、配信サーバのCPUへの不要な負荷を軽減することができ、同時に、映像のライブ再生の遅延時間を低減することができる。
【符号の説明】
【0065】
11 ネットワークカメラ、100 映像配信サーバ、101 映像データ送信プログラム、110 プロセッサ、111 映像取得部、111m 共有メモリ、112 ブラウザビューア部、112d セグメントファイル用ディレクトリ、113 受信応答部、120 主記憶装置、130 補助記憶装置、140 入力インタフェース、150 出力インタフェース、160 通信インタフェース、170 信号線、200 クライアント端末、300 ネットワーク、1000 映像配信システム。
【要約】
【課題】ライブ映像の配信において、配信の遅延低減と、セグメントファイルの完成状態確認の負荷低減との、双方のバランスのとれた映像配信サーバを提供する。
【解決手段】映像配信サーバ100は、記憶領域である複数のチャンク領域が設定されているセグメントファイルの各チャンク領域に、ネットワークカメラ11の撮影した映像データのフレームを、指定枚数だけ順番に格納するブラウザビューア部112と、チャンク領域に指定枚数のフレームが格納されているか確認する時間間隔を示すチャンク応答間隔△tをフレームのFPS値に基づいて決定し、指定枚数のフレームが新たに格納された格納チャンク領域が存在するかどうかを、チャンク応答間隔△tが経過するたびに確認し、格納チャンク領域が存在する場合には、格納された指定枚数のフレームを1チャンクとして、クライアント端末200に送信する受信応答部113とを備える。
【選択図】
図1