特許第6563424号(P6563424)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 京東方科技集團股▲ふん▼有限公司の特許一覧

特許6563424ストリームメディアデータ伝送方法、クライアント及びサーバ
<>
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000007
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000008
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000009
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000010
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000011
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000012
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000013
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000014
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000015
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000016
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000017
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000018
  • 特許6563424-ストリームメディアデータ伝送方法、クライアント及びサーバ 図000019
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6563424
(24)【登録日】2019年8月2日
(45)【発行日】2019年8月21日
(54)【発明の名称】ストリームメディアデータ伝送方法、クライアント及びサーバ
(51)【国際特許分類】
   H04N 21/438 20110101AFI20190808BHJP
   H04N 21/24 20110101ALI20190808BHJP
   G06F 13/00 20060101ALI20190808BHJP
【FI】
   H04N21/438
   H04N21/24
   G06F13/00 520B
【請求項の数】19
【全頁数】25
(21)【出願番号】特願2016-569038(P2016-569038)
(86)(22)【出願日】2015年6月18日
(65)【公表番号】特表2018-509010(P2018-509010A)
(43)【公表日】2018年3月29日
(86)【国際出願番号】CN2015081737
(87)【国際公開番号】WO2016112639
(87)【国際公開日】20160721
【審査請求日】2018年6月15日
(31)【優先権主張番号】201510024568.1
(32)【優先日】2015年1月16日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】510280589
【氏名又は名称】京東方科技集團股▲ふん▼有限公司
【氏名又は名称原語表記】BOE TECHNOLOGY GROUP CO.,LTD.
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(72)【発明者】
【氏名】▲張▼ 楚雄
【審査官】 長谷川 素直
(56)【参考文献】
【文献】 特開2009−206564(JP,A)
【文献】 特開2007−214675(JP,A)
【文献】 特開2010−114815(JP,A)
【文献】 国際公開第2014/045768(WO,A1)
【文献】 米国特許出願公開第2013/0111028(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00−21/858
G06F 13/00
H04N 21/24
(57)【特許請求の範囲】
【請求項1】
クライアントであって、
サーバが同じ内容であり異なるビットレートである複数のセグメントを送信するかどうかを判断するための第1の処理モジュールと、
前記第1の処理モジュールにより、前記サーバが同じ内容であり異なるビットレートである複数のセグメントを送信すると判断する場合に、前記サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを、前記クライアント自身によって、または前記サーバによって送信される第1の指示情報に従って判断する第2の処理モジュールと、を備えるクライアント。
【請求項2】
前記第2の処理モジュールにより前記サーバが優先的に高ビットレートのセグメントを送信すると判断する場合に、高ビットレートのセグメントの受信を始める第1の送受信モジュールを更に備える請求項1に記載のクライアント。
【請求項3】
前記第2の処理モジュールは、更に、
前記第1の送受信モジュールが高ビットレートのセグメントの受信を始めた後、前記第1の送受信モジュールが当該高ビットレートのセグメントの受信を始めてから第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成したかどうかを判断し、
前記第1の送受信モジュールが前記第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと、前記第1の送受信モジュールが当該高ビットレートのセグメントの受信をあきらめるように制御し、且つ低ビットレートのセグメントの受信を始める請求項2に記載のクライアント。
【請求項4】
前記第2の処理モジュールは更に、
前記第1の送受信モジュールが前記第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成すると、前記第1の送受信モジュールが前記サーバへ、前記サーバが低ビットレートのセグメントを送信する必要がないことを通知する第2の指示情報を送信するように制御する請求項3に記載のクライアント。
【請求項5】
前記第2の処理モジュールにより、前記サーバが優先的に低ビットレートのセグメントを送信すると判断する場合に、低ビットレートのセグメントの受信を始め、且つ低ビットレートのセグメントを受信した後、引き続いて高ビットレートのセグメントの受信を始めるための第2の送受信モジュールを更に含む請求項1に記載のクライアント。
【請求項6】
前記第2の送受信モジュールが当該高ビットレートのセグメントの受信を始めた後、前記第2の処理モジュールは更に、
前記第2の送受信モジュールが当該高ビットレートのセグメントの受信を始めてから第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成したかどうかを判断し、
前記第2の送受信モジュールが前記第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと、前記第2の送受信モジュールに受信を完成した低ビットレートのセグメントを復号化させるように制御する請求項5に記載のクライアント。
【請求項7】
前記第2の処理モジュールは、更に、前記第2の送受信モジュールが前記第2の時間閾値内に、当該高ビットレートのセグメントに対する受信を完成していないと、前記第2の送受信モジュールに当該高ビットレートのセグメントに対する受信をあきらめさせるように制御する請求項6に記載のクライアント。
【請求項8】
前記第2の処理モジュールは具体的に、前記サーバにより送信された前記サーバが高ビットレートのセグメントを優先的に送信するかどうかを指示するための前記第1の指示情報に基づいて、前記サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断することを特徴とする請求項1〜7のいずれかに記載のクライアント。
【請求項9】
サーバであって、
クライアントへ同じ内容であり異なるビットレートである複数のセグメントを送信する際、優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを確定するための処理モジュールと、
高ビットレートのセグメントを優先的に送信するかどうかを指示するための第1の指示情報を前記クライアントに送信する送受信モジュールと、を備えるサーバ。
【請求項10】
前記送受信モジュールは、更に、
前記第1の指示情報を前記クライアントに送信した後、前記クライアントより送信した、前記サーバが前記クライアントへ低ビットレートのセグメントを送信する必要がないことを指示する第2の指示情報を受信し、
前記第2の指示情報により前記クライアントへの低ビットレートのセグメントの送信を停止する請求項9に記載のサーバ。
【請求項11】
クライアントによって実行されるストリームメディアデータ伝送方法であって、
サーバが同じ内容であり異なるビットレートである複数のセグメントを送信するかどうかを判断するステップと、
前記サーバが同じ内容であり異なるビットレートである複数のセグメントを送信すると、前記サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを、前記クライアント自身によって、または前記サーバによって送信される第1の指示情報に従って判断するステップと、を含むストリームメディアデータ伝送方法。
【請求項12】
前記サーバが優先的に高ビットレートのセグメントを送信すると、高ビットレートのセグメントの受信を始めるステップと、
当該高ビットレートのセグメントの受信を始めてから第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成したかどうかを判断するステップと、
前記第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと、当該高ビットレートのセグメントの受信をあきらめ、且つ低ビットレートのセグメントの受信を始めるステップと、を含む請求項11に記載の方法。
【請求項13】
前記第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成すると、前記サーバへ前記サーバが低ビットレートのセグメントを送信する必要がないことを通知する第2の指示情報を送信するステップを更に含む請求項12に記載の方法。
【請求項14】
前記サーバが優先的に低ビットレートのセグメントを送信すると、低ビットレートのセグメントの受信を始め、且つ低ビットレートのセグメントを受信した後、引き続いて高ビットレートのセグメントの受信を始めるステップを更に含む請求項11に記載の方法。
【請求項15】
当該高ビットレートのセグメントの受信を始めた後、
当該高ビットレートのセグメントの受信を始めてから第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成したかどうかを判断するステップと、
前記第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと、受信が完成された低ビットレートのセグメントを復号化するステップとを更に含む請求項14に記載の方法。
【請求項16】
前記第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していな
いと、当該高ビットレートのセグメントに対する受信をあきらめるステップを更に含む請求項15に記載の方法。
【請求項17】
前記サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断することは、
前記サーバにより送信した前記サーバが高ビットレートのセグメントを優先的に送信するかどうかを指示するための前記第1の指示情報を受信するステップと、
受信された前記第1の指示情報により、前記サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断するステップとを含む請求項11〜16のいずれかに記載の方法。
【請求項18】
サーバによって実行されるストリームメディアデータ伝送方法であって、
クライアントへ同じ内容であり異なるビットレートである複数のセグメントを送信する際、優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを確定するステップと、
高ビットレートのセグメントを優先的に送信するかどうかを指示するための第1の指示情報を前記クライアントに送信するステップと、を含むストリームメディアデータ伝送方法。
【請求項19】
前記第1の指示情報を前記クライアントに送信した後、更に、
前記クライアントにより送信した前記サーバが前記クライアントへ低ビットレートのセグメントを送信する必要がないことを指示する第2の指示情報を受信するステップと、
前記第2の指示情報により前記クライアントへの低ビットレートのセグメントの送信を停止するステップとを含む請求項18に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はストリームメディア技術に関し、特にストリームメディアデータ伝送装置、方法及びシステムに関する。
【背景技術】
【0002】
従来のストリームメディア技術を採用する場合に、伝送したストリームメディアデータはファイアウォール、専門的なメディアサーバによってストリームメディア技術をサポートする必要があり、且つ従来のストリームメディア技術の実現方式は複雑である。従来、インターネットによってストリームメディアデータを伝送するインターネットストリームメディア技術が出現し、従来のインターネット体系に対して追加の要求を提出しなく、メディアファイルの記憶、情報記述方式を修正することができ、従来のHTTPプロトコルによってストリームメディアデータを伝送させることができる。
【0003】
動画専門家集団(Moving Pictures Experts Group、MPEG)が制定したダイナミックアダプティブストリームメディア (Dynamic Adaptive Streaming over HTTP、DASH)標準は、MPEG DASH標準と略称し、インターネットストリームメディア技術を採用してストリームメディアデータを伝送する標準化方案を提供する。
【0004】
MPEG DASH標準で定義されたメディア表現記述(Media Presentation Description、MPD)の階層構造モデルを図1に示す。
【0005】
当該階層構造モデルにおいて、ピリオド(Period)は一定の時間再生できるメディア内容を記述することに用いられ、隣接配列するピリオドが記述するメディア内容は時間的に連続である。1つのピリオドは複数のアダプテーションセット(Adaptation Set)を含み、各アダプテーションセットは複数のビットレートにアダプテーションするメディア内容を記述し、各ビットレートは1つの表現(Representation)に対応する。表現はメディア内容の具体的なパッケージフォーマット、ビットレート、符号化および復号化パラメータ等の情報を記述する。1つの表現は複数のセグメント(Segment)のユニフォームリソースロケータ(Uniform Resourece Locator、URL)を含み、対応したセグメントの記憶位置を指示することに用いられ、セグメントは具体的なメディア内容、即ちオーディオ、ビデオ、字幕、多重化されたオーディオ及びビデオ等を含む。
【0006】
上記MPEG DASH標準に基づいて、インターネットによってストリームメディアデータを伝送する選択的な方案は、まず、WebSocket双方向接続を確立して、WebSocketテキストフレームによってMPEG DASH標準の制御情報を伝送し、WebSocketバイナリフレームによってセグメントを伝送する。
【0007】
図1に示すようなフレームでクライアントにメディア内容を表示する過程は図2を参照し、図1に示すようなフレームでクライアントにメディア内容を表示する過程は、以下のステップを含む。
【0008】
ステップS201において、クライアントはサーバにOpenMediaメッセージを送信する。クライアントは当該メッセージにMPDのURLアドレスを携えることによって、再生する必要があるメディアをサーバに指示する。
【0009】
ステップS202において、クライアントにメディアの情報、例えば、メディアは準備ができるたか否かを知らせるように、サーバはクライアントにMediaInfoメッセージを送信する。
【0010】
ステップS203において、サーバにメディアの送信を要求するように、クライアントはサーバにStartStreamメッセージを送信する。
【0011】
ステップS204において、クライアントにメディアストリームの情報を知らせるように、サーバはクライアントにStreamInfoメッセージを送信する。
【0012】
ステップS205において、サーバはメディアセグメントの送信を始める。
【0013】
クライアントはサーバにメディアの再生を起動することを要求した後に、サーバは図2におけるステップS204によって、クライアントに送信したStreamInfoメッセージに、サーバが同じ内容であり異なるビットレートである複数の表現を送信するか否かを指示するための指示情報multipleRepresentationを携える。当該指示情報が、サーバが同じ内容であり異なるビットレートである複数の表現を送信するのを指示すると、サーバはセグメントを送信する際に、クライアントに同時に複数の同じ内容であり異なるビットレートであるセグメント、即ち前記複数の表現に含まれた同じ内容であり異なるビットレートであるセグメントを送信する。
【0014】
上記過程に関するOpenMediaメッセージ、MediaInfoメッセージ、StartStreamメッセージとStreamInfoメッセージを、MPEG DASH標準についてWebSocketプロトコルにおいて拡張される、WebSocketのテキストフレームによって伝送されるメッセージと見なすことができる。
【0015】
しかしながら、クライアントはサーバがまず送信したセグメントは高いビットレートのものであるか、低いビットレートのものであるかを分からない。
【0016】
従来の一つの実現方式は、クライアントは1つのセグメントを受信した後に、所定の待ち時間で、より高いビットレートのセグメントを受信したか否かを判断し、より高いビットレートのセグメントを受信すると、当該より高いビットレートのセグメントを復号化して表示し、より高いビットレートのセグメントを受信していないと、前に受信したセグメントを復号化して表示することである。
【0017】
サーバがまず高いビットレートのセグメントを送信する場合に対して、上記実現方式において、クライアントは高いビットレートのセグメントを受信した後に、サーバが後続送信した同じ内容であり異なるビットレートであるセグメントがより高いビットレートのセグメントであるか、より低いビットレートのセグメントであるかを分からないと、依然として上記所定の待ち時間で待ち、クライアントの復号化の遅延が増加されてしまう。
【発明の開示】
【発明が解決しようとする課題】
【0018】
本発明が解決しようとする技術的課題は、クライアントがより高いビットレートのセグメントを待ち、復号化の遅延が長い問題を解決するためのストリームメディアデータ伝送装置、方法及びシステムを提供することである。
【課題を解決するための手段】
【0019】
本発明の第1の様態によれば、サーバが同じ内容であり異なるビットレートである複数のセグメントを送信するかどうかを判断する第1の処理モジュールと、前記第1の処理モジュールにより前記サーバが同じ内容であり異なるビットレートである複数のセグメントを送信すると判断する場合に、前記サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断する第2の処理モジュールと、を備えるクライアントを提供する。
【0020】
本発明の第2の様態によれば、クライアントへ同じ内容であり異なるビットレートである複数のセグメントを送信する場合に優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを確定する処理モジュールと、高ビットレートのセグメントを優先的に送信するかどうかを指示するための第1の指示情報を前記クライアントに送信する送受信モジュールと、を備えるサーバを提供する。
【0021】
本発明の第3の様態によれば、サーバが同じ内容であり異なるビットレートである複数のセグメントを送信するかどうかを判断するステップと、前記サーバが同じ内容であり異なるビットレートである複数のセグメントを送信すると、前記サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断するステップと、を含むストリームメディアデータ伝送方法を提供する。
【0022】
本発明の第4の様態によれば、クライアントへ同じ内容であり異なるビットレートである複数のセグメントを送信する場合に優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを確定するステップと、高ビットレートのセグメントを優先的に送信するかどうかを指示するための第1の指示情報を前記クライアントに送信するステップと、を含む他のストリームメディアデータ伝送方法を提供する。
【0023】
本発明の第5の様態によれば、クライアント及びサーバを備えるストリームメディアデータ伝送システムを提供し、前記クライアントは、前記サーバが同じ内容であり異なるビットレートである複数のセグメントを送信するかどうかを判断し、前記サーバが同じ内容であり異なるビットレートである複数のセグメントを送信すると、前記サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断し、前記サーバは、前記クライアントへメディアセグメントを送信する。
【発明の効果】
【0024】
以上のように、本発明の実施例において、クライアントはサーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断することができ、このため、クライアントはサーバが高ビットレートのセグメントを優先的に送信すると判断する場合、サーバがより高いビットレートのセグメントを送信することを待つ必要がなく、受信されたセグメントを直接に復号化し、クライアントが復号化する遅延を短縮したことを実現する。
【図面の簡単な説明】
【0025】
図1】MPEG DASH標準で定義されたMPD階層構造のモデル図である。
図2図1に示すフレームでクライアントがメディア内容を表示する過程の模式的なフローチャートである。
図3】本発明の実施例によるストリームメディアデータ伝送システムの構造模式図である。
図4】WebSocketのフレーム構造の模式図である。
図5】ビットレート切り替え方式の模式図である。
図6】本発明の実施例1によるクライアントのストリームメディアデータ伝送の処理のフローチャートである。
図7A】本発明の実施例によるクライアントの第1の構造模式図である。
図7B】本発明の実施例によるクライアントの第2の構造模式図である。
図7C】本発明の実施例によるクライアントの第3の構造模式図である。
図7D】本発明の実施例によるクライアントの第4の構造模式図である。
図8】本発明の実施例によるサーバの構造模式図である。
図9】本発明の実施例によるストリームメディアデータ伝送方法のフローチャートである。
図10】本発明の実施例による他のストリームメディアデータ伝送方法のフローチャートである。
【発明を実施するための形態】
【0026】
本発明の実施例は、クライアントがより高いビットレートのセグメントを待ち、復号化の遅延が長い問題を解決するためのストリームメディアデータ伝送装置及び方法を提供する。
【0027】
以下、本発明の実施例を図面を参照しながら詳しく説明する。まず、本発明の実施例によるストリームメディアデータ伝送システムを説明し、そして、本発明の実施例によるクライアント及びサーバをそれぞれ説明し、最後、本発明の実施例による二つのストリームメディアデータ伝送方法を説明する。
【0028】
図3は本発明の実施例によるストリームメディアデータ伝送システムの構造模式図である。図3に示すように、当該システムはクライアント301及びサーバ302を含む。
【0029】
クライアント301はサーバ302が同じ内容であり異なるビットレートである複数のセグメントを送信するかどうかを判断する。サーバ302が同じ内容であり異なるビットレートである複数のセグメントを送信すると判断する場合に、クライアント301は更にサーバ302が優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断する。
【0030】
サーバ302はクライアント301へメディアを送信する。
【0031】
図3において、簡単に模式的に示すために、一つのクライアント301及び一つのサーバ302のみを示したが、実際に、1つのサーバ302は複数のクライアント301へメディアを送信することができ、1つのクライアント301もそれぞれ複数のサーバ302へメディアの送信を要求できる。
【0032】
本発明の実施例において、選択的に、クライアント301はサーバ302とWebSocket双方向接続を確立しており、確立された当該WebSocket双方向接続に基づいてストリームメディア伝送を行う。クライアント301は図2におけるステップS203により、サーバ302のメディアの送信を要求することができ、即ちクライアント301はサーバ302へStartStreamメッセージを送信して、メディアストリームを要求する。
【0033】
例えば、クライアント301はサーバ302のメディアの送信を要求した後且つサーバ302がクライアント301へ各セグメントを送信する前に、サーバ302が優先的に優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断することができる。代わりに、クライアント301はサーバ302のメディアの送信の過程において、サーバ302が優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断してもよい。
【0034】
具体的には、サーバ302はクライアント301へ送信されたStreamInfoメッセージにおけるmultipleRepresentationキーにより、クライアント301へサーバ302が同じ内容であり異なるビットレートである複数のセグメントを送信するかどうかを指示する。当該キーの取り値が「true」である場合、クライアント301へサーバ302が同じ内容であり異なるビットレートである複数のセグメントを送信すると指示する。
【0035】
現在、StreamInfoメッセージのフォーマットを表1に示す。
【0036】
【表1】
【0037】
具体的には、クライアント301が、サーバ302のメディアの送信の過程においてサーバ302が優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断する場合に、クライアント301は以下の形態1又は形態2によりサーバ302が優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断する。クライアント301が、サーバ302が各セグメントを送信する前にサーバ302が優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断する場合に、クライアント301は以下形態2によりサーバ302が優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断する。
【0038】
形態1、クライアント301自体で判断を実現する。
【0039】
クライアント301が、サーバ302のメディアの送信を要求した後受信されたサーバ302により送信した一つ目のセグメントのビットレートが所定のビットレート上限(例えば、クライアント301は予めサーバ302がクライアント301へ送信する各セグメントの最高ビットレートを知っていると、当該最高ビットレートを所定のビットレート上限とする)であると、クライアント301はサーバ302が優先的に高ビットレートのセグメントを送信すると判断する。クライアント301がサーバ302のメディアの送信を要求した後受信されたサーバ302により送信した一つ目のセグメントのビットレートが所定のビットレート下限(例えば、クライアント301は予めサーバ302がクライアント301へ送信した各セグメントの最低ビットレートを知っていると、当該最低ビットレートを所定のビットレート下限とする)であると、クライアント301はサーバ302が優先的に低ビットレートのセグメントを送信すると判断する。
【0040】
クライアント301は、サーバ302のメディアの送信を要求した後、まずサーバ302により送信した高ビットレートのセグメントを受信し、次にサーバ302により送信した低ビットレートのセグメントを受信すると、サーバ302が優先的に高ビットレートのセグメントを送信すると判断する。まずサーバ302が送信した低ビットレートのセグメントを受信し、次にサーバ302が送信した高ビットレートのセグメントを受信すると、サーバ302が優先的に低ビットレートのセグメントを送信すると判断する。
【0041】
具体的には、クライアント301が、サーバ302のメディアの送信を要求した後受信されたサーバ302により送信した一つ目のセグメントのビットレートが所定のビットレート上限よりも小さくて且つ所定のビットレート下限よりも大きいと、クライアント301は次のセグメントの受信を待ち、受信された次のセグメントのビットレートが一つ目のセグメントのビットレートよりも低いと、サーバ302が優先的に高ビットレートのセグメントを送信すると判断する。受信された次のセグメントのビットレートが一つ目のセグメントのビットレートよりも高いと、サーバ302が優先的に低ビットレートのセグメントを送信すると判断する。
【0042】
クライアント301自体で判断する形態はいろいろあり、以上のものは単に例示である。
【0043】
形態2、クライアント301はサーバ302が送信した第1の指示情報により判断する。
【0044】
当該第1の指示情報はサーバ302が高ビットレートのセグメントを優先的に送信するかどうかを指示するためのものである。選択的に、クライアント301とサーバ302がWebSocket双方向接続を確立したと、確立された当該WebSocket双方向接続に基づいてストリームメディアの伝送を行い、表1に示すStreamInfoメッセージを修正することができ、これによりStreamInfoメッセージで当該第1の指示情報を提供する。例えば、以下の表2に示すように、表1に示すStreamInfoメッセージでキー「bitratePriority」を増加し、且つ当該キー「bitratePriority」により当該第1の指示情報を提供することができる。例えば、表2において、「bitratePriority」がキー「multipleRepresentation」の後にあるが、実際に実現する際、位置が表2に示す位置に限定されず、例えば、メッセージ全体の最後にあってもよい。
【0045】
表2において、「bitratePriority」の値がBooleanタイプであり、取り値が「true」であるとサーバ302が優先的に高ビットレートのセグメントを送信することを示し、取り値が「false」であるとサーバ302が優先的に低ビットレートのセグメントを送信することを示す。実際に実現する際、その他のタイプ、例えば、数値型であってもよく、取り値が1である場合サーバ302が優先的に高ビットレートのセグメントを送信することを示し、取り値が0である場合サーバ302が優先的に低ビットレートのセグメントを送信することを示す。具体的な実現形態は以上の例に限定されず、クライアント301にサーバ302が優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断させることができれば良い。
【0046】
【表2】
【0047】
選択的に、クライアント301が確実にセグメントを受信することを実現するために、サーバ302が優先的に高ビットレートのセグメントを送信すると判断した場合、高ビットレートのセグメントを受信し始めた後、クライアント301は更に高ビットレートのセグメントを受信し始めた後の第1の時間閾値内に当該高速率のセグメントに対する受信を完成したかどうかを判断することができる。当該第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと、クライアント301は当該高ビットレートのセグメントの受信をあきらめて、低ビットレートのセグメントの受信を始めることができる。
【0048】
選択的に、前記クライアント301は高ビットレートのセグメントを受信し始めた後計時を始めることができ、代わりに、サーバ302が優先的に高ビットレートのセグメントを送信すると判断した後計時を始めてもよい。
【0049】
選択的に、クライアント301がサーバ302のメディアの送信を要求した後且つサーバ302がクライアント301へ各セグメントを送信する前に、サーバ302が優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断すると、クライアント301は更にサーバ302のメディアの送信を要求してから計時を始めてもよい。
【0050】
選択的に、ネットワークの伝送リソースを節約し、クライアント301とサーバ302との間のセグメント伝送効率を向上させるために、クライアント301が上記第1の時間閾値内に当該高ビットレートのセグメントの受信を完成すると、クライアント301はサーバ302へ第2の指示情報を送信し、当該第2の指示情報はサーバ302に低ビットレートのセグメントを送信する必要がないことを通知するためのものである。
【0051】
選択的に、クライアント301とサーバ302がWebSocket双方向接続を確立し、確立された当該WebSocket双方向接続に基づいてストリームメディア伝送を行うと、クライアント301はWebSocketフレームにおける指示情報によりセグメントの受信を完成したかどうかを判断することができる。
【0052】
WebSocketのフレーム構造を図4に示す。オペコードが4ビット(bit)であり、以下、オペコードの取り値とオペコードが示す意味との間の対応関係である。
0:エンドマーカとともに、セクションフレームの中間セグメントを示す
1 :テキストフレーム
2 :バイナリフレーム
3〜7:保留
8:接続オフ
9:Ping命令
A :Pong命令
B〜F:保留
【0053】
伝送するデータが大きすぎて、1つのWebSocketバイナリフレームでパッケージできないと、WebSocketプロトコルにより、伝送しようとするデータをセクション化することができる。
セクション化されないフレームについて、エンドマーカ=1 オペコード≠0
セクション化されたフレームについて:
一つ目のセクション:エンドマーカ=0,オペコード≠0
二つ〜(N−1)次目のセクション:エンドマーカ=0,オペコード=0
N次目のセクション、即ち最後1つのセクション:エンドマーカ=1,オペコード=0
【0054】
クライアント301はサーバ302が送信したStreamInfoメッセージを含むテキストフレームを受信した後、サーバ302が送信するセグメントの受信を始める。1つのセグメントが大きすぎると、当該セグメントを複数のセクションに分割することができ、前記複数のセクションはそれぞれ複数のWebSocketバイナリフレームに置いて伝送され、具体的には、1つのWebSocketバイナリフレームにおいて1つのセクションを伝送する。
【0055】
サーバ302は1つのセグメントを1つ又は複数のバイナリフレームにより送信する。クライアント301は、受信されたバイナリフレームのエンドマーカが「0」で、オペコードが 「0」ではない場合、現在セグメントがセクションで送信された(即ち1つのセグメントが複数のバイナリフレームによって送信される)ものであり、当該バイナリフレームは当該セグメントの第1のセクションを含み、且つ後続に更に当該セグメントの他のセクションを含むバイナリフレームを受信する必要があることを確定する。クライアント301は、受信されたバイナリフレームのエンドマーカが「0」であり、オペコードが「0」であるまで、後続のバイナリフレームの受信を引く続いて、既に当該セグメントの受信を完成したと確定する。
【0056】
以上のように、クライアント301が第1の時間閾値内に高ビットレートのセグメントの受信を完成すると、クライアント301はサーバ302へ第2の指示情報を送信し、第2の指示情報はサーバ302が更に低ビットレートのセグメントを送信する必要がないことを通知するに用いられる。以下の新たなメッセージReceiveReportを定義することで、表3に示すように、当該新しく定義されたメッセージで当該第2の指示情報を送信することができる。
【0057】
【表3】
【0058】
選択的に、当該メッセージは以下の表4で挙げたキー値ペアを含むことができる。
【0059】
【表4】
【0060】
上記第1の時間閾値内に、クライアント301が高ビットレートのセグメントの受信を完成すると、クライアント301はサーバへ上記ReceiveReportメッセージを送信し、当該メッセージのReceiveStatusがTrueである。サーバ302は当該メッセージを受信した後、クライアント301へさらに低ビットレートのセグメントを送信しない。
【0061】
上記第1の時間閾値内に、クライアント301が高ビットレートのセグメントの受信を完成しないと、クライアント301はサーバ302へ上記ReceiveReportメッセージを送信し、当該メッセージのReceiveStatusがFalseである。サーバ302は高ビットレートのセグメントを送信することを終止し、低ビットレートのセグメントの送信を始める。
【0062】
以上、具体的にクライアント301が、サーバ302が優先的に高ビットレートのセグメントを送信することを確定する場合の処理方案を記述した。以下、クライアント301はサーバ302が優先的に低ビットレートのセグメントを送信することを確定する場合の処理方案を説明する。
【0063】
サーバ302が優先的に低ビットレートのセグメントを送信すると判断すると、クライアント301は低ビットレートのセグメントを受信し始めた後、引き続いて高ビットレートのセグメントを受信する。
【0064】
選択的に、クライアント301は、複数の高ビットレートのセグメントがあるかどうかを判断する。複数の高ビットレートのセグメントが存在すると、クライアント301はサーバ302との間のネットワーク帯域幅により、存在する複数の高ビットレートのセグメントから1つの高ビットレートのセグメントを選択して受信を始める。
【0065】
クライアント301は高ビットレートのセグメントを受信し始めった後、当該高ビットレートのセグメントを受信し始めてから第2の時間閾値内に当該高ビットレートのセグメントの受信を完成したかどうかを判断する。クライアント301が当該高ビットレートのセグメントを受信し始めてから第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと判断すると、クライアント301は受信を完成した低ビットレートのセグメントを復号化する。
【0066】
選択的に、クライアント301はサーバ302が優先的に低ビットレートのセグメントを送信すると判断してから計時を始めてもよい。
【0067】
選択的に、以上のように、クライアント301はサーバ302のメディアの送信を要求した後且つサーバ302がクライアント301へ各セグメントを送信する前に、サーバ302が優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断すると、クライアント301は更にサーバ302のメディアの送信を要求した後計時を始めてもよい。
【0068】
当該選択可能な方案において、クライアント301はまず低ビットレートのセグメントを受信した後、受信された低ビットレートのセグメントをまだ復号化しなく、高ビットレートのセグメントの受信を待つ。クライアント301がサーバ302のメディアの送信を要求した後の第2の時間閾値内に、当該高ビットレートのセグメントに対する受信を完成すると、当該高ビットレートのセグメントを復号化し、先に受信された低ビットレートのセグメントをあきらめる。サーバ302のメディアの送信を要求した後の第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと、受信を完成した低ビットレートのセグメントを復号化し、これによりセグメント受信の信頼性を保証する。
【0069】
上記第1の時間閾値、第2の時間閾値は、以下の形態を含む多種の形態で確定することができる。
形態1、所定の時間長さであり、例えば、クライアント301とサーバ302との間のネットワークトポロジーにより予め配置する。
形態2、クライアント301はMPDにおけるセグメントのURLに含まれたセグメントバイト数とセグメントの属する表現のbandwidthプロパティの値とを除算して、当該セグメントの伝送に必要な時間長さを算出し、算出された当該時間長さにより第1の時間閾値及び第2の時間閾値を確定する。
形態3、セグメントの再生時間長さにより確定する。例えば、当該第1の時間閾値及び/又は第2の時間閾値をセグメントの再生時間長さ、即ちセグメントの属する表現のdurationプロパティの値に設定するか、又は当該値の半分等に設定する。
形態4、リアルタイムに取得したクライアント301とサーバ302との間のネットワーク状況(例えば、ネットワーク輻輳状況、内容取得時間長さ、復号化時間長さ、キャッシュメディアの再生可能な時間等)によりリアルタイムに調整する。
【0070】
MPDに記述されたセグメントの属する表現のプロパティは以下の表5を参照することができる。
【0071】
【表5】
【0072】
本発明の実施例において、クライアント301は図5に示す形態によりビットレートの切り替えを行うことができる。
【0073】
クライアント301はMPDにおいて現在再生しているセグメントの属する表現(明らかに記述するために、ここで「表現1」と標記する)を見付けて、表現1におけるstartNumberプロパティの値及びセグメントに対応するSegmentURL要素の配列シリアルナンバー(Nと標記する)により、現在セグメントのシリアルナンバーとしてstartNumber+Nを算出する。次に、同一のアダプター集合に属する、同じ内容を含むとともに異なるビットレートを有する、切り替え先とする表現(「表現2」と標記する)を見付けて、且つ表現2においてシリアルナンバーがstartNumber+N+1であるセグメント(セグメントN+1と標記する)を見付ける。その後、クライアント301はサーバ302へ表現2におけるセグメントN+1を要求する。
【0074】
以上、本発明の実施例によるストリームメディア伝送システム及びビットレートきりええの方案を詳しく説明した。クライアントとサーバを互いに組み合わせる視点から、ストリームメディアデータ伝送の方案を説明したが、クライアントとサーバを相互に組み合わせなければならないという意味ではなく、実際に、クライアントとサーバとをそれぞれ独立に実施する場合においても、クライアント側及びサーバ側に存在する問題をそれぞれ解決しており、ただ、2つのものを組み合わせて使用する場合、より良い技術効果を取得することができる。
【0075】
以下、それぞれ本発明の実施例によるクライアント、サーバ及び二つのストリームメディアデータ伝送方法を説明し、その技術問題を解決する原理は、本発明の実施例によるストリームメディアデータ伝送システムと類似するので、その実施は当該システムの実施を参照することができ、繰り返し部分を再び説明しない。
【0076】
以下、本発明の実施例1によるクライアント301のストリームメディアデータ伝送の処理例を図6を参照して説明する。
【0077】
ステップS600では、クライアント301がサーバ302にメディアの送信を要求する。
【0078】
ステップS601では、クライアント301はサーバ302が送信したStreamInfoメッセージを受信する。
【0079】
ステップS602では、クライアント301はStreamInfoメッセージにおける指示情報multipleRepresentationにより、サーバ302が複数の同じ内容であり異なるビットレートである複数のセグメントを送信するかどうかを判断する。multipleRepresentationの取り値がfalseであると、クライアント301はサーバ302が1つのビットレートのセグメントのみを送信することを確定し、次にステップS609を実行する。multipleRepresentationの取り値がtrueであると、クライアント301はサーバ302が同じ内容であり異なるビットレートである複数のセグメントを送信することを確定し、次にステップS603を実行する。
【0080】
ステップS603では、クライアント301はStreamInfoメッセージにおける指示情報bitratePriorityにより、サーバ302が高ビットレートのセグメントを優先的に送信するかどうかを判断する。bitratePriorityの取り値がtrueであると、クライアント301はサーバ302が優先的に高ビットレートのセグメントを送信することを確定し、次にステップS611を実行する。bitratePriorityの取り値がfalseであると、クライアント301はサーバ302が優先的に低ビットレートのセグメントを送信することを確定し、次にステップS604を実行する。
【0081】
ステップS604では、クライアント301は低ビットレートのセグメントの受信を始める。
【0082】
ステップS605では、クライアント301は高ビットレートのセグメントの受信を始める。
【0083】
ステップS606では、クライアント301はサーバ302にメディアの送信を要求してから第2の時間閾値内に高ビットレートのセグメントに対する受信を完成したかどうかを判断する。そうであると、ステップS615を実行する。そうではないと、ステップS607を実行する。
【0084】
ステップS607では、受信が完成された低ビットレートのセグメントを復号化する。
【0085】
ステップS608では、セグメントを再生する。
【0086】
クライアント301がステップS602においてStreamInfoメッセージにおける指示情報multipleRepresentationにより、サーバ302が1つのビットレートのセグメントのみを送信することを確定した場合には、ステップS609では、クライアント301はサーバ302が送信したメディアセグメントを受信する。
【0087】
そして、ステップS610において、受信が完成されたセグメントを復号化し、次にステップS608を実行する。
【0088】
クライアント301がステップS603においてStreamInfoメッセージにおける指示情報bitratePriorityにより、サーバ302が優先的に高ビットレートのセグメントを送信すると判断した場合に、ステップS611では、クライアント301は高ビットレートのセグメントの受信を始める。
【0089】
そして、ステップS612では、クライアント301はサーバ302にメディアの送信を要求してから第1の時間閾値内に高ビットレートのセグメントに対する受信を完成したかどうかを判断する。そうであると、ステップS615を実行する。そうではないとステップS613を実行する。
【0090】
ステップS613では、クライアント301は高ビットレートのセグメントの受信をあきらめる。
【0091】
ステップS614では、クライアント301は低ビットレートのセグメントの受信を始め、次にステップS607を実行する。
【0092】
ステップS615では、クライアント301は受信が完成された高ビットレートのセグメントを復号化する。
【0093】
図7Aは本発明の実施例によるクライアントの一つの構造模式図である。図7Aに示すように、当該クライアントは、第1の処理モジュール701及び第2の処理モジュール702を備える。
【0094】
第1の処理モジュール701はサーバが同じ内容であり異なるビットレートである複数のセグメントを送信するかどうかを判断する。
【0095】
第2の処理モジュール702は、第1の処理モジュール701によりサーバが同じ内容であり異なるビットレートである複数のセグメントを送信すると判断した場合に、サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断する。
【0096】
選択的に、図7Bに示すように、当該クライアントは、第2の処理モジュール702によりサーバが優先的に高ビットレートのセグメントを送信すると判断した場合、高ビットレートのセグメントの受信を始める第1の送受信モジュール703を更に備えてよい。
【0097】
選択的に、図7Bに示すクライアントに対して、第2の処理モジュール702は更に第1の送受信モジュール703が高ビットレートのセグメントを受信の始めてから、第1の送受信モジュール703が当該高ビットレートのセグメントの受信を始めてから第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成したかどうかを判断することに用いられる。
【0098】
第1の送受信モジュール703は第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと、前記第2の処理モジュール702は第1の送受信モジュール703を制御して当該高ビットレートのセグメントの受信をあきらめ、且つ低ビットレートのセグメントの受信を始める。
【0099】
更に、第2の処理モジュール702は更に、第1の送受信モジュール703が第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成すると、サーバへ低ビットレートのセグメントを送信する必要がないことを通知するための第2の指示情報を送信するように、第1の送受信モジュール703を制御することに用いられる。
【0100】
選択的に、図7Cに示すように、当該クライアントは更に、第2の処理モジュール702が、サーバは優先的に低ビットレートのセグメントを送信すると判断した場合、低ビットレートのセグメントの受信を始め、且つ低ビットレートのセグメントを受信した後、引き続いて高ビットレートのセグメントの受信を始めるための第2の送受信モジュール704を備えてよい。
【0101】
選択的に、第2の送受信モジュール704は当該低ビットレートのセグメントを受信した後、受信された当該低ビットレートのセグメントを直接に復号化することではなく、第2の処理モジュール702の制御により、受信された当該低ビットレートのセグメントを復号化するかどうかを確定する。
【0102】
選択的に、図7Cに示すクライアントに対して、第2の処理モジュール702はさらに、第2の送受信モジュール704が当該高ビットレートのセグメントの受信を始めた後、第2の送受信モジュール704が当該高ビットレートのセグメントの受信を始めてから第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成したかどうかを判断することに用いられる。
【0103】
第2の送受信モジュール704が第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと、第2の処理モジュール702は、受信が完成された低ビットレートのセグメントを復号化するように、第2の送受信モジュール704を制御する。
【0104】
更に、第2の処理モジュール702は更に、第2の送受信モジュール704が第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと、当該高ビットレートのセグメントに対する受信をあきらめるように、第2の送受信モジュール704を制御することに用いられる。
【0105】
選択的に、本発明の実施例によるクライアントは更に図7Dに示す構造を有することができ、第1の処理モジュール701、第2の処理モジュール702、第1の送受信モジュール703及び第2の送受信モジュール704を備え、第1の処理モジュール701と第2の処理モジュール702の処理は上記図7A図7Cに示すクライアントにおける同じモジュールの処理を参照できる。第1の送受信モジュール703と第2の処理モジュール702との間のインタラクションは、上記図7Bに示すクライアントにおける処理を参照でき、第2の送受信モジュール704と第2の処理モジュール702との間のインタラクションは、上記図7Cに示すクライアントにおける処理を参照でき、ここで繰り返して説明しない。
【0106】
選択的に、図7A図7Dのいずれかに示すクライアントに対して、第2の処理モジュール702は具体的に、サーバにより送信されるサーバが高ビットレートのセグメントを優先的に送信するかどうかを指示するための第1の指示情報に基づいて、サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断することに用いられる。
【0107】
選択的に、当該第1の指示情報はStreamInfoメッセージにある。
【0108】
図8は、本発明の実施例によるサーバの構造模式図である。図8に示すように、当該サーバは処理モジュール801及び送受信モジュール802を備える。
【0109】
処理モジュール801は、クライアントへ同じ内容であり異なるビットレートである複数のセグメントを送信する場合優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを確定する。
【0110】
送受信モジュール802は、高ビットレートのセグメントを優先的に送信するかどうかを指示するための第1の指示情報をクライアントに送信する。
【0111】
選択的に、送受信モジュール802は更に、第1の指示情報をクライアントに送信した後、クライアントから送信された、クライアントへ低ビットレートのセグメントを送信する必要がないことをサーバに指示するための第2の指示情報を受信し、且つ第2の指示情報にもとづいて、クライアントへ低ビットレートのセグメントを送信することを停止することに用いられる。
【0112】
図9は、本発明の実施例によるストリームメディアデータ伝送方法のフローチャートである。図9に示す前記ストリームメディアデータ伝送方法はクライアントに適用されることができる。
【0113】
ステップS901では、サーバが同じ内容であり異なるビットレートである複数のセグメントを送信するかどうかを判断する。
【0114】
ステップS902では、前記サーバが同じ内容であり異なるビットレートである複数のセグメントを送信すると、サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断する。
【0115】
選択的に、ステップS902でサーバが優先的に高ビットレートのセグメントを送信すると判断すれば、高ビットレートのセグメントの受信を始める。
【0116】
選択的に、高ビットレートのセグメントの受信を始めた後、前記ストリームメディアデータ伝送方法は更に、当該高ビットレートのセグメントの受信を始めてから第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成したかどうかを判断するステップと、第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと判断すると、当該高ビットレートのセグメントの受信をあきらめ、且つ低ビットレートのセグメントの受信を始めるステップと、を含む。
【0117】
選択的に、前記ストリームメディアデータ伝送方法は更に、第1の時間閾値内に当該高ビットレートのセグメントに対する受信を完成したと判断すると、サーバへ低ビットレートのセグメントを送信する必要がないことを通知する第2の指示情報を送信するステップを含む。
【0118】
選択的に、ステップS902において、サーバが優先的に低ビットレートのセグメントを送信すると判断すると、低ビットレートのセグメントを受信した後、引き続いて高ビットレートのセグメントの受信を始める。
【0119】
選択的に、当該低ビットレートのセグメントを受信した後、前記ストリームメディアデータ伝送方法はさらに、受信された当該低ビットレートのセグメントを直接に復号化せず、高ビットレートのセグメントの受信状況によって受信された当該低ビットレートのセグメントを復号化するかどうかを判断するステップを含む。
【0120】
選択的に、当該高ビットレートのセグメントの受信を始めた後、前記ストリームメディアデータ伝送方法は更に、当該高ビットレートのセグメントの受信を始めてから第2の時間閾値内に、当該高ビットレートのセグメントに対する受信を完成したかどうかを判断するステップと、第2の時間閾値内に当該高ビットレートのセグメントに対する受信を完成していないと、受信が完成された低ビットレートのセグメントを復号化するステップとを含む。
【0121】
選択的に、前記ストリームメディアデータ伝送方法は更に、第2の時間閾値内に当該高ビットレートのセグメントに対する受信が完成されていないと、当該高ビットレートのセグメントに対する受信をあきらめるステップを含む。
【0122】
選択的に、ステップS902でサーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断することは、具体的に、サーバにより送信されたサーバが高ビットレートのセグメントを優先的に送信するかどうかを指示するための第1の指示情報を受信するステップと、受信された第1の指示情報により、サーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断するステップと、を含むことができる。
【0123】
選択的に、第1の指示情報は、StreamInfoメッセージにある。
【0124】
図10は、本発明の実施例による他のストリームメディアデータ伝送方法のフローチャートである。図10に示すストリームメディアデータ伝送方法はサーバに適用されることができる。
【0125】
ステップS1001では、クライアントへ同じ内容であり異なるビットレートである複数のセグメントを送信する場合、優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを確定する。
【0126】
ステップS1002では、高ビットレートのセグメントを優先的に送信するかどうかを指示するための第1の指示情報をクライアントに送信する。
【0127】
選択的に、ステップS1002において第1の指示情報をクライアントに送信した後、前記ストリームメディアデータ伝送方法は、クライアントより送信されたサーバがクライアントへ低ビットレートのセグメントを送信する必要がないことを指示するための第2の指示情報を受信し、第2の指示情報に基づいてクライアントへの低ビットレートのセグメントの送信を停止するステップを更に含む。
【0128】
以上のように、本発明の実施例はストリームメディアデータ伝送装置、方法及びシステムを提供する。クライアントはサーバが同じ内容であり異なるビットレートである複数のセグメントを送信する場合優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断することができ、サーバが優先的に高ビットレートのセグメントを送信すると判断する際、サーバがより高いビットレートのセグメントを送信することを待つ必要がなくて、受信されたセグメントを直接に復号化し、クライアント復号化の遅延を短縮する。
【0129】
更に、クライアントはサーバが送信した各ビットレートのセグメントに基づいてサーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断するか、又はクライアントはサーバが送信した第1の指示情報によりサーバが優先的に高ビットレートのセグメントを送信するか、優先的に低ビットレートのセグメントを送信するかを判断し、二つのクライアント判断の具体的な形態を提供した。
【0130】
なお、クライアントは所定の時間閾値内に高ビットレートのセグメントに対する受信を完成することができると、サーバに低ビットレートのセグメントの送信を停止することを指示し、サーバがセグメントを送信する効率を向上させ、ネットワークの伝送リソースを節約する。
【0131】
一方、クライアントは所定の時間閾値内に高ビットレートのセグメントに対する受信を完成できないと、低ビットレートのセグメントを受信して復号化することによって、ストリームメディアデータ伝送の信頼性及びメディア再生のコヒーレンスを保証し、ユーザ体験を向上させる。
【0132】
当業者にとって、本発明の実施例を方法、システム、又はコンピュータプログラム製品として提供できることを理解すべきである。このため、本発明は全体ハードウェア実施例、全体ソフトウェア実施例、又はソフトウェア及びハードウェア様態の実施例を組み合わせる形式を採用できる。且つ、本発明は1つ又は複数のコンピュータ使用可能プログラムコードが含まれたコンピュータ使用可能な記憶媒体(ディスク、メモリ、CD−ROM、光記憶装置等を含むがこれらに限定されない)で実施するコンピュータプログラム製品の形式を採用できる。
【0133】
本発明は、本発明の実施例による方法、設備(システム)、及びコンピュータプログラム製品のフローチャート及び/又はブロック図を参照して記述した。コンピュータプログラム指令でフローチャート及び/又はブロック図における各工程及び/又はブロック、及びフローチャート及び/又はブロック図における工程及び/又はブロックとの組み合わせを実現することを理解すべきである。コンピュータ又はその他のプログラム可能なデータ処理設備のプロセッサにより実行された指令で、フローチャートの1つの工程又は複数の工程及び/又はブロック図の1つのブロック又は複数のブロックに指定された機能を実現するための装置を発生させるように、これらのコンピュータプログラム指令を共用コンピュータ、専用コンピュータ、組み込みプロセッサ又はその他のプログラム可能なデータ処理設備のプロセッサに提供することにより1つの机器を生成する。
【0134】
これらのコンピュータプログラム指令はコンピュータ又はその他のプログラム可能なデータ処理設備は特定形態で作動するコンピュータ読み取り可能な記憶装置に記憶されてもよく、これにより当該コンピュータ読み取り可能な記憶装置に記憶された指令は指令装置を含む製造品を生成し、当該指令装置はフローチャートの1つの工程又は複数の工程及び/又はブロック図1つのブロック又は複数のブロックに指定された機能を実現する。
【0135】
これらのコンピュータプログラム指令もコンピュータ又はその他のプログラム可能なデータ処理設備に載せられてもよく、これによりコンピュータ又はその他のプログラム可能な設備では一連の操作ステップを実行してコンピュータの実現可能な処理を生成することにより、コンピュータ又はその他のプログラム可能な設備で実行された指令はフローチャートの1つの工程又は複数の工程及び/又はブロック図の1つのブロック又は複数のブロックに指定された機能を実現するためのステップを提供する。
【0136】
本発明の好ましい実施例を説明したが、当業者は一旦に基本的な創造的概念を了解すると、これらの実施例に他の変更及び修正を行うことができる。このため、付属する請求の範囲は好ましい実施例を含むとともに本発明の範囲に落ちるすべての変更及び修正と解釈すべきである。
【0137】
明らかに、当業者は本発明に各種の修正及び変形を行うが本発明の精神及び範囲を逸脱しないことができる。このように、本発明のこれらの修正及び変形は本発明の請求の範囲及びその等同技術の範囲に属すると、本発明もこれらの修正及び変形を含むことを意図とする。
【0138】
本出願は2015年1月16日に提出した出願番号が201510024568.1で発明名称が「ストリームメディアデータ伝送装置、方法及びシステム」の中国の優先出願の優先権を要求し、引用によりそのすべての内容をここに併合する。
【符号の説明】
【0139】
301 クライアント
302 サーバ
701 第1の処理モジュール
702 第2の処理モジュール
703 第1の送受信モジュール
704 第2の送受信モジュール
801 処理モジュール
802 送受信モジュール
図1
図2
図3
図4
図5
図6
図7A
図7B
図7C
図7D
図8
図9
図10