关于直播类app中的推流、拉流技术

关于直播类app中的推流、拉流技术
from:https://blog.csdn.net/lzllzllhl/article/details/80249069

图像处理:iOS端一般会用到GPUImage处理图像,安卓端一般使用Google的grafika(图形处理库)
推拉流:EasyDarwin

推流:【iOS和Android】ijkPlayer 开源框架(bilibili的)(集成了FFmpeg,iOS的播放器也基于此) 斗鱼直播也基于此实现
编码标准:H.265 H.264 VP8 VP9 音频:AAC Opus、
传输协议:RTMP RTSP HLS

拉流:LFLiveKit 支持H264和AAC编码,支持美颜和水印效果,传输协议是rtmp,支持弱网丢帧,记载网络环境差的情况下,为了保证视频的通常,会自动丢弃个别帧

注意:RTMP协议中,视频必须是H264编码,音频必须是AAC或MP3编码,且多以flv格式封包。
缺点:RTMP有着一个最大的不足——不支持浏览器【2017年的信息,当下并未友好支持 需要费一番功夫】

浏览器:可考虑 WebRTC 协议

安卓端:使用javacv来实现,最终也是用过ffmpeg来进行编码和推流,javacv实现到可以直接接收摄像头的帧数据
需要自己实现的代码只是打开摄像头,写一个SurfaceView进行预览,然后实现PreviewCallback将摄像头每一帧的数据交给javacv即可

使用Android自带的编码工具,可实现硬编码,这里有一个国内大神开源的封装很完善的的库yasea,第一种方法需要实现的Camera采集部分也一起封装好了,进行一些简单配置就可以实现编码推流,并且yasea目前已经直接支持摄像头的热切换,和各种滤镜效果

安卓端播放器:vitamio、支持几乎所有常见的的视频格式和流媒体协议

安卓端流程
一:使用yaesa进行摄像头采集、编码然后向srs服务器rtmp推流
二:部署srs流媒体服务器
三:使用vitamio取流播放

你可能感兴趣的:(拓展)