重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
直播SDK,只需4行代码即可轻松接入,从主播方的声音、图像采集开始,然后进行美颜、降噪等预处理,接下来到编码,再经过 CDN等形式的传输到达服务器端,处理后解码,接收方就可以看到音视频内容。如果要咨询推流直播,推荐欢拓云直播平台,这个直播平台最重要是全方位挖掘直播关键数据,让直播运营优化有据可依。点击看看推流直播怎么弄
白沙黎族网站建设公司创新互联建站,白沙黎族网站设计制作,有大型网站制作公司丰富经验。已为白沙黎族近1000家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的白沙黎族做网站的公司定做!
直播SDK应用场景有:
单向直播:
如传统单向秀场直播,主播通过PC或移动设备将音视频推流,观众拉流观看,文字聊天,礼物等互动,这也是目前大多数直播平台支持的模式。也适用于演播室、现场活动直播、发布会等同时只有一路(或几路的)直播流直播活动。
连麦互动直播:
连麦场景互动性更强一些,观众和主播或主播和主播之间可以进行1对 1、1对多进行音视频实时通话比如聊天、游戏开黑、PK等,观众端可同时观看到多位主播之间的互动。欢拓云直播多人连麦移动端支持16路。
想要了解更多关于推流直播的相关信息,推荐咨询欢拓云直播平台。欢拓一直致力于提供行业领先的互动直播SaaS云服务,更是获得了国家高新技术企业和科技创新小巨人企业认证;用强大技术、用心服务,为客户打造更好推流直播平台。
推流就是把采集阶段封包好的内容传输到服务器的过程。就相当于你的内容要先上传服务器,然后服务器那边才能传输给观众。跟上传有点类似,只不过是实时上传。
怎么推流?这里涉及到一个很强大的东西ffmpeg,它是可以用来记录、转换数字音视频,并将其转化为流的开源软件,通过它可以进行视频的采集封装成流,并推送到流媒体服务器。
例如使用ffmpeg进行mac本地摄像头实时推流到nodeMediaServer:
ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 -i 0:0 -vcodec libx264 -preset veryfast -f flv
复制代码
这里涉及到ffmpeg工具,上面的参数不逐一解释,只是最重要的几个:
-vide_size 表示要输出的视频画面的分辨率尺寸
-f 后面的参数 flv表述输出的格式,再后面的地址 表示想要输出的地址,这个地址的stream.flv可以按照自己需求随意修改,保持后缀是你需要的flv格式即可
另外一种常用的场景是直接拉去摄像头设备中的视频流数据,这种方式,nodeMediaServer也支持,只需要在管理后台配置对应的摄像头的配置信息,就可以进行推流操作了。这些配置信息包括ip,登录用户名和密码等。
最近需要做实时录屏并把视频推流到RTSP服务器,具体流程是抓取屏幕内容(bitmap),并把bitmap转化为YUV,接着把YUV编码成H264,再把H264码流推到RTSP服务器;把采集到的PCM编码为AAC,再把AAC推流至RTSP服务器。
看了雷神的一篇文章: 最简单的基于FFmpeg的推流器(以推送RTMP为例) ,他是把本地的视频文件推流至RTMP服务器,并不符合我的要求。
接着我找到另一篇文章: ffmpeg实现H264压缩并且推流至RTSP ,这篇文章只有图像编码,并没有音频编码,并且推流之后并没有播放成功。
我综合上面两位大佬的思路,和查找一些资料实现了这个功能。
RTSP服务器使用的是 HappyTime 的免费试用版本。
我抓到的bitmap是BGRA格式的,所以使用的图像格式是 AV_PIX_FMT_BGRA , cropImage 是含有rgba图像的数组
调用:
由于我是实时抓取的屏幕, frame_yuv-pts 设为当前的时间戳,以保证能正常播放。
调用:
调用:
其中pcm_buff是包含pcm数据的数组
使用udp传输时传到1400多帧就断开链接了,原因不明,所以改用使用tcp协议传输
延迟有1.5秒左右
参考:
推流工具OBS Studio
首先在网上下载该工具.然后安装.然后按照如下步骤操作
打开软件点击设置
然后按照如下顺序,先点击串流--服务选择自定义--填写流服务地址
点击下面的加号,选择你想推到服务器的视频文件
然后点击推流,致此就行了
拉流软件VLC media player
首先下载该软件,并打开.
点击媒体,然后选择打开网络串流,填写流服务地址,点击播放.支持刚才推到流服务上的视频,就可以在这里播放了简单的
如无法正常展示请点击“”一键反馈“
内容不错,鼓励一下~
javacv基于ffmpeg和opencv等开源音视频、图像处理库,可以支持各种协议的推流,拉流,实时图像处理,javacv可以解决你的问题,具体请参考javacv教程专栏:网页链接
你要了解用回退流做什么。。。
回退就是为了下次读取的时候再读回来。。
比如aaa chartset='utf8' 解析输入流时 判断chartset='utf8'时 按照utf8解析。。 但是输入流读到utf8的时候前面的字符已经读过了。read()智能继续往下读。这时可以把之前读过的都回退。。
重新读所有的字符。。。。。
大概就是这么个用法吧。。