この項目では、インターネットにおけるメディアの配信形態について説明しています。その他の用法については「ストリーム」をご覧ください。
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}
この記事には複数の問題があります。改善
やノートページでの議論にご協力ください。ストリーミング(英語: streaming)とは、主に音声や動画などのマルチメディアファイルを転送・再生するダウンロード方式の一種である。
通常、ファイルはダウンロード完了後に開く動作が行われるが、動画のようなサイズの大きいファイルを再生する際にはダウンロードに非常に時間がかかってしまい、特にライブ配信では大きな支障が出る。そこで、ファイルをダウンロードしながら、同時に再生をすることにより、ユーザーの待ち時間が大幅に短縮される。この方式を大まかに「ストリーミング」と称することが多い。 類似した転送方式にプログレッシブダウンロードがある。ファイルをダウンロードしながら再生するという点ではストリーミングと同じだが、HTTPによる転送が可能であるため、別途ベンダロックインのストリーミングサーバを購入する必要がない、リバースプロキシやコンテンツデリバリネットワークとの相性が良いなど、安価に大規模配信できるという大きな利点がある。一方でストリーミングと異なり、再生後、ハードディスクの一時ファイル
プログレッシブダウンロード
ストリーミング専用プロトコル
ブラウザ標準対応のプロトコル
HTTP Live Streaming(英語版)(HLS)
AppleによるHTTPベースのストリーミング・プロトコル。IETF標準化を目指して仕様が公開されており、多くのサーバやクライアントが対応している。また、いくらかのウェブブラウザ(Safari、Chromeなど)でも直接再生することができる。Flash Playerも再生に対応している。また、hls.jsなどのスクリプトを使うことで、HTML5のMedia Source Extensions(英語版) APIに対応しているブラウザでも再生することができる。
MPEG-DASH(Dynamic Adaptive Streaming over HTTP(英語版))
MPEGによって開発されたHTTPベースのストリーミング技術。VLCとGPACが再生に対応しているほか、dash.jsを使うことによってHTML5のMedia Source Extensions APIに対応しているブラウザでも再生することができ、dash.asを使うことによってFlash Playerでも再生することができる。MP4BoxやFFmpegがMPEG-DASH互換MP4フラグメントの生成に対応している。
ブラウザ再生にプラグインが必要となるプロトコル
RTSP(Real Time Streaming Protocol)
IETFで標準化されており、RealMedia / QuickTime / Windows Media / GStreamerを含む多くのプレーヤーで再生することができる。また、Flash Playerからは、Locomote Video Playerなどのプレイヤーを通して再生することができる。ただし、多くのブラウザは直接対応しておらず、プラグインや外部プレイヤーを使う必要がある。多くのストリーミングソフトウェアで、この送出が可能。
MMS(Microsoft Media Server(英語版))
Windows Mediaのストリーミング配信に使用される。EUの独占禁止法による問題から、楕円曲線暗号を使ったDRMを含むプロトコル仕様が公開されている。MMSを再生できるプレーヤーは多いが、互換性に問題があるものもある。また、多くのブラウザは直接対応しておらず、プラグインや外部プレイヤーを使う必要がある。いくらかのストリーミングソフトウェアで、この送出が可能。
Microsoft Smooth Streaming
マイクロソフトによるSilverlight用のストリーミングプロトコル。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プロトコルであり、.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation.cs-ja1 q,.mw-parser-output .citation.cs-ja2 q{quotes:"「""」""『""』"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:#d33}.mw-parser-output .cs1-visible-error{color:#d33}.mw-parser-output .cs1-maint{display:none;color:#3a3;margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}RFC 7016としてプロトコル仕様が公開されている。P2Pマルチキャスト配信に対応している[3]。
PeerCastプロトコル
PeerCastの使っているプロトコル。
WebRTC
P2Pマルチキャスト配信が実現可能なWeb標準のP2P APIであり、ブラウザが直接対応している。P2P配信プロトコル自体は標準化されていない。WebRTCに対応するブラウザとして、Chrome、Firefox、Operaがある。
その他、JavaアプレットによるP2Pマルチキャスト配信も使われている。 HTTPベースのプロトコルは、HTTPの代わりにHTTPSを通すことで通信経路の暗号化が可能。 ストリーミング形式では配信目的のためにコピーガードが用意されていることが多く、映像や音楽をファイルに保存することを困難にさせることができる。ただし、コピーガードは視聴者の見られる環境を狭め、視聴者の合法的な利用を妨害し、競合他社の製品も排除するという設計の欠陥を故意に作り出すため批判されており(Defective by Design)、何時でも何処でもどんなデバイスでもオンデマンドで見られることを目指すニューメディア(New media これらはレガシーであり、ハリウッドスタジオ(除ディズニー)ではUltraViolet対応のDRMを推進している。 現在はHTTPベースのストリーミングプロトコルの普及により、動画をフラグメント化してHTTPサーバで送出することが主流になりつつある。
通信経路の暗号化
RTMPS
アドビが開発した、RTMP及びSSLに基づくFlash用の暗号化ストリーミングプロトコル。リバースエンジニアリングによって仕様が解析されているため、多くのオープンソースソフトウェアがこの再生及び送出に対応している。
RTMPE
アドビが開発した、RTMP及びディフィー・ヘルマン鍵共有に基づくFlash用の暗号化ストリーミングプロトコル。リバースエンジニアリングによって仕様が解析されているため、多くのオープンソースソフトウェアがこの再生及び送出に対応している。設計に欠陥があり、中間者攻撃が可能という脆弱性が存在する[4][5]。
Clear Key
W3C標準のEncrypted Media Extensionsで規定されている暗号化方式。Google Chromeなどが復号に対応している。
HLS暗号化
AES-128を使った暗号化。
ストリーミング用DRM
UltraViolet
Google Widevine DRM
AES-128 CTRを使ったDRM。Common Encryption(CENC、ISO/IEC 23001-7)に基づく[6]。MPEG-DASHで使うことができる。ChromeやAndroidが復号に対応している。オープンソースのBento4[7][8]が暗号化に対応している。FFmpeg[9]やedash-packagerやMP4BOX[10]が暗号化及び復号の両方に対応している。2016年現在、GoogleのWidevine DRMの実装に問題が見つかっている[11]。
Microsoft PlayReady
AES-128 CTRを使ったDRM。Common Encryption(CENC、ISO/IEC 23001-7)に基づく[6]。Microsoft Smooth StreamingやMPEG-DASHで使うことができる。Internet ExplorerやWindows PhoneやSilverlightが復号に対応している。Microsoft Expression EncoderやAzure Media Services samples、オープンソースのBento4[7][8]が暗号化に対応している。FFmpeg[9]やMP4BOX[10]が暗号化及び復号の両方に対応している。
Adobe Primetime DRM
旧:Adobe Access DRM。pRTMPやPHDSで使うことができる。Adobe Flash PlayerやFirefox 38以降のWindows版32bitバイナリー[12]が復号に対応している。Adobe Media Serverが暗号化に対応している。
Marlin DRM
多くのIP-TVが復号に対応している。MPEG DASHのMP4コンテナではCommon Encryptionに基づき、MPEG DASHのMPEG2-TSコンテナではMarlin BBTSに基づく[13]。オープンソースのBento4が暗号化に対応している[7][8]。
OMA DRM v2.0
多くのフィーチャーフォンが復号に対応している。ファイル形式にはDCFとPDCFが存在する[14]。PDCFは3GPPのPSSに基づいている[14]。構文以外はISMACryp
レガシー
WMDRM
楕円曲線暗号を使ったDRM。MS-RTSPやMMSで使うことができる。Windows Media PlayerやWindows Phoneが復号に対応している。Windows Media Rights Manager(WMRM)が暗号化に対応していた。Windows 10 Anniversary Updateで、WMDRMの復号が削除され、WMDRMで暗号化されたメディアの視聴が不可能となった[16]。
Helix DRM
RealRTSPで使うことができる。Real Playerが復号に対応している。Helix Universal Server(ディスコン[17])が暗号化に対応していた。
FairPlay
QuickTime Playerが復号に対応している。2016年、Microsoft AzureがFairPlayの暗号化に対応した[18]。
主なストリーミングサーバ
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で書かれたサーバサイドスクリプトは直接動かすことができない。
nginx-rtmp-module(英語版)
NGINXを基にしたオープンソースのストリーミングサーバ。