Pinterest:Android系统上的视频管理
文 /?Grey Skold?
譯 / 屈健寧
原文?
https://medium.com/pinterest-engineering/managing-videos-on-android-f59da9601d5f
管理當前所有可用視頻的播放狀態
了解視頻在屏幕上的可見率
為我們的開發人員提供易于使用的視頻組件
override?fun?onResume()?{
?????super.onResume()
?????//?Required?by?consumers?to?implement
?????videoView?.apply?{
??????????viewability?=?Viewability.FullyVisible
??????????onActivate()
??????????onViewCompletelyVisible()
?????}
}
override?fun?onPause()?{
?????//?Required?by?consumers?to?implement
?????videoView?.apply?{
??????????viewability?=?Viewability.NotVisible
??????????onDeactivate()
?????}
?????super.onPause()
}
override?fun?onResume()?{
?????super.onResume()
?????videoManager.onResume(this)
}
override?fun?onPause()?{
?????videoManager.onPause(this)
?????super.onPause()
}
//?VideoManager.class?internally
override?fun?onResume(videoSurface:?VideoViewSurface)?{
?????videoSurface.videoViews.forEach?{
??????????registerVideo(it)
?????}
}
override?fun?onPause(videoSurface:?VideoViewSurface)?{
?????videoSurface.videoViews.forEach?{
??????????unregisterVideo(it)
?????}
}
保留這個視頻列表讓我們可以根據應用程序的當前可見性來動態地設置播放狀態。同時這個方法還提供了基于在視頻記錄時傳遞的某些元數據屬性動態更改之類其他功能的靈活性。
向消費者提供包括一系列``障礙物’'視圖的選項,這些視圖可能會覆蓋我們的基礎視頻(例如工具欄,浮動按鈕等)
顯示彈出窗口的回調(即onWindowFocusChanged())屏幕滾動組件或UI組件不在屏幕上(請參閱RecyclerView監聽器)
屏幕上顯示視頻表面時的其他回調(即onResume()等)
object?:?FooBarVideoView(
?????context,?????//?application?context
?????analytics,???//?Analytics?object
?????url,?????????//?video?url
?????uid,?????????//?unique?ID
?????false????????//?isAd?flag
)?{
?????//?configuration?flag?for?custom?setup?(mute,?autoplay,?controller,?etc.)
?????override?val?videoConfiguration?=?VideoConfiguration.FOO_BAR
}.apply?{
?????shouldLoop?=?true
?????videoAspectRatio?=?aspectRatio
?????render(videoMetaData)?//?loads?video,?videoMetaData?contains:?url,?isAd,?uid
}
改進后
PinterestVideoView(context).apply?{
?????//?Optional?params?for?setup/customization
?????this.analytics?=?pinterestAnalytics
?????this.mute?=?false
?????this.autoPlay?=?true
?????this.alwaysAutoplay?=?true
?????this.alwaysPlay?=?true
?????this.showMute?=?true
?????this.looping?=?true
?????this.bufferingRule?=?SHOW_BUFFERING_ALWAYS
}.apply?{
?????render(videoMetaData)?//?loads?video,?videoMetaData?contains:?url,?isAd,?uid
}
視頻基礎架構的另一個復雜性是實際的VideoManager體系結構本身。在我們的重寫中,我們將大多數舊組件合并為僅支持正常運行的VideoManager的核心部分。
改進后
LiveVideoStackCon 2019深圳講師招募
12月13-14日,LiveVideoStackCon首次來到深圳,將全球前沿多媒體技術實踐與深圳本地產業結合,觸發技術與商業靈感。歡迎將你的技術實踐、踩坑與填坑經歷、技術與商業創業的思考分享出來。請將個人資料和話題信息郵件到 speaker@livevideostack.com 或點擊【閱讀原文】了解成為LiveVideoStackCon講師的權益與義務,我們會在48小時內回復。
LiveVideoStack?秋季招聘
LiveVideoStack正在招募編輯/記者/運營,與全球頂尖多媒體技術專家和LiveVideoStack年輕的伙伴一起,推動多媒體技術生態發展。同時,也歡迎你利用業余時間、遠程參與內容生產。了解崗位信息請在BOSS直聘上搜索“LiveVideoStack”,或通過微信“Tony_Bao_”與主編包研交流。
總結
以上是生活随笔為你收集整理的Pinterest:Android系统上的视频管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过改进视频质量评估提升编码效率
- 下一篇: CABR:Beamer的内容自适应速率控