背景:

最近有个朋友的APP需要在国外搭建一个直播服务器,因为他们的主播在韩国(主播主要是记者),而观众主要在国内,叫我帮忙给他们开发一个直播服务器。

目前开源的直播服务程序有:SRS,Nginx-rtmp;如果是做开发的同学应该有所了解,SRS是基于C++写的,Nginx-rtmp模块是Ngxin的第三方C模块。一开始我是直接部署SRS/Ngxin-rtmp 到我的韩国的服务器,结果直播rtmp或者hls都不理想,经常卡顿,究其原因,还是因为这些协议都是基于TCP,一旦遇到丢包啥的,效果就非常差。

这里,我主要介绍下外海直播常用的场景,以及基于KCP协议的国外直播服务器。

一、海外直播服务器的常用场景:

1)、主播和观众都在国内

适用于客户和观众都在国内,但需要把直播服务器架在海外的客户。直播服务器需要支持传统协议:RTMP、HLS、HTTP-FLV;应用场景如下图所示:

2)、主播在国外、观众在国内

适用主播在国外,观众在国内,但需要把直播服务器架在海外的客户。

三、基于KCP协议的海外直播服务器

为了给朋友搭建一个效果较好的海外直播服务器,我特意学习了一遍KCP协议,帮忙写了APP端的SDK。最终效果还是很棒。我介绍下我开发的流媒体服务的功能:

采用KCP协议作为传输层,具有超强的弱网传输能力和超低的延迟

支持NMS服务之间通过kmp协议进行中继转发

支持推流与播放

SDK版Andorid、IOS全系支持

空一点我拍个视频出来给大家看下效果。大家如果想要讨论技术底层的话可以加WX:stefan1240。貌似只有KCP协议才能达到一个比较好的效果,别的都不太行。

附录:KCP协议

type segment struct {

conv uint32

// 发送端与接收端通信时的匹配数字,发送端发送的数据包中此值与接收端的conv值匹配一致时,接收端才会接受此包

cmd uint8

// 改数据包的协议号,协议号有以下枚举:

// IKCP_CMD_PUSH = 81 // cmd: push data,数据包

// IKCP_CMD_ACK = 82 // cmd: ack,确认包,告诉对方收到数据包

// IKCP_CMD_WASK = 83 // cmd: window probe (ask),询问远端滑动窗口的大小

// IKCP_CMD_WINS = 84 // cmd: window size (tell),告知远端滑动窗口的大小

frg uint8

// 分帧号,由于udp传输有数据包大小的限制,因此,应用层一个数据包可能被分为多个udp包

制自己接下来发送数据的大小wnd uint16

// 滑动窗口的大小

// 当Segment做为发送数据时,此wnd为本机滑动窗口大小,用于告诉远端自己窗口剩余多少

// 当Segment做为接收到数据时,此wnd为远端滑动窗口大小,本机知道了远端窗口剩余多少后,可以控

ts uint32

// timestamp , 当前Segment发送时的时间戳

sn uint32

// Sequence Number,Segment数据包的编号

una uint32

// una即unacknowledged,未确认数据包的编号,表示此编号前的所有包都已收到了。

rto uint32

// rto即Retransmission TimeOut,即超时重传时间,在发送出去时根据之前的网络情况进行设置

xmit uint32

// 基本类似于Segment发送的次数,每发送一次会自加一。用于统计该Segment被重传了几次,用于参考,进行调节

resendts uint32

// 即resend timestamp , 指定重发的时间戳,当当前时间超过这个时间时,则再重发一次这个包。

fastack uint32

// 用于以数据驱动的快速重传机制;

// len uint32 c++版本有数据包的数据长度,go版本无此字段

data []byte}

// 协议数据的具体内容

