直播+连麦+推流问题集锦001
来源:互联网 发布:网络运营主管招聘 编辑:程序博客网 时间:2024/05/16 00:49
为什么有的直播类SDK在网络比较差的时候会下调帧率和码率
主要是为了避免拥塞,SDK在一定的判断下会下调码率,同步的,为了保证稳定的清晰度,就必须下调帧率,不然每一帧的码率太低,会模糊。
商汤美颜的旋转问题,预览是ok的,但是远端观看就是上下颠倒或者横屏
原因是:商汤美颜是矩阵是不停的变化的,所以写固定的转换数组没用。
float[] matrix = new float[16];// mSurfaceTexture.getTransformMatrix(matrix);//不能从摄像头去拿矩阵。需要的是美颜过的单位矩阵。 android.opengl.Matrix.setIdentityM(matrix, 0);// float[] test = new float[16];// Matrix.rotateM(test, 0, matrix, 0, 90, 0, 0, 1);// processStMatrix(matrix, mCameraID == Camera.CameraInfo.CAMERA_FACING_FRONT); float[] mat1 = new float[16]; float[] mat2 = new float[16]; float[] rot3 = new float[16]; float[] res1 = new float[16]; float[] res2 = new float[16]; float[] res3 = new float[16]; android.opengl.Matrix.setIdentityM(mat1, 0); android.opengl.Matrix.translateM(mat1, 0, -0.5f, -0.5f, 0f); android.opengl.Matrix.setIdentityM(mat2, 0); android.opengl.Matrix.translateM(mat2, 0, 0.5f, 0.5f, 0f); android.opengl.Matrix.setIdentityM(rot3, 0); android.opengl.Matrix.setRotateM(rot3, 0, 180, 1, 0, 0); android.opengl.Matrix.multiplyMM(res1, 0, mat2, 0, rot3, 0); android.opengl.Matrix.multiplyMM(res2, 0, res1, 0, mat1, 0); android.opengl.Matrix.multiplyMM(res3, 0, res2, 0, matrix,0); AgoraVideoFrame vf = new AgoraVideoFrame(); vf.format = AgoraVideoFrame.FORMAT_TEXTURE_2D; vf.timeStamp = System.currentTimeMillis();// vf.stride = mImageWidth;// vf.height = mImageHeight; vf.stride = 480; vf.height = 640; vf.textureID = out; vf.eglContext14 = mEGLContext;// vf.transform = res3;// android.opengl.Matrix.setIdentityM(mat1, 0); vf.transform = res3;// vf.rotation = 90; mRtcEngine.pushExternalVideoFrame(vf);
onRenderVideoFrame获得其他用户的视频 接口收不到回调
这个接口是可以回调到,这个回调只有在远端加入进来才会收到。
服务器推流涉及到画中画布局,客户端设置旁路推流.defaultLayout(0), 这时候两个客户端,一个推16:9 一个推4:3,需要将其中一个客户端16:9的裁剪成4:3然后做合图推流给观众看,如何实现?
首先概念上要明确,画中画布局,其实就是来做服务端合图的,需要调用setVideoCompositingLayout来进行合图,并且会按照设置合图的布局对比例比较大的做一定的裁剪。
两个人连麦,用来做远端显示的GLSurfaceView写入布局中,当调用onUserJoined加入频道,看不到远端的图像。
首先确定用的是SDK做的采集,剩下的有两种情况:
1,两个GLSurfaceView叠加到一起的时候,有一个会被另外一个盖住,需要设置zorder,如果你选择横铺,可以左右各一半一半这样去设置,来保证远端的那个GLSurfaceView不被本地的图像给盖住。(测试方式:尝试将本地的图像给去掉)
2,也有可能是自己去创建了一个View。其中一些方法没实现导致。炫耀改成SDK创建。
先设置旁路推流的视频分辨率,后来又调用了setVideoProfile,最终推流是按照那个为准的。对调用预览,或者登陆频道,旁路推流的配置分辨率和setVideoProfile, 谁最后就按照谁的来,有疑问?
首先推流设置的编码和频道内的远端编码是两个概念,setVideoProfile这个是设置的频道内,旁路直播设置的推流的,互不影响。但是如果setVideoProfile设置的很小,但是推流设置大,可能就会有问题,会导致推流的数据不是很清楚。总结来说推流的编码是按照旁路推流的数据来定义的,setVideoProfile是房间内几个主播观看的分辨率,旁路推流是服务端另外又推出去一路流。
setVideoProfile 的分辨率是规定的吗, 有自定义分辨率吗?比如自己设置个指定的分辨率。
这个是可以的,一般还是要按照正常的设置,自己不要乱指定。需要自定义就需要另外一个扩展的接口:
注意不能超过720p
android:
((RtcEngineEx)mRtcEngine).setVideoProfileEx(360, 360, 15, 300);参数:分辨率(宽 高),帧率,码率
ios需要一个声明文件头才可以
一旦登录频道,修改码率就得退出频道,然后再修改然后登录频道。
其实吧,在频道内设置也可以,但是没有人这么做,建议不要这么搞,会有问题。直播模式下,网络卡,会降码率和帧率。
自采集,利用GPUimage做滤镜和美颜,横屏的问题:
变换矩阵不能写死为:vf.transform = new float[]{ 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f };需要从GPUImage绘制层将变换矩阵传出来,然后赋值给vf.transform。用户代码修改如下:GPUImageRenderer.java:
public interface OnFrameAvailableListener
{ void onFrameAvailable(int textureID, int rotation, byte[] data, float[] transform); }
mSurfaceTexture.getTransformMatrix(videoTextureTransform);
if (null != onFrameAvailableListener)
{ onFrameAvailableListener.onFrameAvailable(mGLTextureId, getRotation().asInt(), data, videoTextureTransform); }
VideoChatViewActivity.java:
vf.transform = transform;
以上可解决远端接收到的数据是横屏的问题
- 直播+连麦+推流问题集锦001
- 直播+连麦+推流问题集锦002
- 七牛---Pili直播推流SDK问题总结
- EasyRTMP+EasyRTSPClient实现的多路(支持断线重连)RTSP转RTMP直播推流工具
- 推流资源(视频直播)
- Android直播推流学习
- rtmp推流直播流程
- 推流直播工具推荐
- 直播推流基础知识笔记
- yasea 直播推流工具
- 聊一聊直播利器,连麦直播背后的混流方案
- 聊一聊直播利器,连麦直播背后的混流方案:到底该怎么混?
- 直播利器---AnyRTC实时视频连麦互动直播
- WebRTC + 直播 + 连麦 = AnyRTC ?
- 手机直播连麦技术分析
- 手机直播连麦技术分析
- 手机直播连麦技术分析
- 手机直播连麦技术分析
- python实现某网站的音乐下载
- PAT乙级 1077. 互评成绩计算 (20)
- SpringMVC框架学习笔记
- StrokesPlus键盘按键表示
- eclipse中JPA的使用
- 直播+连麦+推流问题集锦001
- 凸优化以及机器学习资料
- hdoj 1124 Factorial (第一次接触数论)
- eclipe无需配置web.xml自动生成注解注册
- [开源] Basic-TiJOS-Runtime项目进度
- Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 论文笔记
- 利用Redis 实现消息队列
- 共享单车技术含量,一篇文章全说透了!
- 日流水400万,扒出一个年入十几亿的黑产「兵工厂」