網易雲信播放器 Flutter 封裝
事情是這樣的 我們公司的業務是有 視頻播放這壹塊業務 而且 是基於網易雲信的 視頻服務的 做的開發 。公司的App開發框架是使用 Flutter , 那麽問題來了 Flutter 怎麽 實現視頻播放嘞 , 官方給出的解決方案 是 ### video_player 這個庫的 實現 是 原生端做視頻解碼 然後通過 Texture 的方式 映射到 Flutter 中 但是解碼器 IOS 使用的是 官方的 AVPlayer (蘋果官方提供的播放器 啥都好 就是不支持流媒體播放 ) Android 解碼器則是 exoplayer 很好很nice
但是
網易雲信的視頻 是加密的 只有自己的 播放器sdk 在能解碼播放 android 和 ios 都支持流媒體 so 只能自己封裝
Android 使用 SurfaceTexture 銜接 視頻流 正常 但是 ios emmm 網易雲信 播放器 返回 的 編碼格式 是 NELP_YUV420 就是 YUV420 直接映射到 Flutter 黑屏 但是有聲音
因為Skia 引擎底層只支持了 BGRA 格式的視頻數據 所以 和黑屏了
首先我們吧 YUV420 轉換成 CVPixelBufferRef 方法如下
該方法依賴 libyuv 請自行導入
然後是 pixelBuffer To SampleBuffer
最後吧 SmapleBuffer 轉換 BGRA
方法如何使用