现在做录屏遇到一个问题,我用MediaCodec解码h264数据,排除问题,编解码应该都没问题,安卓与pc的交互只有130ms的延迟,安卓与安卓的交互却达到了将近2秒的延迟,编码发送到解码接收基本都是实时的,所以问题应该出在渲染上,我用的surfaceView渲染播放,能有什么办法解决这个问题吗?
1.没明白你说的交互是啥
2.怀疑渲染时间过长的话,你解码第一桢的时间打出来就可以验证了。如果解码完成时间很快,再找渲染时间的问题。不然找错方向浪费了时间。
3.理论上,渲染不会很耗时,确定是不是网速限制了你的传输速率。
4.如果2验证了真的是渲染问题,我推荐你换成opengl的渲染方式,用GLsurfaceview或者TextureView试试
新手,不怎么会OpenGL,在GitHub上找的demo都是相机的,我的是截取屏幕的
我的主要问题在于,在App内一个Activity中的两个Fragment嵌套多个Fragment,切换fagment的时候会延时一两秒才会显示出来,但是又动画的控件就会很快。
2秒延时一定不是SurfaceView的延迟,SurfaceView和OpenGL做渲染我都用过,之前也是做过一个android录屏投到另一个android,基本是实时的,看看你的是不是缓冲过大,缓冲30帧就会延迟一秒
看你描述,我感觉是你ui逻辑写的有问题,建议你先用建议UI去验证下你的方案没问题,在解决嵌套效率问题
请问这个问题有结论吗?
我也遇到类似问题,但我在两台Android上延时大概400ms,刨去采集编解码和传输耗时。解码后到真正显示出来大概耗时300ms左右呢。