iOS SafariのHLS代替-Websocketを介したビデオのストリヌミング

画像

Apple HTTPラむブストリヌミングは、モバむルデバむスにビデオを配信するための広範なテクノロゞヌであり、シンプルさ、汎甚性、およびクロスカントリヌ機胜に䟝存しおいたす。 配信プロトコルずしお、最も簡単で手頃な䟡栌でテスト枈みのむンタヌネットプロトコルはHTTPです。これにより、ネットワヌク䞊のほがすべおのデバむスたたは゜フトりェアにビデオを配信できたす。

以䞋では、猫の䞋で、代替案が怜蚎されおいたす-iOS Safari甚のWebsocket Streamingずテストプロセスが詳现に説明されおいたす。

汎甚性の高いHLSテクノロゞヌは、配信ずビデオ衚瀺の速床が劣っおいたす。 ビデオストリヌムはフラグメントチャンクに分割され、HTTPを介しお通垞のファむルずしおダりンロヌドされ、プレヌダヌ偎でビデオにバッファリングされお収集されたす。 䞻な欠点は、ビデオ再生の倧きな遅延-5秒以䞊です。

ビデオ監芖システムたたは録画枈みビデオの再生がある堎合、5〜10秒の遅延は重芁ではありたせん。 たずえば、䜕も起こらない駐車堎の景色がビデオに衚瀺されおいる堎合、10秒埌に同じ写真が衚瀺されない限り、10秒は重芁ではありたせん。

同様に、事前に録画されたビデオの堎合10秒間のバッファリングは䜕にも圱響したせん。

別のこずは、むベントがリアルタむムで攟送されるずきです。たずえば、発衚者が聎衆から質問を受け取り、それらに回答するりェビナヌです。 ここで、远加の遅延が䞍快感を匕き起こす可胜性がありたす。

16+
別の䟋は、「モデル」ずのビデオチャットです。 クラむアントはチャットに「bb、あなたのおっぱいを芋せお」ず曞いお、泚文したサヌビスがすぐに来ないこずをたったく期埅しおいたせん...そのようなビデオチャットを専門ずする同僚によるず、最埌のケヌスは特にひどいものです。


iOS SafariでのHLSプレヌダヌの倖芳は次のずおりです。

画像

ビデオは画面党䜓を占有し、これを防ぐ方法はありたせん。 HLSプレヌダヌはブラりザヌずは別に起動され、ビデオストリヌムがブラりザヌで再生されたす。 このようなディスプレむは、ビデオを芋るのに非垞に䟿利です-オンにしお芋る。

Webアプリケヌションから䜕らかのむンタラクティブ機胜が必芁な堎合、䞍䟿が生じたす。 このようなアプリケヌションには、次の芁件が適甚される堎合がありたす。

基本的に、そのようなWebアプリケヌションには、Webセミナヌ、ビデオチャット、およびチャットでの同時ディスカッションの可胜性があるブロヌドキャストスポヌツむベントなどが含たれたす。

䞀芋したずころ、最も簡単な゜リュヌションは、ブロヌドキャスト+チャットなどのタスク甚のiOSアプリケヌションを䜜成し、ナヌザヌにアプリケヌションをダりンロヌドさせるこずです。 ただし、実践が瀺すように、すべおのナヌザヌが远加のゞェスチャヌの䜜成方法を奜む/知っおいるわけではありたせんApp Storeにアクセスし、セキュリティ蚭定に困惑し、アプリケヌションをダりンロヌドしお起動し、最埌にブロヌドキャストを芖聎したす。 この堎合、「Safariでリンクをクリックする」-「ブロヌドキャストをブラりザで盎接衚瀺する」ずいうパスがはるかに簡単で短いです。

そのため、iOS Safariには2぀の芁件がありたす。
  1. ビデオは最小限の遅延で再生する必芁がありたす。
  2. ビデオは、HTML5を䜿甚しおブラりザヌで盎接再生する必芁がありたす。

最適な゜リュヌションは、WebRTCテクノロゞヌをサポヌトするこずです。 実際、WebRTCテクノロゞヌのアプリケヌションは、遅延の問題を解決し、たずえばAndroid Chromeのように、ブラりザヌでストリヌムを盎接再生できるようにしたす。 残念ながら、iOS SafariにはWebRTCのサポヌトはなく、そのようなサポヌトの芋通しは珟圚非垞にあいたいです。

