如何做到實時彈幕?
我們學校一個社團做了一個系統,讓我們在微博的「微話題」里留言,然後他的界面上不就不定時一彈幕形式顯示出來。他們說相關的知識有dom(js) html css3 websocket python和瀏覽器透明。有沒有大神能給我大概說說原理?
樓上 @昌維 說到了一個我比較同意的地方,就是直播的實時彈幕其實和聊天室的原理差不多。
但是,就像我在有沒有實時彈幕聊天的例子? - 知乎用戶的回答這個回答中所提到的一樣,傳統聊天室的單伺服器和單進程的做法是無法移植到直播彈幕上的。要想實現實時彈幕,就必須使用跨伺服器和多進程並發的做法,以解決單伺服器接入數量限制、吞吐消息限制的問題等等。
明白了這一點以後,就可以知道實現實時彈幕的三個基本問題就是:實時、可用、穩定。
解決這些問題的辦法的關鍵字除了樓上各位所說的websocket、http://socket.io以外,我們認為還需要有:MQTT協議、Erlang/OTP、200ms。
要是不想自己造輪子的話,可以直接使用我們的解決方案,集成SDK即可,詳見文檔:https://yunba.io/docs/product_demo_bullet
或者直接點擊我們的DEMO看下直接效果 Yunba Live Video
另外,昌維,最近還玩LOL嗎?? ????
這個么...其實不需要自己去做吧
幾年前我的學校學生活動時就用到過,基本上是直接跟官方聯繫,他們會幫忙(直接)提供相應的程序的...粗略說說。
彈幕:
彈幕的實現方法比較多,但說到底,根本的思想是在視頻,文本等視圖層上面附加一層視圖,通過設置透明度,在頂層視圖上載入彈幕的內容。
很多flash播放器彈幕即使用上述方法實現,不過其視圖是在flash內部實現,網頁中使用的可以通過上述的思路,在div模型上載入另一個透明div,在新的div中append文本內容即可。內容:
上面說了實現,當然也要有數據了,數據這裡,新浪官方是提供了一個工具,可以實現微博牆功能,顯然,有一個這樣的介面,也能拿到微博話題的內容了;如果是使用Python,假想那邊是使用了爬蟲技術,不斷的去扒取內容,然後返回給彈幕那邊的系統。所以,總體來說,那邊可能是這樣實現的:
1.Python爬蟲,獲取內容,保存在資料庫或者提供一個數據介面。
2.網站通過js設置定時器,定期從資料庫或者介面拿到內容。
3.然後不斷的向div中append內容。
所以用到的技術大概就是所說的:Python,html,js,DOM(用js操作html內容),css(頁面樣式調整。)websocket推流的同時又從別的客戶端拉流,後端和聊天室原理差不多,前端只不過需要一個彈幕插件顯示而已
GitHub - cw1997/danmu-demo 這是我開源的一個很簡單的彈幕demo,你可以作為參考。後端使用的是swoole的websocket伺服器,前端用的是jquery.danmu.js插件謝邀!題主說的微博彈幕現在用的比較少了,我們目前開發的是基於微信公眾平台的微信彈幕。使用的方法也很簡單,這個一般用於各類活動,像題主說的學校社團活動用的也是比較多的,現場用戶只需要關注公眾平台,所有用戶直接向公眾平台裡面發送內容,大屏幕上就會以彈幕的形式展現出來,並且可以支持同時播放視頻、PPT、現場直播等都可以實時彈幕的。不知道題主說的實時彈幕是不是這種的,這個詳細介紹使用「蜀樂微信」網站上都有的。
websocket是重點。
websocket+nodejs輕鬆解決,過段時間實現一下。
推薦閱讀:
※如何看待 b 站彈幕現狀?
※為什麼彈幕會火起來?
※B站是否應該取消評論區樓層機制?
※如果遊戲直播的時候觀眾也能參與到遊戲中,那麼這款遊戲該設計成什麼樣?
※B站上有哪些常見的彈幕句式?