我试图找出流式传输视频的最佳方式,而且我一直在选择我的技术堆栈。最终我想要的是尽可能高效地流式传输视频(现在它是严格的h264流媒体)。我是流媒体视频的新手,很难选择传输协议。我想实现一种流媒体服务,其中数据包丢失优于延迟,我可以使用哪种最佳传输协议?
我一直在使用RTMP,但仍然无法通过50mbit wifi连接获得720p的延迟小于30秒。我无法在传输协议之间找到任何性能比较,因此要么我还没有找到正确的位置,要么在没有指定有关被传输数据的信息的情况下不能进行这样的比较。无论如何,任何人都可以对这个问题有所了解吗?
我不知道它是否有任何区别,但我使用的是基于NGINX的媒体流服务器,而且我对媒体服务器的任何其他建议持开放态度。
由于
答案 0 :(得分:3)
对于低延迟,您可以选择RTP / RTSP等旨在实时的协议。现在,如果您想进一步减少延迟 - 关闭H.264编码器上的B帧。
WebRTC可能是另一种选择。
答案 1 :(得分:0)
A)RTMP
缺点:
1)对于CDN,由于它在没有缓存的情况下工作,因此成本很高。
2)从安全性的角度来看,RTMP Encrypted存在一些缺陷,因为它容易受到中间人攻击。 RTMP工具包 - RTMPDump可以轻松下载RTMP流。
3)RTMP以视频流的形式传输视频,它永远不会提前加载,慢速连接上的观看者可能会在等待文件的其余部分流式传输时遇到一些缓冲。
4)你只能将rtmp用于Flash插件。
5)RTMP仅适用于1935端口(被大多数公司阻止)。
B)HLS(来自Apple)自适应流媒体
可与直播+存储视频流一起使用
缺点: 这取决于平台(仅适用于IOS)
C)渐进/伪流
在请求之前以块的形式下载视频。
平台无关。
支持所有视频格式并通过http协议提供。
使用预转码编码视频与自适应流媒体配合使用。
** Nginx支持以上所有方法,ngx_http_mp4_module