# ストリーミング

**ストリーミング**（英語: streaming）とは、主に音声や動画などのマルチメディアファイルを転送・再生するダウンロード方式の一種である。

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

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

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

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

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

* 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プログレッシブダウンロード技術を用いている。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マルチキャスト配信に対応している。
* PeerCastプロトコル

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

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

## 通信経路の暗号化

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

* RTMPS

アドビが開発した、RTMP及びSSLに基づくFlash用の暗号化ストリーミングプロトコル。リバースエンジニアリングによって仕様が解析されているため、多くのオープンソースソフトウェアがこの再生及び送出に対応している。
* RTMPE

アドビが開発した、RTMP及びディフィー・ヘルマン鍵共有に基づくFlash用の暗号化ストリーミングプロトコル。リバースエンジニアリングによって仕様が解析されているため、多くのオープンソースソフトウェアがこの再生及び送出に対応している。設計に欠陥があり、中間者攻撃が可能という脆弱性が存在する。
* 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が暗号化及び復号の両方に対応している。
2016年現在、GoogleのWidevine DRMの実装に問題が見つかっている。
* 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）が暗号化に対応していた。
Windows 10 Anniversary Updateで、WMDRMの復号が削除され、WMDRMで暗号化されたメディアの視聴が不可能となった。
* Helix DRM

RealRTSPで使うことができる。Real Playerが復号に対応している。Helix Universal Server（ディスコン）が暗号化に対応していた。
* FairPlay

QuickTime Playerが復号に対応している。2016年、Microsoft AzureがFairPlayの暗号化に対応した。
## 主なストリーミングサーバ

現在は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で書かれたサーバサイドスクリプトは直接動かすことができない。
* nginx-rtmp-module

NGINXを基にしたオープンソースのストリーミングサーバ。RTMPだけでなくHLSやMPEG-DASHによるライブストリーミングにも対応している。
* SHOUTcast

Winampの開発・配布先と知られているNullsoftが無償で提供していたが、インターネットラジオのRadionomyに買収された。
プラットフォームはWindows 95/98/Me/NT/2000/XP/2003からFreeBSD、 Linux、macOS サーバ、そしてSolaris 2.x サーバ（Sparc版）と対応OSも幅広く、バイナリでの配布となっている。
MP3形式のデータをストリーミング送信可能である。また、プラグイン導入済みWinampとSHOUTcastサーバの組合せでライブ送信が行なえる。
* Icecast

MP3形式のストリーミングが可能なオープンソースのストリーミングサーバ。
* VLCメディアプレーヤー（VideoLAN Client）

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

* Helix Universal Server

RealServerの後継製品であり、リアルネットワークスが販売していた。ディスコン。配信可能なメディア種類がReal Media、Windows Media、Quick Timeと豊富であり、プラットフォームとするOS種類もWindows NT、Windows 2000、Linux、FreeBSD、Solaris、HP-UX等幅広い。
他社製品のコピーガードには対応していない。独自のコピーガードHelix DRMがあるものの、これを使うとReal Player以外では見ることはできないため、使われることは少ない。なお、リアルネットワークスはプレーヤ側において、DRMの相互運用性を確保するために、他社製品のコピーガードに対応しようとHarmony技術を開発したことがあるものの、アップルからの訴訟の可能性によって開発を停止している。
* Helix DNA Server

リアルネットワークスが開発したHelix Universal Serverのオープンソース版。独自のライセンスを適用していた。最終バージョンは2006年リリースの11.1。
* VLS（VideoLAN Server）

VideoLANプロジェクトで開発されていたオープンソースのストリーミングサーバ。現在、VLSのほとんどの機能はVLCにも実装されており、VLSは開発が終了している。
* Darwin Streaming Server

オープンソースのストリーミングサーバー。
* QuickTime Streaming Server

OS X Serverに搭載されていたストリーミングサーバ。
* rtmplite

Pythonで書かれたオープンソースのFlash Player向けストリーミングサーバ。ライセンスはGPLv3。
* C++ RTMP Server

C++で書かれたオープンソースのFlash Player向けストリーミングサーバ。ライセンスはGPLv3。
* PeerCast

P2P技術を使ったオープンソースのストリーミングシステム。送信機能は無く、中継機能のみ持っている。RTSPやMMSの中継に対応している。
* FFserver

FFmpegに含まれていたオープンソースのストリーミングサーバ。HTTPとRTSPに対応していた。廃棄された。
* IIS Media Services

マイクロソフトが提供しているWindows向けのストリーミングサーバであり、Windows Media サービスの後継製品。コンテンツ開発用エンコーダ等も無償で配布されている。コピーガードが有効な動画は、Microsoft製品以外での視聴ができないため、Windows以外のPCやモバイルデバイス等への配信が難しい。
更新されておらず、Windows Server 2016以降へのインストールには回避策が必要となる。
## 主なフラグメント化ソフトウェア

