【音视频19天】直播服务器乱七八糟的收集

rtmp、rtsp、hls流媒体直播服务器搭建的六种方案:https://blog.bfw.wiki/user1/15832056643904300074.html
Github最受欢迎的TOP 10开源RTSP流媒体项目:https://www.jianshu.com/p/9e0cd087eccb
SRS、EasyDarwin、ZLMediaKit、Monibuca对比分析|牛气冲天新年征文:https://juejin.cn/post/6926739029496954888#heading-2
采用FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播:https://blog.youkuaiyun.com/Lemon_D1999/article/details/127422879

RTSP/RTMP/HLS 点播直播对比:https://zhuanlan.zhihu.com/p/323328334

https://xie.infoq.cn/article/57feaf0f349c53f229fd0c1e3
直播服务器 (文末附上学习路线导图)

直播中流媒体数据的传输主要依赖服务器。目前开源的流媒体服务器,有 RED5、CRTMPD、NGINX-RTMP 和 SRS 等。

RED5:最古老的基于 flash 的流媒体服务的开源流媒体服务器。它由 Java 语言编写,使用 rtmp 作为流媒体传输协议,与 FMS 完全兼容;具有流化 flv、MP3 文件,实时录制客户端流为 flv 文件,共享对象,实时视频播放、Remoting 等功能。但由于其技术较为落后,新入场的直播平台都已放弃使用。

CRTMPD:使用 c++语言编写,支持多种 rtmp 协议、IPTV 相关网络协议和移动设备的流媒体服务器。使用单线程异步 socket,在当时处于领先水平,但是当 NGINX 出现后就渐渐淡出大众视野了。

NGINX-RTMP :基于 NGINX 模块,使用 C 语言编写的流媒体服务器,也是目前市场上使用最多的流媒体服务器。伴随着 2012 年 CDN 业务的扩展,直播业务需求暴涨,由于 NGINX-RTMP 中直播点播共用一套服务器,且用户熟悉信任 NGINX;NGINX-RTMP 逐渐处于行业垄断地位。

SRS(Simple Rtmp Sever)是一个国产的流媒体服务器,产品定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。据官网介绍其效率非常高,能达到 NGINX-RTMP 的 3 倍,而且中英文文档各有一份,较为适合国内程序员的开发环境。

Monibuca是一个开源的流媒体服务器开发框架,适用于快速定制化开发流媒体服务器,可以对接CDN厂商,作为回源服务器,也可以自己搭建集群部署环境。丰富的内置插件提供了流媒体服务器的常见功能,例如rtmpserver、http-flv、视频录制、QoS等。除此以外还内置了后台web界面,方便观察服务器运行的状态。也可以自己开发后台管理界面,通过api方式获取服务器的运行信息。Monibuca提供了可供定制化开发的插件机制,可以任意扩展其功能。 Monibuca特点: 高性能 针对流媒体服务器独特的性质进行的优化,充分利用Golang的goroutine的性质对大量的连接的读写进行合理的分配计算资源,以及尽可能的减少内存Copy操作。使用对象池减少Golang的GC时间。 可扩展 流媒体服务器的个性化定制变的更简单,基于Golang语言,开发效率更高,独创的插件机制,可以方便用户定制个性化的功能组合,更高效率的利用服务器资源。插件市场 可视化 功能强大的仪表盘可以直观的看到服务器运行的状态、消耗的资源、以及其他统计信息。用户可以利用控制台对服务器进行配置和控制。 Monibuca安装: 一键安装golang环境和monibuca的demo bash <(curl -s -S -L https://monibuca.com/demo.sh)  对于已经安装好golang环境的 1、go get github.com/langhuihui/monibuca 2、linux下执行:$GOPATH/bin/monibuca windows下执行:%GOPATH%/bin/monibuca 3、启动后,浏览器打开8081端口查看后台界面 4、ffmpeg或者OBS推流到1935端口 5、后台界面上提供直播预览、录制flv、rtsp拉流转发、日志跟踪等功能
### ### UART是否支持全双工通信? UART(通用异步收发器)是一种异步串行通信协议,其通信机制基于两个设备之间的同步机制,包括波特率、数据位、停止位和校验位的定义。数据通过帧传输,每帧包含起始位、数据位、可选的奇偶校验位和停止位。这种通信方式本质上是半双工,即同一时间只能发送或接收数据,不能同时进行双向传输[^1]。 然而,在某些实现中,如C8051F系列微控制器中的UART/USART接口,支持全双工通信。这是因为这些微控制器提供了两个独立的线路进行数据发送(TX)和接收(RX),允许同时进行双向数据传输。此外,这些UART模块还可能包括RTS(请求发送)和CTS(清除发送)信号,用于硬件流控制。这种情况下,虽然通信机制仍然是基于异步串行协议,但通过硬件支持实现了全双工通信功能[^3]。 因此,是否支持全双工通信取决于具体的硬件实现。标准的UART协议不支持全双工通信,但在一些微控制器中,如C8051F系列,其UART模块设计支持全双工通信[^3]。 ### ### UART全双工通信的实现方式 在支持全双工通信的UART实现中,TX和RX线路是完全独立的。这意味着发送和接收操作可以在同一时间进行,而不会互相干扰。例如,在C8051F系列微控制器中,UART模块支持多种波特率生成方式,并可以配置不同的数据位、停止位和奇偶校验位,使得UART可以各种外设兼容。这种灵活性使得UART能够在特定硬件平台上实现高效的全双工通信。 ### ### 其他通信协议的对比 UART相比,SPI(Serial Peripheral Interface)和I2C(Inter-Integrated Circuit)等协议在设计上就支持全双工通信。SPI通过使用独立的时钟线(SCLK)和数据线(MOSI和MISO)实现真正的全双工通信,允许同时发送和接收数据。而I2C虽然不支持全双工通信,但可以通过双向数据线(SDA)和时钟线(SCL)实现高效的半双工通信[^2]。 ### ### 示例代码:UART全双工通信 以下是一个简单的UART通信接口代码示例,展示了如何在C8051F系列微控制器中初始化和使用UART进行全双工通信: ```c #include <C8051F020.h> // 包含针对C8051F020的头文件 void UART_Init(void) { SCON0 = 0x50; // 设置为模式1,8位数据,可变波特率 TMOD |= 0x20; // 使用定时器1作为波特率发生器 TH1 = 0xFD; // 载入波特率发生器初值 TR1 = 1; // 启动定时器1 ES0 = 1; // 使能串口中断 EA = 1; // 允许全局中断 } void UART_SendChar(char ch) { SBUF0 = ch; // 将字符写入到串行缓冲寄存器 while (!TI); // 等待发送完成 TI = 0; // 清除发送完成标志 } char UART_ReceiveChar(void) { while (!RI); // 等待接收到数据 RI = 0; // 清除接收完成标志 return SBUF0; // 返回接收到的数据 } void main(void) { UART_Init(); // 初始化串口 while (1) { UART_SendChar('A'); // 发送字符 UART_ReceiveChar(); // 接收字符 } } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值