unity:
1. 界面。
2. ManagerMedia(单列实现对视频播放器平台的sdk),只需用提供接口不需要理会平台。
3. 要点,你要看到的视频是需要渲染到unity的纹理上,理所当然必须在unity生成一个纹理id传过去。
Texture2D texture = new Texture2D(Width, height, TextureFormat.BGRA32,false);
intid = (int)texture.GetNativeTexturePtr().ToInt32();
android:
1. 做个媒介驱动ijkplayer,,所以你要掌握就是看ijkplayer的Demo能力,把里面的有用代码抽离。这就要懂比较懂java(暂时只说android,Ios还在研究),就算会java的也未必搞的懂,因为他们都着重在UI,很少去理会底层渲染,我也是用了好长段时间研究.
2. Surface ,surfaceView,Glsurfaceview,SurfaceTexture ,你可以把它们当成一个容器类,在android ijkplayer里面视频的渲染就是把数据流先放到这个容器里面。
public void setSurfaceTexture(int tepid){
this.surfaceTexture= new SurfaceTexture(tepid);
this.surfaceTexture.setOnFrameAvailableListener(this);
Surface surface = new Surface(this.surfaceTexture);
if(this.mediaPlayer != null) {
this.mediaPlayer.setSurface(surface);
}
}
Ijkplayer :
1. 真正视频解码使用的工具,我就把它当成了工具。
2. Ijkpalyer基于ffmpeg开源开源播放器,底层是c语言
a) https://github.com/bbcallen/ijkplayer
FBO离屏渲染:
1. opengl
2. 这里我使用是c++写的opengl。所以又要懂得使用android NDK打成.so库提供调用,也就是jni。