串流 - RTMP - NGNIX (一)

繼上一篇講既串流概括

今次講3樣野 1)RTMP 串流 2)Google Compute Engine 3)Ngnix Server

除了上次講既6種方法,當中有一種講少左(當然仲有其他啦)
RTMP - 由Macromedia開發 (而家係adobe)- 睇"波"一般都會用到

今次我地既問題係點樣先可以串流一段live片出街呢。

方法:
Live input(劇集) -> Server(Linux Machine or Windows) -> client(mobile phone, flash player)

睇得深入d:
Some kind of Format input -> Converter (frameRate, Encoding, Decoding) -> Output File -> Some Kind of Streaming-In protocol  -> Some kind of Receiving Server -> Some Kind of Streaming-Out Protocol -> Some Kind of Media Player



我地會用既方案:
hunter.mp4 -> ffmpeg -> hunter.flv -> RTMP -> Linux,Google Compute Engine,Ngnix -> RTMP -> Flash,jwplayer



首先用ffmpeg converter 去轉條mp4片做flv先,
然後用rtmp制式stream去GCE到,大概一秒800Kb 左右
條片(每秒800kb)到左server就會開始live stream
當我用個flash jwplayer去connect 上server,條片就會出現啦
因為係live,條片會係跟返stream in緊既時間。



Q&A

咩係ffmpeg?
轉片神器 ! 

點解要用RTMP?
因為可以用flash player去播,易set

係咪一定要用RTMP?
唔係,其他都完全冇問題。值得注意係stream in 同stream out 可以用唔一樣既protocol,方法有好多,之後會講

Ngnix 係乜春 ?
係web server (讀音: Engine X),同apache iis 同類,release in 2004。

咁點解要ngnix 唔用apache呢?
因為無論我用ngnix或者apache,佢地本身都係一個“殼”,要用到streaming features,佢地需要一個“咸” (唔識寫,請指教= =),積係module。 而我地會用既係ngnix-rtmp-module(下面有link)。
因為license問題,apache個module 係non-commercial,commercial license要買。 
因為features問題,用到較多既streaming protocols,
因為open source,因為documentation,因為 我喜歡

可唔可以用其他server?
市場上有好多streaming server,有adobe既media server,有wowza,有boardpeak
當中不能不說既係佢地有更高效既方法,例如1個stream in format 多個stream out format,caching,etc。 有錢既可以試下,因為我今次準備既係一個walk through,比大家了先了解, 後投資。

仲咩會用google compute engine (GCE)?
做prototype既朋友,多數要怏,平,正。基本上我用自己部機,vps,ec2 都可以達到今次既objective。 之所以用GCE, 係想大家接觸多d唔一樣既野,順路比較下個pricing 。(遲d開post會講cloud service =P)。

仲咩逼人用flash呀?
你又係心急既,往後會講用其他東東。

仲講~seed呢?
實作已經做好左,下一Part返來再講




Reference:
Ngnix rtmp module - https://github.com/arut/nginx-rtmp-module (We will cover that in chapter 2)






Comments

Popular posts from this blog

民意 - 身份 - 真偽

React - 2017 - web dev