ストリーミング (Streaming)

Related Post

> ストリーミング (Streaming)

ストリーミング (streaming) とは、主に音声や動画などのマルチメディアファイルを転送・再生するダウンロード方式の一種である。
通常、ファイルはダウンロード完了後に開く動作が行われるが、動画のようなサイズの大きいファイルを再生する際にはダウンロードに非常に時間がかかってしまい、特にライブ配信では大きな支障が出る。そこで、ファイルをダウンロードしながら、同時に再生をすることにより、ユーザーの待ち時間が大幅に短縮される。この方式を大まかに「ストリーミング」と称することが多い。

【プログレッシブダウンロード】

類似した転送方式にプログレッシブダウンロードがある。ファイルをダウンロードしながら再生するという点ではストリーミングと同じだが、HTTPによる転送が可能であるため、別途ベンダロックインのストリーミングサーバを購入する必要がない、リバースプロキシやコンテンツデリバリネットワークとの相性が良いなど、安価に大規模配信できるという大きな利点がある。一方でストリーミングと異なり、再生後、ハードディスクの一時フォルダにマルチメディアファイルがアクセス可能な状態で残ってしまうため、著作権保護の観点からサービス提供者に忌避された時期があった。プログレッシブダウンロードが可能な代表的なファイル形式として、Flash動画などが挙げられる。YouTubeやニコニコ動画などの投稿型動画配信サイトを始め、無料コンテンツ配信でも一般的に利用されている。最近は、プログレッシブダウンロードに帯域制御などを追加したストリーミング技術も出てきており(Microsoft Smooth Streaming、Adobe Dynamic Streaming、HTTP Live Streaming、MPEG-DASHなど)、Gyao!やYahoo!などが採用している。

【ストリーミング専用プロトコル】

ブラウザ標準対応のプロトコル

  • HTTP Live Streaming (HLS)
    アップルによるHTTPベースのストリーミング・プロトコル。IETF標準化を目指して仕様が公開されており、多くのサーバーやクライアントが対応している。また、いくらかのブラウザ(Safari、Androidなど)でも直接再生することができる。Flash Playerも再生に対応している。
  • MPEG-DASH (Dynamic Adaptive Streaming over HTTP)
    MPEGによって開発されたHTTPベースのストリーミング技術。VLCとGPACが再生に対応しているほか、dash.jsを使うことによってHTML5のMedia Source APIに対応しているブラウザでも再生することができ、dash.asを使うことによってFlash Playerでも再生することができる。
    MP4BoxやFFmpegがMPEG-DASH互換MP4フラグメントの生成に対応している。
  • HTML5 Media Source Extensions
    HTML5のメディア要素(video要素及びaudio要素)を拡張し、ストリーミングに対応させるための仕様案。Google、Microsoft及びNetflixが標準化を進めており、Chrome 23以降(Android版はAndroid 4.2以降)、IE11以降及びSafari 8以降がこの再生に対応している。

ブラウザ再生にプラグインが必要となるプロトコル

  • RTSP (Real Time Streaming Protocol)
    IETFで標準化されており、RealMedia / QuickTime / Windows Media / GStreamer を含む多くのプレーヤーで再生することができる。また、Flash Playerからは、Locomote Video Playerなどのプレイヤーを通して再生することができる。ただし、多くのブラウザは直接対応しておらず、プラグインや外部プレイヤーを使う必要がある。多くのストリーミングソフトウェアで、この送出が可能。
  • MMS (Microsoft Streaming Server)
    Windows Mediaのストリーミング配信に使用される。EUの独占禁止法による問題から、楕円曲線暗号を使ったDRMを含むプロトコル仕様が公開されている。MMSを再生できるプレーヤーは多いが、互換性に問題があるものもある。また、多くのブラウザは直接対応しておらず、プラグインや外部プレイヤーを使う必要がある。
    いくらかのストリーミングソフトウェアで、この送出が可能。

 

  • Microsoft Smooth Streaming
    MicrosoftによるSiverlight用のストリーミング・プロトコル。HTTPプログレッシブダウンロード技術を用いている[2]。VLC 2.1以降がこの再生に対応している。Flash Playerからは、Smooth Streaming Plugin for OSMFを使うことで再生することができる。多くのブラウザは直接対応しておらず、プラグインや外部プレイヤーを使う必要がある。FFmpegがスムースストリーミングに使われるISMVフラグメントの生成に対応している。
  • RTMP (Real Time Messaging Protocol)
    アドビシステムズによるFlash Video用のストリーミング・プロトコル。リバースエンジニアリングによって仕様が解析されているため、多くのオープンソースソフトウェアがこの再生及び送出に対応している。ただし、多くのブラウザは直接再生することができず、プラグインを使う必要がある。このことは、プラグインに対応していないモバイル端末で特に問題となる。
  • Adobe HTTP Dynamic Streaming (HDS)
    アドビシステムズによるHTTPベースのFlash Video用ストリーミング・プロトコル。ファイルを分割しフラグメント毎にダウンロードするという手法を使っている。多くのブラウザは直接対応しておらず、プラグインを使う必要がある。FFmpegがHDSフラグメントの生成に対応している。

