当前位置: 首页 > article >正文

Android——直播推流SDK

概述:

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

之前写过一篇ffmpeg实战教程(十一)手把手教你实现直播功能,不依赖第三方SDK
是用ffmpeg实现的推流。

特性:

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

关于美颜:

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

关于截帧,镜像:

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

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

关于性能:

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

关于使用:

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

 <me.lake.librestreaming.ws.StreamLiveCameraViewandroid: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;//参数配置 endmLiveCameraView.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 dependencydependencies { compile  compile 'com.github.WangShuo1143368701:WSLiveDemo:v1.7' }

关于学习:

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

http://www.lryc.cn/news/2413335.html

相关文章:

  • 华为鸿蒙2.0系统官网在哪?鸿蒙2.0系统申请入口及适配机型图文介绍
  • (转)用inner join 联结access多个表的用法
  • linux更换域名全站301,网站换域名必看,全站301重定向代码分享
  • 2014台州学院ACM集训队寒假练习赛2
  • AF_INET和PF_INET的细微不同
  • github emoji 表情列表
  • QQFM 中转站(囧转站)OOXX V1.1 by wy811007 (附SkinH_Net的使用) 程序失效 更新1.3版 未发布
  • C语言学习(小白)
  • 中华吸血鬼分析
  • Android入门-新手如何成功创建一个Android小应用(1)
  • 电商系统架构设计浅析
  • 【HTML5期末大作业】犬夜叉动漫网站设计--动漫网站设计
  • 思科路由器忘记密码怎么办?
  • 《放下就是快乐》之体会一
  • NetworkLocation for WES7
  • 国内最大的两个网盘(rayfile和纳米盘)神秘资源下载搜索技巧
  • google发布IE插件Chrome Frame(google浏览器框架)正式版
  • 科创50大盘指数怎么买?
  • 计算机键盘练习,电脑键盘指法练习
  • MyEclipse简单配置教程及配置Tomcat
  • Python 有什么作用?
  • 10款神级安卓App,99%的人都不知道!
  • 解决linux下curl扩展的方法
  • 2015年维多利亚的秘密新晋十位天使
  • 仿京东商城html网页源码
  • 什么是直线度 直线度测量方法
  • 2022年重庆交通大学自考毕业证书申请流程
  • 利用百度Echart库,完成简单迁徙图
  • 软件实施流程(八大阶段)——软件实施工程师
  • uniapp安全加固360加固