Android——直播推流SDK

概述:

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

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

特性:

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

关于美颜:

美颜滤镜可动态调节磨皮&#x

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
一: 使用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库,先介绍一下直播实现的流程:
在uniapp中实现H5直播推流,可以使用WebRTC技术。WebRTC(Web Real-Time Communication)是一种支持浏览器之间实时音视频通信的开放标准。下面是一些基本步骤: 1. 获取用户媒体设备的权限:使用`getUserMedia`方法获取用户的摄像头和麦克风权限。 2. 创建视频元素:在HTML中创建一个`<video>`元素,用于显示摄像头的视频流。 3. 获取视频流:使用`getUserMedia`方法获取视频流,并将它绑定到视频元素上。 4. 创建RTC连接:使用`RTCPeerConnection`对象创建一个与服务器的连接。 5. 添加视频流到连接中:通过调用`addTrack`方法,将视频流添加到RTC连接中。 6. 创建数据通道:使用`createDataChannel`方法创建一个用于发送数据的通道。 7. 发送数据:通过数据通道发送数据。 8. 连接服务器:通过调用`createOffer`方法,创建一个包含本地SDP描述的offer,并通过WebSocket将其发送给服务器。 9. 处理服务器回应:服务器将返回一个包含对等连接信息的应答。使用应答中的SDP描述设置远程描述,并通过调用`setRemoteDescription`方法处理它。 10. 交换ICE候选者:通过监听`onicecandidate`事件,获取ICE候选者并发送给服务器。 11. 设置远程候选者:通过调用`addIceCandidate`方法将服务器传递的ICE候选者添加到RTC连接中。 12. 建立P2P连接:通过监听`ontrack`事件,获取远程视频流,并将其绑定到另一个`<video>`元素上,从而建立P2P连接。 请注意,WebRTC在不同的浏览器中的实现可能存在一些差异,因此需要进行一些浏览器兼容性的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值