您當(dāng)前的位置是:  首頁 > 新聞 > 國內(nèi) >
 首頁 > 新聞 > 國內(nèi) >

如何優(yōu)雅地在夏威夷海灘上寫代碼

2019-01-07 14:01:49   作者:Seven Du   來源:CTI論壇   評論:0  點擊:


  今天,也標(biāo)題黨一把。其實真正的標(biāo)題應(yīng)該是《如何優(yōu)雅地直播在夏威夷海灘上寫代碼》或《如何優(yōu)雅地在夏威夷海灘上直播寫代碼》。
  前幾天,Anthony跟我聊,說他找到一個開源的庫,可以做Chromakey,問我能不能用它來做點好玩的事情。我還是第一次聽說Chromakey,抓緊查了查,懂了,不就是個虛擬演播室么。以前,參加各種新科技展會的時候曾玩過幾次。大致是,你站在一個綠幕(有的也用藍(lán)幕)前面,表演各種動作,后期進(jìn)行圖像處理時就可以把背景去掉,然后拼接到一個更煊的背景上,然后,你就可以在中央電視臺直播,或者在夏威夷海灘上寫代碼了。
  這種技術(shù)也多用在電影里,在綠幕前拍攝,后期處理時把背景去掉,就可以把人拼到任何煊酷的場景了。
  當(dāng)然,作為一個程序員,我只想寫代碼。
  為了能優(yōu)雅地在夏威夷海灘上寫代碼,我也是拼了。對著那個庫的文檔和代碼看了半天,得出結(jié)論,太復(fù)雜,光編譯就得依賴許許多多的庫,而我們還要做跨平臺,不大好弄。那個庫叫OpenShot。
  后來,又仔細(xì)研究了一下里面的算法,查了一些資料,發(fā)現(xiàn),算法其實不難。無非就是有幾個公式,逐一計算每個像素跟背景色的差異,如果跟背景差異少,則把背景做成透明的。只是,算法復(fù)雜度比較高,因為,一張1080p的圖像,會有1920x1080個像素點。
  得了,不管怎么樣,挽起袖子自己做。在一個月黑風(fēng)高的晚上,正趕上出差,在酒店昏暗的燈光下把代碼寫好了。
  其實該技術(shù)需要一個主要的道具就是綠幕(或藍(lán)幕,理論上任何單色的都可以,但紅色跟人的膚色近,所以少用,一說歐美人的眼睛是藍(lán)色的,所以多用綠幕),而我現(xiàn)場沒有道具,就把代碼發(fā)給Anthony,說你試試效果吧,結(jié)果,他團(tuán)隊所有人都試了。
  昨天,著名FreeSWITCH網(wǎng)紅Seven Du就在網(wǎng)上用FreeSWITCH搞起了直播,為FreeSWITCH精英群會員講FreeSWITCH,為了演示這一神奇的技術(shù),他還把Ken的圖片當(dāng)成了背景,雖然他連個綠幕都沒有,燈光也不明亮,但整體效果還不錯。
  當(dāng)然,后來,還為改進(jìn)算法糾結(jié)了好幾天,Anthony又加了些代碼,把背景換成了視頻,外國人真會玩。
  Anthony還在家里開起了汽車
  其實上面的視頻有個Bug。你發(fā)現(xiàn)了嗎?當(dāng)然,這個Bug現(xiàn)在已經(jīng)修好了,但你很有幸看到了一個帶Bug的視頻。
  上面?zhèn)鞯膱D片多是一些早期的圖片和視頻,所以,如果仔細(xì)觀察,會發(fā)現(xiàn)畫面的邊緣還是有些拖泥帶水。
  我已經(jīng)把這部分最新的代碼寫到了《FreeSWITCH源代碼分析》里,感興趣的話,買一本看看吧。
  話說,還有不到一個月我們的FreeSWITCH培訓(xùn)班就開班了。好多人誤以為FreeSWITCH只是用來打電話的,但其實,F(xiàn)reeSWITCH能做的事情很多很多,要不要來上海切磋切磋?

【免責(zé)聲明】本文僅代表作者本人觀點,與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。

專題

CTI論壇會員企業(yè)