P2Pマルチキャスト配信プロトコル

  • Real Time Media Flow Protocol
    アドビシステムズが開発したFlash用P2Pプロトコルであり、RFC 7016としてプロトコル仕様が公開されている。P2Pマルチキャスト配信に対応している[3]
    PeerCastプロトコル

PeerCastの使っているプロトコル。

  • WebRTC
    P2Pマルチキャスト配信が実現可能なWeb標準のP2P APIであり、ブラウザが直接対応している。P2P配信プロトコル自体は標準化されていない。WebRTCに対応するブラウザとして、Chrome、Firefox、Operaがある。
    その他、JavaアプレットによるP2Pマルチキャスト配信も使われている。

【通信経路の暗号化】

HTTPベースのプロトコルは、HTTPの代わりにHTTPSを通すことで通信経路の暗号化が可能。

  • RTMPS
    アドビシステムズが開発した、RTMP及びSSLに基づくFlash用の暗号化ストリーミング・プロトコル。リバースエンジニアリングによって仕様が解析されているため、多くのオープンソースソフトウェアがこの再生及び送出に対応している。
  • RTMPE
    アドビシステムズが開発した、RTMP及びディフィー・ヘルマン鍵共有に基づくFlash用の暗号化ストリーミング・プロトコル。リバースエンジニアリングによって仕様が解析されているため、多くのオープンソースソフトウェアがこの再生及び送出に対応している。設計に欠陥があり、中間者攻撃が可能という脆弱性が存在する[4][5]
  • Clear Key
    W3C標準のEncrypted Media Extensionsで規定されている暗号化方式。Google Chromeなどが復号化に対応している。
  • HLS暗号化
    AES-128を使った暗号化。

【ストリーミング用DRM】

ストリーミング形式では配信目的のためにコピーガードが用意されていることが多く、映像や音楽をファイルに保存することを困難にさせることができる。ただし、コピーガードは視聴者の見られる環境を狭め、視聴者の合法的な利用を妨害し、競合他社の製品も排除するという設計の欠陥を故意に作り出すため批判されており (Defective by Design)、何時でも何処でもどんなデバイスでもオンデマンドで見られることを目指すニューメディア (New media) には使われないことが多い。

UltraViolet

  • Google Widevine DRM
    AES-128 CTRを使ったDRM。Common Encryption (CENC、ISO/IEC 23001-7)に基づく。MPEG-DASHで使うことができる。ChromeやAndroidが復号化に対応している。オープンソースのBento4が暗号化に対応している。FFmpegやedash-packagerやMP4BOXが暗号化及び復号化の両方に対応している。
  • Microsoft PlayReady
    AES-128 CTRを使ったDRM。Common Encryption (CENC、ISO/IEC 23001-7)に基づく。Microsoft Smooth StreamingやMPEG-DASHで使うことができる。Internet ExplorerやWindows PhoneやSilverlightが復号化に対応している。Microsoft Expression EncoderやAzure Media Services samples、オープンソースのBento4が暗号化に対応している。FFmpegやMP4BOXが暗号化及び復号化の両方に対応している。
  • Adobe Primetime DRM
    旧Adobe Access DRM。pRTMPやPHDSで使うことができる。Adobe Flash PlayerやFirefox 38以降のWindows版32bitバイナリーが復号化に対応している。Adobe Media Serverが暗号化に対応している。
  • Marlin DRM
    多くのIP-TVが復号化に対応している。MPEG DASHのMP4コンテナではCommon Encryptionに基づき、MPEG DASHのMPEG2-TSコンテナではMarlin BBTSに基づく。オープンソースのBento4が暗号化に対応している。
  • OMA DRM v2.0
    多くのフィーチャーフォンが復号化に対応している。ファイル形式にはDCFとPDCFが存在する。PDCFは3GPPのPSSに基づいている。構文以外はISMACrypと互換性がある。

