快速搭建直播服务大体架构srs+ffmpeg+第三方(阿里云,腾讯云等),因为不是专门做直播平台,所以借助第三方平台(服务器,带宽,cdn可以省不少心)。当然如果你想自建一个视频直播平台也是可以的~~
srs用来接收从手机客户端推来的rtmp流,ffmpeg用来对视频进行处理,比如增加logo或滤镜等,在各种技术尝试中,走过不少弯路,接收流方面还使用过netty,nginx-rtmp,流处理方面使用过javaCV,但效果有些不理想.,java太吃内存,cpu。
下面我们来看一下大致的流程吧
srs的文档简单全面,附上git地址
https://github.com/ossrs/srs/wiki/v2_CN_Home
![](/upload/ad_content/xuanchuantu-1.jpg)
第一步,获取SRS。
git clone https://github.com/ossrs/srs
cd srs/trunk
或者使用git更新已有代码:
git pull
第二步,编译SRS。
./configure && make
第三步,编写SRS配置文件。
将以下内容保存为文件,譬如conf/rtmp.conf,服务器启动时指定该配置文件(srs的conf文件夹有该文件)。
# conf/rtmp.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
}
第四步,启动SRS。
./objs/srs -c conf/rtmp.conf
以上是基本配置,
安装成功后文件路径如下
下面是完整配置
listen 1935;
max_connections 1000;
daemon off;
#srs_log_tank console;
srs_log_tank file;
srs_log_file ./objs/srs.log;
http_api {
enabled on;
listen 8085;
crossdomain on;
}
vhost test.xx.com {
dvr {
enabled on;
#dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].flv;
dvr_path ./objs/nginx/html/[stream]/[timestamp].flv;
dvr_plan session;
dvr_duration 30;
dvr_wait_keyframe on;
}
http_hooks {
enabled on;
on_connect http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ;
on_close http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ;
on_publish http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ;
on_unpublish http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ;
on_dvr http://127.0.0.1:8085/api/v1/dvrs;
#on_play http://127.0.0.1:8085/api/v1/sessions ;
#on_stop http://127.0.0.1:8085/api/v1/sessions ;
}
}
vhost后面要写对应的推流地址或者ip.
http_api 与vhost中的http_hooks为一组配置,当srs接收,停止到推流时会调用配置文件中所填地址,并且将各种参数包括streamId,appid传到后台中。
hvhost中的dvr功能是本地录制,dvr_plan有多种录制计划
session:按照session来关闭flv文件,即编码器停止推流时关闭flv,整个session录制为一个flv。
segment:按照时间分段录制,flv文件时长配置为dvr_duration和dvr_wait_keyframe。注意:若不按关键帧切flv(即dvr_wait_keyframe配置为off),所以会导致后面的flv启动时会花屏。
至此srs服务器的搭建结束。
手机直播平台的搭建;1,采集,iOS是比较简单的,Android则要做些机型适配工作,PC最麻烦各种奇葩摄像头驱动,出了问题特别不好处理,建议放弃PC只支持手机主播,目前几个新进的直播平台都是这样的。
2,前处理,现在直播美颜已经是标配了,80%的主播没有美颜根本没法看。美颜算法需要用到GPU编程,需要懂图像处理算法的人,没有好的开源实现,要自己参考论文去研究。难点不在于美颜效果,而在于GPU占用和美颜效果之间找平衡。GPU虽然性能好,但是也是有功耗的,GPU占用太高会导致手机发烫,而手机发烫会导致摄像头采集掉帧,iPhone6尤其明显,因为iPhone6的CPU和前置摄像头很近。
3,编码,肯定要采用硬编码,软编码720p完全没希望,勉强能编码也会导致CPU过热烫到摄像头。硬编码兼容性又是一个大坑,android上要有人去填。编码要在分辨率,帧率,码率,GOP等参数设计上找到好平衡点。
4,传输,自己做不现实,交给CDN服务商吧,也就是贵了点,相信有志于做直播平台改变世界的你不差钱。假设2W PCU大约每月带宽费用100万左右,因为清晰流畅的720p要1.5mbps左右。CDN只提供了带宽和服务器间传输,发送和接收端的网络连接抖动缓冲还是要自己写的。不想要卡顿,必然要加大缓冲,会导致延迟高,延迟高影响互动性,要做权衡。
要想用于推流还必须把音视频数据使用传输协议进行封装,变成流数据。常用的流传输协议有RTSP、RTMP、HLS等,使用RTMP传输的延时通常在1–3秒,对于移动直播这种实时性要求非常高的场景,RTMP也成为移动直播中最常用的流传输协议。最后通过一定的Qos算法将音视频流数据推送到网络断,通过CDN进行分发。在直播场景中,网络不稳定是非常常见的,这时就需要Qos来保证网络不稳情况下的用户观看直播的体验,通常是通过主播端和播放端设置缓存,让码率均匀。另外,针对实时变化的网络状况,动态码率和帧率也是最常用的策略。
当然,在网络传输方面全部自己来做基本不现实,找提供推流服务的CDN服务商提供解决方案是最好的选择。据了解,阿里云是国内唯一能自研CDN缓存服务器的厂商,性能非常有保障。当然,大多数直播平台都会同时接入多个视频云服务提供商,这样可以做拉流线路互备,对推流后视频集群再进行优化也可提高直播的流畅性和稳定性。
免费直播编码推流软件现代生活已经离不开互联网,离不开软件了。 这说法毫不夸张。 比如手机上各种
APP眼花缭乱 ,各种行业, 各种功能, 各种Logo, 各种的各种。 没有良好的整理力,是真的不好意思让别人看到啊。 这些功能各异的
APP程序大多数是免费
APP。今天创新互联来谈谈关于直播编码和推流的免费软件。推荐四款笔者用过的直播编码推流软件,这些免费软件各有功能侧重点。不过最终这四款能脱颖而出,主要是满足了以下两个基本功能:
1) 支持H264编码方式,支持MP3或者AAC编码。H.264是视频编码方式,而MP3
与AAC是音频编码方式。
H264:又称AVC(高级视频编码),是当前选的编码标准。
MP3:是音频编码标准,大家都熟悉,不多说。
AAC:即高级音频编码,比MP3音质还好,是做直播的选,它有AAC-LC与HE-AAC两个
档次,AAC-LC是地复杂度的AAC,兼容性好,HE-AAC是高效能AAC,压缩度高,音质与
AAC-LC相当。
2) 支持RTMP推流。
RTMP:是实时消息协议的简称,是由Adobe公司开发,虽然没有变成国际标准,但它是实
际上的工业标准,无论哪个公司,只要做直播,就得用它,当今的手机直播
APP推流所用
的协议都是RTMP协议。
四款免费推流软件分别为:
1. Adobe Flash Media Encoder
2. Open Broadcaster Software
3. 800Li Education Podcast
4. iAVcast
1)Flash Media Live Encoder 3.2
由著名的Adobe公司出品,值得信赖,Adobe好长时间已经停止更新了,时代比较久远了,但仍旧不失为一个好用的编码器软件。
2)Open Broadcaster Software
开源并且免费的直播软件,是当前非常流行的直播软件,很多游戏直播就采用它,例如斗鱼直播。
3)800Li Education Podcast
免费的抓桌面直播和录屏软件。不可多得的免费的直播编码软件。有画中画功能及画笔标注功能,对于目前在线教育直播不失为一个好的选择。 小巧、好用。免费但不开源。
4)iAVCast(串流直播)
国内串流直播团队开发的免费直播软件,免费但不开源。
做直播除了需要直播编码推流软件之外,流媒体服务器系统必不可少。 笔者简单列一下可以使用的直播系统,选择开源的实时直播软件可以考虑Red 5, 选择国外大品牌的可以考虑Adobe Media Server, 选择有flash P2P功能的可以选择800Li Media Server。
文章标题:视频直播平台网站搭建思路
本文网址:https://www.cdcxhl.com/news/146364.html
成都网站建设公司_创新互联,为您提供App设计、响应式网站、网站导航、用户体验、网站设计、域名注册
广告
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源:
创新互联