* 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の暗号化・復号に対応している。オープンソース。
* TITAN File

ATEMEの動画変換ソフトウェア。MPEG-DASH、Smooth Streaming、HLS互換フラグメントの生成に対応している。
### クラウドベース

* Amazon Elastic Transcoder

MPEG-DASH、Smooth Streaming、HLSに対応している。
* Azure Media Services

MPEG-DASH、Smooth Streaming、HLSに対応している。
* Akamai Media Services Live/On Demand

MPEG-DASH、Smooth Streaming、HLS、HDSに対応している。
* Arkena Cloud4TV

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

Flowplayer
HTML5及びFlashベースのWebプレーヤー。オープンソース。
MediaElement.js
HTML5及びFlashベースのWebプレーヤー。オープンソース。
Video.js
HTML5及びFlashベースのWebプレーヤー。オープンソース。
Shaka Player
GoogleによるHTML5ベースの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にも対応している。
## ライブストリーミング

→「ライブ動画配信サービス」も参照
ライブストリーミング（Live streaming）はライブメディアをストリーミングすることである。より限定的には、その場で記録された（ライブ）メディアをコンピュータネットワークを介してリアルタイムにストリーミング配信すること（**生配信**）を指す。生配信されるメディアの例として以下が挙げられる。

* ライブカメラ映像（天気・景勝地・被災地・天体観測（彗星））
* 音楽ライブ映像
* 既存メディア（ラジオ、テレビ）

ライブストリーミングはインターネットを介した生配信であるため、**生放送**（Live broadcast）の一種とも捉えられる。公共の電波を利用するテレビメディアの様な複雑な放送認可手続き・審査・取得を必要としない。ゆえにネットにて擬似的なラジオ放送、およびTV放送を開局可能であり、個人や小規模な各種法人団体、既存のラジオ放送局（放送局スタジオ内のライブカメラ映像とセットで流してTV放送化）も積極的にライブストリーミングへ参入している。前述の通り、（放送コンテンツの著作権関係さえクリアしていれば）規制の殆ど存在しないメディア形態である為、機材さえ用意すれば刑務所の中までネットワーク中継をすることも可能である。

短所としては、下記が挙げられる。

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

### 配信プラットフォーム

様々なライブストリーミングプラットフォームが存在する。

* ライブビデオストリーミングプラットフォーム（Stickam JAPAN!、Twitch、Pocochaなど）
	+ ライブTVプラットフォーム（YouTube TV、ABEMA、NHK+など）
	+ 360度ビデオライブストリーミングプラットフォーム（YouTubeなど）
	+ 双方向ライブビデオストリーミングプラットフォーム（Zoomなど）
	+ アバターライブストリーミング（REALITY、IRIAMなど）
* ライブオーディオストリーミングプラットフォーム（radiko、FC2ねとらじ、SPOON、Clubhouse）

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

Adobe Flash Media Live Encoder
Open Broadcaster Software（OBS）
オープンソース。
Wirecast（Telestream）
## 音楽ストリーミング

→詳細は「音楽配信 § 定額制音楽配信」を参照
音楽ストリーミングサービスは、主に音楽を中心としたメディアストリーミングサービスである。一部のサービスではポッドキャストなどのデジタル音声コンテンツも提供している。これらのサービスは通常、サブスクリプション方式の有料サービスとして運営されており、消費者はインターネットを通じて、サービスが提供する大規模な音楽ライブラリから、著作権で保護された楽曲をオンデマンドで聴くことができる。一部の企業は、広告付きの無料プランを提供している。

音楽ストリーミングはSpotify、Apple Musicなどの登場により2010年代に急速な成長を遂げた。2015年には米国の音楽業界において、デジタルダウンロードを上回り最大の収益源となり、2016年以降は業界収益の過半数を占めるようになった。

この成長に伴い、ストリーミングサービスでの再生回数が主要な音楽チャートの集計方法に組み込まれるようになった。また、デジタル音楽とストリーミングを考慮した新しい指標として「アルバム相当単位」という概念も生まれた。

音楽ストリーミングサービスの普及は音楽産業全体に大きな変革をもたらし、消費者の音楽との関わり方に変化が生じた。従来の「音楽を購入して所有する」という形から、「音楽に接触する」という形へと移行しつつある。

消費者にとっては、利便性の高さ、幅広い音楽へのアクセス、比較的安価な料金などが利点として挙げられる。その一方で、一部のアーティストからは、従来の物理メディア（CDなど）と比べて得られる収入が少ないという批判がある。

* アプリケーションストリーミング
* ストリーミング・サービスの一覧
* インターネットラジオ
* インターネットテレビ
* ビデオ・オン・デマンド（VOD） - 映像もしくは音声付き映像に限定したライブストリーミングの反語的位置付けを持つメディア。
* P2Pテレビ
* コンテナフォーマット - 音声ファイルフォーマット
* 動画
* ワンタイムURL
* セットトップボックス