Android——直播推流SDK

2018-03-01 11:13:32来源:https://www.jianshu.com/p/34a0c17dcae0作者:小码哥_WS人点击

分享


概述:

好像有三个月没有更新博客了,年前实在是忙的累成狗啊。。。本想直播功能稳定了就没那么多事了,没想到又要搞魔法短视频功能,马丹,短视频玩成了花啊,撸起袖子干。
现在把我们项目中的直播SDK开源出来,我们是境外直播平台,百万用户,经过半年迭代,SDK已经相当稳定,大家可以放心使用。https://github.com/WangShuo1143368701/WSLiveDemo
这个sdk是我根据这个librestreaming修修改改出来的,由于改了太多的代码,用法已经不一样了。


之前写过一篇ffmpeg实战教程(十一)手把手教你实现直播功能,不依赖第三方SDK
是用ffmpeg实现的推流,但是在实际移动端直播项目中,推流是不适合用ffmpeg的。


特性:

支持视频录制和推流,录制视频推流可以同时进行
支持设置关键帧间隔gop
支持动态设置码率,帧率
支持分开设置预览分辨率,编码的分辨率
支持gpu滤镜,并可以通过opengles绘制图像纹理来自定义滤镜。
支持设fbo滤镜组。
支持前后摄像头快速切换,不会打断推流。
支持后台推流,后台录制视频
美颜滤镜可动态调节磨皮,美白,红润。
兼容GPUImage,一行代码不用修改就可以直接使用GPUImage的滤镜。可参考demo。


关于美颜:

美颜滤镜可动态调节磨皮,美白,红润。你可以调出一个你喜欢的美颜滤镜。


关于性能:

采用相机回调纹理texture,OpenGL渲染后直接把textureID传给编码器的方案,中间没有数据格式转换,没有glReadPixel()函数耗时问题。所以性能较其它方案要好的多。缺点是必须是Android4.3以上。


关于使用:

1.所有常用API都在StreamLiveCameraView类中


 <me.lake.librestreaming.ws.StreamLiveCameraView
android:id="@+id/stream_previewView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

2.初始化推流配置, StreamAVOption类里面有多种参数可配置,如不配置则使用默认值


    /**
* 设置推流参数
*/
public void initLiveConfig() {
mLiveCameraView = (StreamLiveCameraView) findViewById(R.id.stream_previewView);
//参数配置 start
streamAVOption = new StreamAVOption();
streamAVOption.streamUrl = rtmpUrl;
//参数配置 end
mLiveCameraView.init(this, streamAVOption);
mLiveCameraView.addStreamStateListener(resConnectionListener);
//设置滤镜组
LinkedList<BaseHardVideoFilter> files = new LinkedList<>();
files.add(new GPUImageCompatibleFilter(new GPUImageBeautyFilter()));
files.add(new GPUImageCompatibleFilter(new GPUImageAddBlendFilter()));
mLiveCameraView.setHardVideoFilter(new HardVideoGroupFilter(files));
}

3.开始推流录制 具体参考demo:


          case R.id.btn_startStreaming://开始推流
if(!liveCameraView.isStreaming()){
liveCameraView.startStreaming(rtmpUrl);
}
break;
case R.id.btn_stopStreaming://停止推流
if(liveCameraView.isStreaming()){
liveCameraView.stopStreaming();
}
break;
case R.id.btn_startRecord://开始录制
if(!liveCameraView.isRecord()){
liveCameraView.startRecord();
}
break;
case R.id.btn_stopRecord://停止录制
if(liveCameraView.isRecord()){
liveCameraView.stopRecord();
}

关于集成:

方法1.https://github.com/WangShuo1143368701/WSLiveDemo下载后,copy出libWSLive库到你的项目中即可。


方法2.


//Add it in your root build.gradle at the end of repositories:

allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
//Add the dependency
dependencies { compile 'com.github.WangShuo1143368701:WSLiveDemo:v1.0' }







最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台