成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

真牛!字節跳動又一開源力作發布

新聞 前端
今天要和大家分享字節跳動的一項開源神器。前不久,字節跳動的技術團隊在Github上開源了一個視頻動畫特效SDK。

前幾日,字節跳動發送郵件,宣布將給予員工發放獎金。金額為2020年8月固定薪酬的 50%。

這波福利猿妹只能默默的感嘆一句:又是別人家的公司。不過今天猿妹不想和大家探討這項福利,今天要和大家分享字節跳動的一項開源神器。

前不久,字節跳動的技術團隊在Github上開源了一個視頻動畫特效SDK,可以通過制作Alpha通道分離的視頻素材,再在客戶端上通過OpenGL ES重新實現Alpha通道和RGB通道的混合,從而實現在端上播放帶透明通道的視頻。

AlphaPlayer已經在Github上標星270,累計分支 28 個(Github地址:https://github.com/bytedance/AlphaPlayer)

目前,抖音、抖音火山版、西瓜小視頻、今日頭條已經接入。

這套方案對設計師而言明顯降低了特效的制作成本,對于客戶端而言有著更可靠的性能和穩定性,且相比cocos2d引擎有著更低的入門門檻和維護成本,為復雜動畫的實現提供了一種全新的方式,新的復雜動畫開發將會變得更加簡單高效。

運行效果如下:

項目結構&基本原理

AlphaPlayer主要有兩個核心部分,一個是MediaPlayer,負責視頻每一幀的解碼,支持接入方自行實現;另一個是VideoRenderer,負責將解析出來的每一幀畫面進行alpha通道混合,再輸出到Surface上。View使用的是GLSurfaceView,性能相對TextureView更優,但層級限制在最頂層。

AlphaPlayer內部是通過Render渲染紋理畫面的,設計師導出的視頻資源會包含兩部分內容——透明遮罩畫面和原視頻畫面兩部分,然后通過shader進行alpha值的混合,詳細可以看 frag.sh和vertex.sh。

快速接入

  1. allprojects { 
  2.  
  3. repositories { 
  4.  
  5. ... 
  6.  
  7. maven { url 'https://jitpack.io' } 
  8.  
  9.  
  10.  
  11. dependencies { 
  12.  
  13. implementation 'com.github.bytedance:AlphaPlayer:1.0.3' 
  14.  

添加依賴

  1. val config = Configuration(context, lifecycleOwner) 
  2.  
  3. // 支持GLSurfaceView&GLTextureView, 默認使用GLSurfaceView 
  4.  
  5. config.alphaVideoViewType = AlphaVideoViewType.GL_TEXTURE_VIEW 
  6.  
  7. // 也可以設置自行實現的Player, demo中提供了基于ExoPlayer的實現 
  8.  
  9. val playerController = PlayerController.get(config, DefaultSystemPlayer()) 
  10.  
  11. playerController.setPlayerAction(object: IPlayerAction { 
  12.  
  13. override fun onVideoSizeChanged(videoWidth: Int, videoHeight: Int, scaleType: ScaleType) { 
  14.  
  15.  
  16. override fun startAction() { 
  17.  
  18.  
  19. override fun endAction() { 
  20.  
  21.  
  22. }) 
  23.  
  24. playController.setMonitor(object: IMonitor { 
  25.  
  26. override fun monitor(result: Boolean, playType: String, what: Int, extra: Int, errorInfo: String) { 
  27.  
  28.  
  29. }) 

初始化PlayerController

  1. playerController.attachAlphaView(mVideoContainer) 

將PlayerController綁定到ViewGroup

  1. fun startVideoAnimation() { 
  2.  
  3. val baseDir = "your video file base dir" 
  4.  
  5. val portraitFileName = "portrait.mp4" 
  6.  
  7. val portraitScaleType = 2 
  8.  
  9. val landscapeFileName = "landscape.mp4" 
  10.  
  11. val landscapeScaleType = 2 
  12.  
  13. val dataSource = DataSource().setBaseDir(baseDir) 
  14.  
  15. .setPortraitPath(portraitFileName, portraitScaleType) 
  16.  
  17. .setLandscapePath(landscapeFileName, landscapeScaleType) 
  18.  
  19. if (dataSource.isValid()) { 
  20.  
  21. playerController.start(dataSource) 
  22.  
  23.  

播放動畫視頻

  1. fun releasePlayerController() { 
  2.  
  3. playerController.detachAlphaView(mVideoContainer) 
  4.  
  5. playerController.release() 
  6.  

 

 

責任編輯:張燕妮 來源: 開源最前線
相關推薦

2021-01-26 10:59:52

開源技術 數據

2020-11-25 12:50:53

微軟老舊照片開源

2022-09-30 09:24:27

開源模型

2020-09-26 22:30:18

開源技術 數據

2013-08-01 16:52:31

Tizen移動操作系統移動平臺

2023-10-18 11:56:17

開源AI

2021-03-24 10:48:32

谷歌開源代碼

2025-04-16 09:03:27

2023-03-09 14:21:12

字節跳動云固件

2022-11-02 10:02:24

BitSail字節跳動數據集成

2022-06-22 06:49:39

Hertz開源HTTP 框架

2021-09-09 09:05:30

開源字節跳動CloudWeGo

2020-10-24 07:30:05

開源字節跳動模型

2022-08-25 18:48:29

字節跳動CSS開源

2025-04-09 09:20:00

2024-02-19 00:00:00

前端開源項目

2009-04-07 15:31:52

LinuxGoogleMarket

2023-04-07 12:30:04

開源ShmipcIPC

2023-04-19 16:51:54

分布式Primus開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日干天天操 | 中文字幕一区二区三 | 久久久久国产一区二区三区不卡 | 精品国产成人 | 一本大道久久a久久精二百 欧洲一区二区三区 | 自拍偷拍第一页 | 欧美日韩久久久 | 在线一区二区观看 | 国产高清视频一区 | 亚洲精品视频在线观看视频 | 亚洲精品久久久久久久久久久久久 | 亚洲电影成人 | 亚洲一区二区在线电影 | 一区二区日韩 | 黄一区二区三区 | 中文字幕精品一区久久久久 | 久久6视频| 久久亚洲一区二区三区四区 | 欧美精品一区二区三区在线播放 | 国产区精品在线观看 | 亚洲精品乱码久久久久v最新版 | 成人在线精品视频 | 亚洲第一在线 | 久久久久综合 | 精品国产一区二区三区性色 | 久久久久久亚洲精品 | 国产视频二区在线观看 | 一区在线播放 | 一区二区三区精品在线 | 91久久精品国产 | 精品国产乱码久久久久久1区2区 | 免费的色网站 | 国产永久免费 | 殴美黄色录像 | 91传媒在线观看 | 在线观看免费av网 | 91精品国产91久久久久久吃药 | a在线观看免费 | 久久久久一区二区三区四区 | 四虎在线观看 | 成年人网站在线观看视频 |