android 直播推流sdk,Android——直播推流SDK

博主分享了他们经过半年迭代、百万用户验证的境外直播平台SDK,该SDK支持视频录制、推流、实时截帧、镜像、美颜等功能,且性能优异。它兼容GPUImage滤镜,支持动态设置码率、帧率,前后摄像头快速切换,并能在后台推流和录制。项目已在GitHub开源,提供详细的使用示例和API,还提供了音视频交流群号供学习交流。
摘要由CSDN通过智能技术生成

概述:

好像有三个月没有更新博客了,年前实在是忙的累成狗啊。。。本想直播功能稳定了就没那么多事了,没想到又要搞魔法短视频功能,马丹,短视频玩成了花啊,撸起袖子干。

现在把我们项目中的直播SDK开源出来,我们是境外直播平台,百万用户,经过半年迭代,SDK已经相当稳定,大家可以放心使用。https://github.com/WangShuo1143368701/WSLiveDemo

这个sdk是我根据这个librestreaming修修改改出来的,由于改了太多的代码,用法已经不一样了。

特性:

支持视频录制和推流,录制视频推流可以同时进行

支持推流过程中实时截帧功能

支持推流过程中实时镜像功能,不会打断推流

支持设置关键帧间隔gop

支持动态设置码率,帧率

支持分开设置预览分辨率,编码的分辨率

支持gpu滤镜,并可以通过opengles绘制图像纹理来自定义滤镜。

支持设fbo滤镜组。

支持设置水印

支持前后摄像头快速切换,不会打断推流。

支持后台推流,后台录制视频

美颜滤镜可动态调节磨皮,美白,红润。

兼容GPUImage,一行代码不用修改就可以直接使用GPUImage的滤镜。可参考demo。

关于美颜:

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

关于截帧,镜像:

推流过程中可以实时截帧。

推流过程中可以实时调节镜像,不会打断推流。可以分别调节预览镜像,推流镜像。

关于性能:

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

关于使用:

1.所有常用API都在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 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();

}

关于集成:

方法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 compile 'com.github.WangShuo1143368701:WSLiveDemo:v1.7' }

关于学习:

欢迎加入音视频交流群:364886309

一: 使用javacv来实现,最终也是用过ffmpeg来进行编码和推流,javacv实现到可以直接接收摄像头的帧数据 需要自己实现的代码只是打开摄像头,写一个SurfaceView进行预览,然后实现PreviewCallback将摄像头每一帧的数据交给javacv即可 javacv地址:https://github.com/bytedeco/javacv demo地址:https://github.com/beautifulSoup/RtmpRecoder/tree/master 二: 使用Android自带的编码工具,可实现硬编码,这里有一个国内大神开源的封装很完善的的库yasea,第一种方法需要实现的Camera采集部分也一起封装好了,进行一些简单配置就可以实现编码推流,并且yasea目前已经直接支持摄像头的热切换,和各种滤镜效果 yasea地址(内置demo):https://github.com/begeekmyfriend/yasea 服务器 流媒体服务器我用的是srs,项目地址:https://github.com/ossrs/srs 关于srs的编译、配置、部署、在官方wiki中已经写的很详细了,并且srs同样是国内开发人员开源的项目,有全中文的文档,看起来很方便 这里有最基本的简单编译部署过程 Android直播实现(二)srs流媒体服务器部署 播放器 android端的播放使用vitamio,还是国内的开源播放器,是不是感觉国内的前辈们越来越屌了^~^! vitamio支持几乎所有常见的的视频格式和流媒体协议 vitamio地址(内置demo):https://github.com/yixia/VitamioBundle 这里使用的是yaesa库,先介绍一下直播实现的流程:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值