ストリーミング

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