レガシー

これらはレガシーであり、ハリウッドスタジオ(除ディズニー)ではUltraViolet対応のDRMを推進している。

  • WMDRM
    楕円曲線暗号を使ったDRM。MS-RTSPやMMSで使うことができる。Windows Media PlayerやWindows Phoneが復号化に対応している。Windows Media Rights Manager (WMRM) が暗号化に対応している。
  • Helix DRM
    RealRTSPで使うことができる。Real Playerが復号化に対応している。Helix Universal Serverが暗号化に対応している。
  • FairPlay
    QuickTime Playerが復号化に対応している。

【主なストリーミングサーバ】

現在はHTTPベースのストリーミング・プロトコルの普及により、動画をフラグメント化してHTTPサーバーで送出することが主流になりつつある。

  • Adobe Media Server (旧Adobe Flash Media Server (FMS))
    アドビシステムズが提供しているWindows・Linux向けのストリーミングサーバ。コピーガードが有効な動画を、PCにおける普及率が高いマルチプラットフォームのFlash Playerに配信する唯一の手段であったため、現在のデファクトスタンダードとなっている。Flash Playerが使えないiOSへの配信にも対応しており、Protected HLSプロトコルを使うことによってブラウザから再生可能にできる。同じくFlash Playerが使えないAndroid 4.1以降への配信には、再生側にAdobe Air製のアプリをインストールさせる必要がある。なお、コピーガードを使うにはプロフェッショナル版以上を使う必要がある。バージョンによって最大同時接続数やプロセス数にライセンス的な制限があるため、大規模配信する場合にはサーバー一台に対して複数ライセンスを購入し、ライセンスをスタックする必要がある。
  • Wowza Streaming Engine (旧Wowza Media Server)
    Wowza Media Systems が開発している動画ストリーミングサーバ。RTMP を使い、Adobe Flash Player と通信できるが、クライアント・サーバー間のリモートプロシージャコールにも対応しており、その際、サーバー側は Java で記述する。バージョン4.0より、Webブラウザベースで管理出来るGUIを搭載した。
  • Red5
    Javaで書かれたオープンソースのFlash Player向けマルチプラットフォーム・ストリーミングサーバ。ライセンスはApache License 2.0 (LGPLv3から変更された)。RTMPによる動画配信、RTMPEによる暗号化動画配信だけでなく、Flashの共有オブジェクトやRemotingなどにも対応している。ただし、プログラミング言語はJavaであり、FMS向けにActionScriptで書かれたサーバーサイドスクリプトは直接動かすことができない。
  • rtmplite
    Pythonで書かれたオープンソースのFlash Player向けストリーミングサーバ。ライセンスはGPLv3。
  • C++ RTMP Server
    C++で書かれたオープンソースのFlash Player向けストリーミングサーバ。ライセンスはGPLv3。
  • nginx-rtmp-moduleNGINXを基にしたオープンソースのストリーミングサーバー。RTMPだけでなくHLSやMPEG-DASHによるライブストリーミングにも対応している。
  • IIS Media Services
    マイクロソフトが提供しているWindows向けのストリーミングサーバであり、Windows Media サービスの後継製品。コンテンツ開発用エンコーダ等も無償で配布されている。コピーガードが有効な動画は、Microsoft製品以外での視聴ができないため、Windows以外のPCやモバイルデバイス等への配信が難しい。
  • Helix Universal Server
    リアルネットワークスが販売しており、RealServerの後継製品となっている。配信可能なメディア種類がReal Media、Windows Media、Quick Timeと豊富であり、プラットフォームとするOS種類もWindows NT、Windows 2000、LinuxFreeBSDSolarisHP-UX等幅広い。他社製品のコピーガードには対応していない。独自のコピーガードHelix DRMがあるものの、これを使うとReal Player以外では見ることはできないため、使われることは少ない。なお、リアルネットワークスはプレーヤ側において、DRMの相互運用性を確保するために、他社製品のコピーガードに対応しようとHarmony技術を開発したことがあるものの、アップルからの訴訟の可能性によって開発を停止している。
  • Helix DNA Server
    リアルネットワークスが開発したHelix Universal Serverのオープンソース版。独自のライセンスを適用している。