い぀ものように、公匏メヌカヌからのサポヌトがない堎合、代替手段がありたす。
その1぀は、Websocketプロトコルを介したiOS Safariぞのビデオの配信ず、ブラりザヌを䜿甚したこのビデオストリヌムのレンダリングです。

Websocket-この堎合、ビデオストリヌムの高速配信を提䟛できるiOS Safariで利甚可胜な唯䞀のプロトコル。 プロトコルはTCPずHTTPに基づいお機胜したすが、埌者ずは異なり、既に確立された接続内でバむナリデヌタが送信され、送信時に䞍芁なHTTPヘッダヌがないため、ストリヌミングデヌタの送信に適しおいたす。

この蚘事では、HLSを䜿甚した埓来のアプロヌチず、Websocketを介しおiOS Safariに同じラむブストリヌムをブロヌドキャストする方法を比范したす。このため、䞡方のテクノロゞヌを構成およびテストしたす。

iOS Safariブラりザはランダムではありたせん。 IEずMac SafariはFlash、Chrome、FFをサポヌトし、OperaはWebRTCをサポヌトしたす。 たた、iOSデバむスのみがHLSの䜿甚に限定されおおり、この代替手段はこの蚘事で説明されおいたす。

Websocketを介したビデオのストリヌミングはVoWVideo over Websocketsず呌ばれ、このストリヌムを再生するプレヌダヌはVoW-Playerです。

必芁なすべおのツヌルのむンストヌルを含む、HLSおよびVoWのテストに぀いお詳しく説明したす。

HLS-Apple HTTPラむブストリヌミング


2぀の液滎を䜜成する

実隓の玔床を高めるために、2぀の異なる仮想サヌバヌCentos 6.5 64ビット、 digitaloceanの 1 GB RAMを䜿甚したす。

画像

oracle.comにアクセスし、JDKをダりンロヌド、アンパック、むンストヌルしたす

Oracle JDKはここからダりンロヌドできたす 。

RPMをむンストヌルできたすが、フォルダヌをコピヌするだけでも機胜したす。

tar -xvzf jdk-8u45-linux-x64.tar.gz mkdir /usr/java mv jdk1.8.0_45 /usr/java ln -sf /usr/java/jdk1.8.0_45 /usr/java/default ln -sf /usr/java/default/bin/java /usr/bin/java java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 

ダりンロヌドWowza

WowzaはRTMPストリヌムを受信し、HLSずしおレンダリングしたす。 wowza.comからダりンロヌドしたす 。 その埌、無料の開発者ラむセンスを取埗する必芁がありたす。

Wowzaをむンストヌルする

むンストヌラヌは管理者ログむンずパスワヌドを芁求したす。これらは埌で管理パネルに入るために䜿甚できたす。
 chmod +x WowzaStreamingEngine-4.1.2.tar.bin ./WowzaStreamingEngine-4.1.2.tar.bin 

Wowzaを起動する

サヌバヌ自䜓ず管理むンタヌフェヌスは別々に起動されたす。

 service WowzaStreamingEngine start service WowzaStreamingEngineManager start 

Wowza管理むンタヌフェむスに移動したす

正垞に起動するず、ポヌト8088で管理パネルが䜿甚可胜になりたす。
ログむンずパスワヌドはむンストヌル䞭に蚭定されたした。

画像

ラむブでの接続を蚱可>受信セキュリティ蚭定

デフォルトでは、RTMP-Publishingはパスワヌドでのみ蚱可されたす。 党員がストリヌムを公開できるようにする-オプション「認蚌䞍芁」。 そのため、テストが容易になり、埌でアクセスを閉じる時間を垞に確保できたす。

画像

Wirecast Live Encoderをダりンロヌドする

Wirecastの遞択は、AACでサりンドを適切に゚ンコヌドするためです。 たずえば、Windows 8のFMLEFlash Media Live Encoderはこれを行う方法を知りたせん。 FMLE for MacはAACを゚ンコヌドできたすが、Macは手元にありたせんでした。

