WebRTC和WebKit
WebRTC是基于瀏覽器的實時通信接口,主要支持通過瀏覽器進行點對點的音頻以及視頻通信。WebRTC規(guī)范由W3C和IETF共同制定。通過這些API,Web開發(fā)者可以通過標準的JavaScript API在網(wǎng)頁中嵌入視頻、音頻通信功能。
WebKit是一個開源的瀏覽器引擎,它由WebCore排版引擎、JSCore JavaScript引擎和各種平臺移植代碼組成。WebKit目前缺乏對WebRTC標準的支持,因此開發(fā)者構建了webrtcinwebkit.org網(wǎng)站,開始在WebKit上加入對WebRTC的支持。最初,該項目在WebKit的GTK移植中使用OpenWebRTC增加對WebRTC支持,后續(xù)的支持,將會逐漸放入到WebCore中,這樣基于WebKit的所有移植環(huán)境就能方便的使用。同時,該項目未來還將接入更多的WebRTC實現(xiàn)后段,比如webrtc.org等。
這些工作會使蘋果公司更容易的在Safari上實現(xiàn)WebRTC功能。
蘋果公司做了什么?
WebKit只是一個瀏覽器引擎,每個使用它的瀏覽器,都是一個移植版本(port)。webrtcinwebkit項目,最早在WebKit的GTK移植上進行了測試,在7月的時候,Linux版瀏覽器實現(xiàn)了對getUserMedia接口的支持。
針對不同瀏覽器針對WebRTC協(xié)議棧的實現(xiàn),可以參見這個幻燈片。作為背景知識,它介紹了不同瀏覽器如何將WebRTC實現(xiàn)融合到自己的架構中去。
對于蘋果公司,mac平臺上的Safari和iOS平臺上的Safari是獨立的WebKit移植版本。它們沒法直接使用之前為GTK移植版本上使用的WebRTC接入代碼。因此蘋果公司需要單獨為這兩個移植版本實現(xiàn)WebRTC的接入。
截至8月底,通過的git倉庫的提交記錄的篩選,蘋果公司的主要改動有:
針對mac和iOS平臺上的改動
- /platform/mediastream/mac
- /platform/mac-mavericks/
- /platform/mac-yosemite/
針對AVFoundation接口的修改(AVVideoCaptureSource.h)
針對蘋果平臺構建文件的修改(WebCore.xcodeproj/project.pbxproj)
從改動來看,目前蘋果已經(jīng)實現(xiàn)了對GetUserMedia和MediaStream接口在mac和iOS兩個平臺上的支持。進而支持了對音頻、視頻設備的列舉和選擇,支持視頻、音頻流作為audio和video兩個標簽的輸入來源,支持視頻抓取等等功能。
不過,和webrtcinwebkit項目最初實現(xiàn)一樣,這些代碼改動主要在mac系統(tǒng)移植部分。這是由于WebRTC中的很多功能,涉及到平臺相關硬件設備交互、媒體流等需要在標簽頁之間共享,使得改動主要針對渲染層。
希望這些修改能夠讓我們能夠盡快的在Safari或者iOS的WebView中看見效果。