MP3形式のデータをストリーミング送信可能である。また、プラグイン導入済みWinampとSHOUTcastサーバの組合せでライブ送信が行なえる。

MP3形式のストリーミングが可能なオープンソースのストリーミングサーバー。

  • Darwin Streaming Server
  • QuickTime Streaming Server
  • VLS (VideoLAN Server)

VideoLANプロジェクトで開発されているオープンソースのストリーミングサーバー。現在、VLSのほとんどの機能はVLCにも実装されている。

  • VLC (VideoLAN Client)
    VideoLANプロジェクトで開発されているオープンソースのマルチメディアプレーヤ。GUIインターフェースだけでなく、コマンドインターフェースやWebインターフェースも持っており、ストリーミングにも対応している。HTTP、MMSH、RTSP、Icecastなどのプロトコルでストリーミング出力が可能。
  • FFserver

FFmpegに含まれているオープンソースのストリーミングサーバー。HTTPとRTSPに対応している。

【主なフラグメント化ソフトウェア】

  • MP4Box
    MPEG-DASH互換MP4フラグメントやMPEG-DASH互換MPEG-2 TSフラグメントなどの生成に対応している。オープンソース。
  • FFmpeg
    MPEG-DASH互換MP4フラグメント、MPEG-DASH互換WebMチャンク、HDSフラグメント、Microsoft Smooth Streamingに使われるISMVフラグメントなどの生成に対応している。オープンソース。
  • edash-packager
    MPEG-DASH互換MP4フラグメントの生成に対応している。ISOのCommon Encryption及びUltraViolet英語版)の一つであるWidevine DRMの暗号化・復号化に対応している。オープンソース。

【主なWebベースのストリーミングメディアプレーヤー】

Flowplayer
HTML5及びFlashベースのWebプレーヤー。オープンソース。

MediaElement.js
HTML5及びFlashベースのWebプレーヤー。オープンソース。

Video.js
HTML5及びFlashベースのWebプレーヤー。オープンソース。

Strobe Media Playback
AdobeによるFlashベースのWebプレーヤー。OSMF (Open Source Media Framework)を基にしている。オープンソース。更新停止中。
MicrosoftはOSMFに向けて、Smooth Streamingに対応させるSmooth Streaming Plugin for OSMFをリリースしている。

Locomote Video Player
FlashベースのWebプレーヤー。オープンソース。RTSPにも対応している。

【ライブストリーミング】

ストリーミング技術を応用し、DVカメラなどを使い、コンピュータのネットワーク上に流すことでライブ配信すること(ライブストリーミング)も可能になった。これにより、景勝地・被災地・(彗星を初めとする)天体観測のライブカメラ映像・アマチュアバンドのライブ映像・既存メディア(ラジオやテレビ)、これらもネット上でリアルタイム放送する事が可能となった。従来から存在したテレビメディアの様な複雑な放送認可手続き・審査・取得も必要としない為、ネットにて擬似的なラジオ放送、およびTV放送を開局可能であり、個人や小規模な各種法人団体、既存のラジオ放送局(放送局スタジオ内のライブカメラ映像とセットで流してTV放送化)も積極的に参入している。前述の通り、(放送コンテンツの著作権関係さえクリアしていれば)規制の殆ど存在しないメディア形態である為、機材さえ用意すれば刑務所の中までネットワーク中継をすることも可能である。
短所としては、下記が挙げられる。

  • ライブストリーミングの場合、既存放送メディア同様、視聴者が放送時間を忘れて目的の番組を見逃す事がありえる。
  • ライブストリーミングと非ライブストリーミング(放送時間の制約が無いオンデマンド・コンテンツのストリーミング送信)共通の欠点として、ネットTV放送側が映像画質の仕様を策定する際に多くの視聴者獲得を優先させる(低スペックPCや低速ナローバンド通信回線接続PCでも視聴に耐える様、画質・画像サイズ・映像フレーム数を低めにする)か否か判断に悩まされる。

ライブストリーミング配信プラットフォーム
ライブストリーミング配信のためのプラットフォームが存在する。 サービスの詳細については、ライブ配信およびインターネットテレビを参照。
音声のみは、インターネットラジオ#利用者による放送配信が可能なものを参照。

ライブストリーミング送出

Adobe Flash Media Live Encoder
Open Broadcaster Software (OBS)
オープンソース。