|
|
51CTO旗下网站
|
|
移步端
  • 真牛!字节跳动又一开源力作发布

    当日要和大家分享字节跳动的一项开源神器。不久前,字节跳动的技艺团队在Github上开源了一番视频动画特效SDK。

    笔者:叶猴妹整编 来源:开源最前线| 2020-09-11 15:37

    明天几日,字节跳动发送邮件,通告将给予员工发放奖金。篇幅为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.  

    【编纂推荐】

    1. 腾讯云发布全新游戏云解决方案,助力游戏开发者高效开发
    2. 低代码为AI降低准入门槛
    3. 年货 | 手把手教你用115列代码做个数独解析器!
    4. 低代码和产业化代码的首要区别是什么?
    5. 华为开发者大会正式通告HarmonyOS 2.0 燃放面向全场景智慧生态的星星之火
    【义务编辑: 张燕妮 TEL:(010)68476606】

    点赞 0
  • GitHub  代码  开发者
  • 分享:
    大家都在看
    猜你喜欢
  • 24H热文
    一周话题
    每月获赞
  • 华为开发者大会正式通告HarmonyOS 2.0 燃放面向全场景智慧生态的星星之火真牛!字节跳动又一开源力作发布TikTok向美媒介绍算法原理:先用8个热门视频了解你腾讯工作3年反思:为什么优秀职工不是你?华为鸿蒙 2.0 来了!不做第二个 Android数据分析师必备之9大技能,绝大多数人口只掌握一半阿里面试:MySQL目录凭什么能让查询效率提高这么多?2020年7月各大城市与程序员平均月薪排行榜
  • 腾讯工作3年反思:为什么优秀职工不是你?没有架构师的命,却得了架构师的病魔!华为开发者大会正式通告HarmonyOS 2.0 燃放面向全场景智慧生态的星星之火阿里面试:MySQL目录凭什么能让查询效率提高这么多?就是要让你搞懂Nginx,这篇就够了上班4年,拿到阿里Offer,该不该去?真牛!字节跳动又一开源力作发布余承东:鸿蒙体验已达安卓70-80%水平 前途将取而代之谷歌生态
  • 数据分析师必备之9大技能,绝大多数人口只掌握一半没有架构师的命,却得了架构师的病魔!摸爬滚打20年,总结出来的职场箴言!2019 年中国互联网网络安全报告出炉腾讯工作3年反思:为什么优秀职工不是你?两个月新增 80 万行代码,Linux 基础为什么不会崩?我35岁,程序员,“官方危”此后帮别人规划人生5种可能在10年以后消失的支出语言
  • 订阅专栏+更多

    云原生架构实践

    云原生架构实践

    新技术引领移动互联网进入急速赛道
    共3章 | KaliArch

    人口订阅学习

    数据中心和VPDN网络建设案例

    数据中心和VPDN网络建设案例

    漫画+老
    共20章 | 捷哥CCIE

    162人口订阅学习

    筹建数据中心实验Lab

    筹建数据中心实验Lab

    试验平台Datacenter
    共5章 | ITGO(老曾)

    107人口订阅学习

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微

  • <big id="ae2ec10b"></big>