国外服务器直播网站,海外直播服务器搭建相关推荐

  1. 云服务器架设网站教程_服务器架设网站教程

    服务器架设网站教程 云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越.稳定可靠.弹性扩展的IaaS(Infrastructure as a Service) ...

  2. 自己搭建网站需要租服务器吗,网站空间租用和自己搭建服务器

    网站空间租用和自己搭建服务器 内容精选 换一换 非联通用户请查看设备接入服务.应用可以理解为在物联网平台中为用户的业务划分一个项目空间,当用户在开发中心.线下环境里完成应用服务器侧的开发.物联网平台侧 ...

  3. 买服务器挂网站吗,云服务器 挂网站吗

    云服务器 挂网站吗 内容精选 换一换 购买服务及配置特性时,操作步骤中未框选的配置项请保持默认值.申请服务时,未开通企业管理的用户页面无"企业项目"参数项,无需进行配置.如需开通企 ...

  4. 2008服务器多网站设置,win2008服务器iis网站设置

    win2008服务器iis网站设置 内容精选 换一换 客户端IP指的是访问者(用户设备)的IP地址.在Web应用开发中,通常需要获取客户端真实的IP地址.例如,投票系统为了防止刷票,需要通过获取客户端 ...

  5. ruby网站部署到服务器,ruby网站部署到服务器

    ruby网站部署到服务器 内容精选 换一换 本章节通过示例项目"超级冷笑话网站"介绍如何使用DevCloud开发基于C#语言的Web应用.项目名称:超级冷笑话网站.项目简介:&qu ...

  6. 换服务器影响网站排名,更换服务器对网站排名有影响吗?-百度权威解答

    更换服务器对网站排名的影响 原则上是不会的.除非-新换的服务器太糟糕,三天两头访问失败,或者服务器从国内换到国外,动辄被和谐,诸如此类的"硬件"问题. 百度对网页标题长度有没有限制 ...

  7. linuxweb服务器域名网站,linux web服务器目录

    linux web服务器目录 内容精选 换一换 在FusionInsight Manager软件安装及使用过程中,针对Tomcat基于开源做了如下功能增强:升级Tomcat版本为官方稳定版本.设置应用 ...

  8. 网站空间跟服务器区别,网站空间和服务器的区别有哪些?

    对于很多新手站长来说,可能并不清楚网站空间和服务器的区别.很多朋友经常会说买台主机来建站,真正问他是买网站空间还是买服务器,可能一时又说不上来,对这两者的概念很是模糊. 很多人以为网站空间就是服务器, ...

  9. DSVS7050签名服务器的网站,吉大正元数字签名服务器-安装部署手册(COM版 VCTK_S接口)2.1.1.doc...

    吉大正元数字签名服务器-安装部署手册(COM版 VCTK_S接口)2.1.1 数字签名服务器v2.1.1 安装部署手册 (VSTK接口 COM版) V2.1.1 长 春 吉 大 正 元 信 息 技 术 ...

  10. 使用服务器测量网站性能,使用服务器时序测量网站性能

    Server Timing标头提供了一种离散且方便的方式,可以将后端服务器性能计时与浏览器中的开发人员工具进行通信.通过向应用程序添加计时信息,可以在一个位置监控后端和前端性能. 在进行任何类型的性能 ...

最新文章

  1. Linux中配置bochs
  2. Python 卡方检验、克雷姆值
  3. ubuntu 16.04 安装mysql
  4. 浅谈https(创建、传输、断开)
  5. Maven的pom报错的解决方法
  6. 原子性和一致性的区别是什么?
  7. ppt计算机控制系统实例,第部分计算机控制系统的应用实例.ppt
  8. vb mysql登录界面_vb.net 简单上机登陆(面向过程思维)
  9. mysql全文检索 中文_mysql全文索引不支持中文的解决方案
  10. Ubuntu ssh-keygen远程登录
  11. Linux 配置iSCSI Initiator
  12. 考研日语线上笔记(八):完型易混易考知识点梳理篇
  13. 【自然语言处理】【ChatGPT系列】大模型的涌现能力
  14. 探究pytorch model.eval()测试效果远差于model.train()
  15. JDBC的URL详解
  16. 零基础 Python学习
  17. 花半年的时间储备自己
  18. 我是怎么从安卓到php再成为前端开发工程师的
  19. C语言函数及分文件编程
  20. 中国残障人童话爱情电影剧本《奇缘奇恋》招募投资人

热门文章

  1. 有监督学习与无监督学习的几大区别
  2. excel添加水印及设置打印参数poi
  3. build from source 安装 PyTorch及很多坑
  4. 论WMS系统的未来前景
  5. java实现生成pdf_Java 生成 PDF 文档
  6. 一定要计算机专业才能进华为吗,想去华为一定要报考这三所大学
  7. eclipse护眼颜色
  8. 蓄电池充电方法和一张原理图
  9. 十年比肩?看国产数据库如何突出重围!| 新程序员
  10. VM虚拟机配置动态ip和静态ip访问