最近由于项目需要,研究了直播的推拉流以及滤镜叠加的效果,在此记录一下一些小的细节。
前期做了直播SDK的调研,发现七牛云的SDK更符合项目需求一点,所以,最终选择了七牛云的SDK。
推流
七牛云官方的帮助文档有点坑,sdk更新了,但是帮助文档没有更新,所以去看看七牛云Demo会更方便上手一点。
导入SDK
导入SDK
初始化
public class MyApp extends Application{
@Override
public void onCreate() {
super.onCreate();
StreamingEnv.init(getApplicationContext());
}
}
manifest中配置权限
android:glEsVersion="0x00020000"
android:required="true"/>
直播类布局
android:id="@+id/cameraPreview_afl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true">
android:visibility="gone"
android:id="@+id/cameraPreview_surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>
android:id="@+id/glSurfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
推流有三个比较重要的类:
StreamingProfile (推流参数设置)
CameraStreamingSetting (所有摄像头相关的配置)
MediaStreamingManager (推流 SDK 的核心类)
这里说明一下,如果需要自定义滤镜的话,从七牛云SDK中获取相机的原始流数据YUV做转换,叠加滤镜效果再推流是件很麻烦的事情。首先你要了解图形学和C的知识,其中涉及到很多转码解码的操作,只有通过native去操作o