1. 程式人生 > >safari 10 開始支援 webRTC

safari 10 開始支援 webRTC

2015年 9月 份,  safari 10 終於開始支援 WebRTC 了,  值得慶祝啊,  H5 的一個重要功能終於獲得了 Apple 的支援,  儘管遲了點, 還是值得歡呼的!

http://webrtcbydralex.com/index.php/2015/08/29/webrtc-in-safari/

2015/08/29

This morning I tweeted about apple finally adding support to safari in webkit, and I have been flooded by questions ever since, so I thought I’d write a post.


WebRTC和WebKit

WebRTC是基於瀏覽器的實時通訊介面,主要支援通過瀏覽器進行點對點的音訊以及視訊通訊。WebRTC規範由W3CIETF共同制定。通過這些API,Web開發者可以通過標準的JavaScript API在網頁中嵌入視訊、音訊通訊功能。

WebKit是一個開源的瀏覽器引擎,它由WebCore排版引擎、JSCore JavaScript引擎和各種平臺移植程式碼組成。WebKit目前缺乏對WebRTC標準的支援,因此開發者構建了webrtcinwebkit.org網站,開始在WebKit上加入對WebRTC的支援。最初,該專案在WebKit的GTK移植中使用

OpenWebRTC增加對WebRTC支援,後續的支援,將會逐漸放入到WebCore中,這樣基於WebKit的所有移植環境就能方便的使用。同時,該專案未來還將接入更多的WebRTC實現後段,比如webrtc.org等。

這些工作會使蘋果公司更容易的在Safari上實現WebRTC功能。

蘋果公司做了什麼?

WebKit只是一個瀏覽器引擎,每個使用它的瀏覽器,都是一個移植版本(port)。webrtcinwebkit專案,最早在WebKit的GTK移植上進行了測試,在7月的時候,Linux版瀏覽器實現了對getUserMedia介面的支援。

針對不同瀏覽器針對WebRTC協議棧的實現,可以參見這個

幻燈片。作為背景知識,它介紹了不同瀏覽器如何將WebRTC實現融合到自己的架構中去。

對於蘋果公司,mac平臺上的Safari和iOS平臺上的Safari是獨立的WebKit移植版本。它們沒法直接使用之前為GTK移植版本上使用的WebRTC接入程式碼。因此蘋果公司需要單獨為這兩個移植版本實現WebRTC的接入。

截至8月底,通過的git倉庫的提交記錄的篩選,蘋果公司的主要改動有:

  • 針對mac和iOS平臺上的改動
    • /platform/mediastream/mac
    • /platform/mac-mavericks/
    • /platform/mac-yosemite/
  • 針對AVFoundation介面的修改(AVVideoCaptureSource.h)
  • 針對蘋果平臺構建檔案的修改(WebCore.xcodeproj/project.pbxproj)

從改動來看,目前蘋果已經實現了對GetUserMedia和MediaStream介面在mac和iOS兩個平臺上的支援。進而支援了對音訊、視訊裝置的列舉和選擇,支援視訊、音訊流作為audio和video兩個標籤的輸入來源,支援視訊抓取等等功能。