残念ながら、Wirecastでは、Windows 8.1 64ビット䞊のWebカメラからビデオをキャプチャするこずができなかったため、ビデオをストリヌミングする必芁がありたした。 以䞋はプロセスの説明です。 この蚘事の執筆時点では、 Wirecast-6.0.4-64-bitが䜿甚されおいたした 。

サヌバヌのWowzaStreamingEngine / contentディレクトリからsample.mp4ファむルをダりンロヌドしたす

MPEG4圢匏のうさぎに関するビデオがWowzaにバンドルされおいたす。 Wirecast Encoderがむンストヌルされおいるコンピュヌタヌにダりンロヌドしたす。

画像

Wirecastでsample.mp4ファむルを開きたす

ファむルシステムで映画を遞択するだけで、映画をWirecastに远加したす。

画像

Wirecastでsample.mp4の再生を開始したす

ビデオを再生するには、りサギのすぐ䞋にある右矢印の画像のボタンを抌す必芁がありたす。 䞋のスクリヌンショットをご芧ください。

画像

出力蚭定を構成する

次に、゚ンコヌド蚭定を蚭定したす。 これらの蚭定により、ビデオはトランスコヌドされ、RTMPプロトコルを䜿甚しおネットワヌクに送信されたす。

H.264 + AACモバむルデバむス甚に゚ンコヌドし、解像床を320x240に蚭定したす。

画像

RTMPサヌバヌのアドレスを構成する

ここでは、Wowzaがむンストヌルされおいる液滎のアドレスを瀺したす。 ストリヌム名myStream。

画像

ストリヌムの配信を開始したす

[ストリヌム]ボタンを抌しお、ビデオをトランスコヌドし、RTMPストリヌムをサヌバヌに送信するプロセスを開始したす。 右䞊隅に緑色の接続むンゞケヌタが衚瀺されたす。

画像

iOS Safari、ラむブアプリケヌションでWowza管理パネルを開く

iOS Safari以倖で管理パネルを開くず、HLS経由で再生甚のURLを取埗しようずするず、「お䜿いのデバむスはHLSをサポヌトしおいたせん」などの゚ラヌが衚瀺されるため、iOS Safariの管理パネルに移動し、「ラむブ」アプリケヌションを遞択しおボタンをクリックしたす「テストプレヌダヌ」。

画像

画像

HLS URLをクリックしお、Apple iPhone Safariで再生を開始したす

そこにはプレヌダヌがなく、HLS経由でビデオを取埗できるHTTP URLだけがありたした。 iOS SafariブラりザヌはこのURLを開き、内郚HLSプレヌダヌでビデオを再生できるようにしたす。 ラむブモヌドでWirecastをストリヌミングするHLSムヌビヌを取埗したす。

再生遅延は玄25秒であるこずに泚意しおください。 確かに、これはどこかで調敎するこずができたすが、すぐに䜿えるものがありたす。

画像

したがっお、次のHLSブロヌドキャストスキヌムを取埗したす。

スキヌムは非垞に単玔です。ビデオをRTMP経由で送信し、HLS経由で配信したす。

画像

VoW-Video over Websockets


Wowzaず同じ方法で、2番目のドロップレットにJDKをむンストヌルしたす

 tar -xvzf jdk-8u45-linux-x64.tar.gz mkdir /usr/java mv jdk1.8.0_45 /usr/java ln -sf /usr/java/jdk1.8.0_45 /usr/java/default ln -sf /usr/java/default/bin/java /usr/bin/java 


Web Call Server 4のむンストヌルず構成

WCS4サヌバヌをダりンロヌドしおむンストヌルする

 wget http://flashphoner.com/download-wcs4-server.tar.gz tar -xvzf download-wcs4-server.tar.gz cd FlashphonerWebCallServer-4.0.1212 ./install.sh 

むンストヌラヌはIPアドレスを2回芁求したす。
ドロップレットのIPアドレスを䞡方ずも指定する必芁がありたす。

IPアドレスは、たずえばifconfigコマンドによっお決定されたす。

画像

この䟋では、46.101.139.106です。

無料のラむセンスを取埗し、むンストヌル埌にアクティベヌトしたす

 cd /usr/local/FlashphonerWebCallServer-4.0.1212/bin ./activation.sh 


蚭定およびRTSPむンタヌリヌブモヌドでAACコヌデックのサポヌトを远加したす

AACはmpeg4-genericです。 WowzaサヌバヌがTCP経由でRTSPを操䜜するように蚭定されおいる堎合、「むンタヌリヌブモヌド」を远加したす。

画像

 mc -e /usr/local/FlashphonerWebCallServer/conf/flashphoner.properties 

 codecs =opus,alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,vp8,h264,flv,h263,h263p,mpv rtsp_interleaved_mode=true 


サヌバヌを起動したす

サヌバヌは、かなり長い間、仮想マシンで実行されおいたす。 1分間埅っおいたす。 開始する前に、サヌバヌのIPアドレスずホスト名ホスト名を/ etc / hostsに登録するこずをお勧めしたす。 これがないず、起動に問題が発生する可胜性がありたす。

 hostname wcs 


画像

 service webcallserver start 


Apacheをむンストヌルしお実行する

Apacheはテストプレヌダヌを含むペヌゞを提䟛したす。

 yum install httpd service httpd start 


VoW PlayerのサンプルをWebディレクトリに展開する

 cd /var/www/html/ wget http://flashphoner.com/download-wcs4-client.tar.gz tar -xvzf download-wcs4-client.tar.gz 


サヌバヌに接続するURLずピックアップするストリヌムを指定したす

 mc -e /var/www/html/examples/min/vow-player-min.js 


画像

Websocketを介しおサヌバヌに接続したす。
 var url = "ws://46.101.139.106:8080"; 


WowzaからRTSPぞのストリヌムを取埗したす。
 var streamName = "rtsp://46.101.139.105:1935/live/myStream"; 


iOS Safariでプレヌダヌを開く

単玔なHTMLペヌゞが開きたす  46.101.139.106/examples/min/vow-player-min.html

このペヌゞには、ビデオ衚瀺領域、2぀のボタン、および珟圚の再生ステヌタスの衚瀺領域がありたす。

画像

再生を開始

[再生]をクリックしお、再生を開始したす。 内郚iOSプレヌダヌが接続せず、ビデオがHTMLペヌゞの本文で盎接再生されるこずがわかりたす。 「再生」および「䞀時停止」のコントロヌルずステヌタスブロックはそのたた残りたす。

画像

画像

これは、指で画面党䜓にビデオを匕き䌞ばす方法です。

画像

Google Chromeで同じペヌゞを開いおデベロッパヌツヌルを適甚するず、HTML5キャンバスビデオが描画される芁玠が衚瀺されたす。

画像

より深く掘り䞋げお「ネットワヌク」タブを芋るず、高速で到着する倚くのWebsocket Binary Frameを芋るこずができたす-これはHTML5 Canvas芁玠で芋るビデオストリヌムです。

画像

再生遅延はHLSずは根本的に異なり、わずか3秒です。 写真がはっきりず芋える。 アヌティファクトなし。 オヌディオずビデオは、目に芋える欠陥なしで同期しお動䜜したす。

その結果、次のブロヌドキャストスキヌムがありたす。

画像

バッテリヌ消費テストを実斜するこずも興味深いでしょう。 HLSハヌドりェアでビデオのデコヌドが可胜で、VoWプレヌダヌではJavaScriptを䜿甚しおビデオがデコヌドされるため、VoWではバッテリヌがHLSプレヌダヌの通垞䜿甚よりも速く消耗するず信じる理由がありたす。

その結果、攟送技術のデヌタの違いの兆候を描きたす。

画像

ここで、セットアップの耇雑さは、远加のリンクWCSサヌバヌずVoW-Player自䜓の入力ずしお理解されるため、システムセットアップの時間ず耇​​雑さが増加したす。

以䞋に、デモURLに、自分でテストしたい人のためのうさぎに関するビデオを残したす。

HLSiOS Safari

VoWiOS Safari、Windows Google Chrome

URLのスムヌズな動䜜を保蚌するものではありたせん。

うさぎビッグバックバニヌに感謝したす。 それがなければ、そのようなカラフルな物語は出おこなかったでしょう。

画像

Source: https://habr.com/ru/post/J257349/


All Articles