-
-
Notifications
You must be signed in to change notification settings - Fork 5.4k
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Development direction: SRS4 is on the way... #1525
Comments
Can srs3 be used in production now?
|
SRS3 is currently in alpha-4, and it will be available for production use once it reaches beta stage.
|
The milestone plan has almost covered everything, and there are no new expected abilities to propose. If used for production, stability should be the most important indicator. I hope stability can be further improved. Additionally, I would like to give you a thumbs up for your efforts. This project is a great work. 👍
|
Don't you plan to support RTSP? For example: input RTSP and output RTMP/RTSP.
|
The milestone plan is already comprehensive, and everything I wanted to say is included in it.
|
|
Webrtc is essential for streaming via browser. Rtmp without flash doesn't work well via browser (ex. I can't publish streaming). |
@ciaoamigoschat Agreed. I think RTC is one of the next extreme important things for live streaming. And I am sure SRS will support WebRTC in future, mabye in SRS4 or SRS5, it depends on how many time I have for working on this project, it also depends on whether it's stable enough to enable us to add more big/huge features like this. |
This is the right time to implement webrtc. Many sites are abandoning flash and looking for a viable alternative. |
I wish we could support the conversion of WebRTC streams, so that we can play them directly on mobile devices. It would be more real-time compared to HLS.
|
WebRTC is mainly used natively on mobile devices, and it may not be readily available for use on mobile web pages. It is primarily stable on PCs, but it can also be integrated into native mobile applications.
|
QUIC should be supported
|
|
You are losing sight of the problem. |
As a complete novice in the field of live streaming, video processing, and streaming media, my expectations for SRS are "plug-and-play" and "enterprise-level application stability". I used SRS2 before and encountered many problems during compilation. It was only when I used an "unofficial" Docker image that I was able to partially solve the "plug-and-play" issue. Of course, now that SRS has provided an official Docker image, I immediately switched to the official one. As for stability, as it was my first attempt to use a streaming media solution for real-time access, I encountered many issues during the process. However, as long as the infrastructure (such as the network) is sufficiently reliable, I have not observed any "unstable" situations, which exceeded my expectations. I am very grateful to SRS for this. Lastly, regarding the application scenario, the cameras are distributed in independent network environments in 20 cities. They are connected to the public cloud network through a VPN and ffmpeg is used to pull the camera's RTSP stream according to policies, and then push it to the SRS server in the public cloud for distribution.
|
Thank you for your recognition of SRS and sharing the application scenario, which is important for everyone. Docker is actually a mature open-source solution. It was through continuous learning that I realized the difference between Docker and installation packages, and I will continue to improve myself to ultimately improve the quality of the SRS open-source project. Open-source is a closed loop of sharing and improvement. Everyone's feedback, whether it's a problem or a thumbs up, a solution or a pull request, an idea or a suggestion, can influence the entire community. The whole open-source community is like a big melting pot, and each of our participation will make this flame burn even brighter. Welcome everyone to join in, learn from each other, and progress together~
|
ST may be replaced with https://github.com/tencent/libco, which is with Apache License. |
@charlestamz I heard wechat libco before and I will do some research. We do need a new coroutine library to resolve the license issue, it doesn't mater whether it's wrote by ourself or others like libco. |
I roughly looked at libco, and I cannot express complex ideas in English yet, so I will continue in Chinese:
I will look into the details when I have time. I will try using this library, examine the source code, and debug it. I am relatively familiar with the previous implementation by ST and have done complete debugging on it.
|
I compared bsnes/libco and tencent/libco and found that the code differences are quite significant. If it is Apache License, it should be usable.
|
https://github.com/AirenSoft/OvenMediaEngine OvenMediaEngine (OME) is an Open Source, Ultra-Low Latency Streaming Server. OME receives video via RTMP from live encoders such as OBS, XSplit and transmits it on WebRTC. So, Ultra-Low Latency Streaming from OME can work seamlessly in your browser without plug-ins. Also, OME provides OvenPlayer, the HTML5 standard web player. Our goal is to make it easier for you to build a stable broadcasting/streaming service with Ultra-Low Latency.
|
https://github.com/runner365/nginx-rtp-module
|
"QUIC can be supported, it is very suitable for the current live streaming scenario.
|
For live streaming, you can learn about WebRTC, which supports H5 live streaming. Additionally, the protocol standard will soon be supported (or already supported) by various CDN providers.
|
For the solution you mentioned about resolving the issue with ST, why not completely switch to using the Go language for development, as it seems SRS also has a Go version?
|
Language is not a sufficient condition for rewriting a product, just like open-source media servers are not sufficient for providing good media services. This is why many people ask which open-source media server Alibaba Cloud uses, which media server Tencent Cloud uses, and which media server ChinaNet uses - media services are not equivalent to media servers, let alone open-source media servers. Explaining why we don't use Go language may be difficult, but explaining the difference between "media services" and "media servers" may be somewhat easier. For example, everyone knows that cloud computing uses Linux, even the famous AWS uses Linux. So why not use a new OS? I want to say that this question itself is a non-existent question. Why do people think that the Linux used by cloud computing vendors is the same as the Linux we know? Even if everyone is based on Linux to provide services, it does not mean that cloud computing only has one Linux. Moreover, each vendor has a Linux kernel team and will have customized Linux. So, can we consider the Linux used by cloud vendors as the Linux we know? Definitely not the same. Aside from Linux, what else do cloud vendors have? Thousands of people in the team, and there are definitely not many who work on the kernel. So, by analogy, if someone provides media services, is it still the same SRS that we know? Is it still the same Nginx that we know even if they use it? How many people are actually working on media servers? Most of them are not directly involved in server development. Why not use Go language? Media servers are not just a language issue, just like cloud computing is not just about the Linux kernel.
|
Of course, I can also answer this question directly, and I have some mature thoughts on it, hahaha. In short, there is no pain point that C/C++ cannot solve, and Go does not have an absolute advantage over SRS:
Of course, I'm not saying that Go cannot be used for streaming media servers. It can definitely be used, and in fact, I also recommend and prefer using Go in practice. I'm just saying that it is not necessary for SRS to use Go. I recommend Go because:
What is the optimal solution? It is not doing anything, for example, there was a lot of talk about H.265, but now it seems that more people are talking about AV1. I will wait for them to talk about it for a few more years before doing anything. Can you achieve this in the real world of product development? If not, then use Go, and use CPU to exchange for stability.
|
|
我们目前实时监控就是用到这个 RTSP,摄像头厂家的方案,延迟有点大,但也基本满足要求,我们是在办公室监控实验室(本地和远程都有)的化学反应。因为要配合控制操作,想要更加实时的方式,移动端也十分需要,看了你们上面的讨论,WebRTC 似乎是目前最佳的应用。 |
SRS3 b0已经发布了,可以在生产环境中灰度了。 |
关于SRS是否需要以及怎么替换成libco, 我的提交在这里 通过对libco和state-thread的对比和替换state-thread的过程, 我觉得SRS短期内没必要替换成libco, 有以下几个原因
|
是的,监控行业基本都离不开GB28181,我们现在用SRS也都是接入的28181摄像头,再处理流推送到SRS |
期待,更期待28181的支持 哈哈 |
首先感谢作者和各位贡献者辛勤工作。。。 |
SRS聚焦在互联网流媒体,也就是浏览器可以支持的标准格式,可以考虑用FFMPEG做协议和编码的转换。 |
主要是在网络环境较差的情况下(如3/4G等弱网络环境下)可以提高推流质量 |
可以考虑用SRT或WebRTC推流,SRT已经支持,WebRTC在路上了。 |
I would live to contribute and help building the WevRTC support. |
@itzikgili Thanks, SRS4 has supported publishing by RTMP and playing by WebRTC, please read #307 , welcome to join us to make it better. 😄 |
希望可以考虑下H265转码后在网页的播放 |
Sure thing, I would love to! |
Damn i will give a look at WebRTC too ! |
因为对直播来说,延迟至关重要。RTMP是基于TCP的,哪怕用商业CDN,延迟也在2~3s。这个延迟还是很大,对于一些连麦直播或在线游戏直播来说,还是大。所以,希望能够在SRS5支持QUIC。 |
@freeman1974 延迟问题,SRS已经支持了RTMP推流WebRTC播放,以及WebRTC推流和播放。 |
JT1078要是也能支持,那么srs在交通行业就完美了 |
SRS 4.0会考虑支持webrtc推流转RTMP或者hls之类的播放不 |
@winlinvip SRS 4.0会考虑支持webrtc推流转RTMP或者hls之类的播放不 |
SRS 4.0 会支持webrtc视频会议么? |
kcp应该支持下呢? |
你能做得到吗?做不到就用Go吧,用CPU换稳定性。 是不是go的版本已经处于放弃状态了? 在webrtc风口之上,go对网络的亲和性相对比ST更好。从团队维护产品及自动化运维的角度来说也是更优的(单从效率来说)。 SRS现在的release版本已经是非常稳定且生产可用的了。 是不是有团队可以继续维护go的版本? |
监控上云是现在监控行业想摆脱设备厂商的痛点,28181 解决痛点的关键技术 |
监控上云是现在监控行业想摆脱设备厂商的痛点,28181 解决痛点的关键技术。 |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
About the Development Direction of SRS
SRS3 is currently being enhanced for stability and is being released intensively. This means that SRS3 will not support major changes but will only focus on improving stability, indicating that SRS4 is coming.
SRS4's codename is Leo. Thanks to all the brothers and sisters who have been fighting together for over a decade. You can find the story about the codename Leo here.
This issue is to discuss what SRS4 should support. I understand that there is a strong demand for new protocols such as WebRTC, SRT, QUIC, and KCP. However, I have already decided that supporting new protocols will not be the focus. SRS4 will probably support some new protocols, but the main focus will be on usability and ease of use, in simple terms, it will be more stable and user-friendly.
Is SRS unstable? For an open-source project, it may meet the requirements. There are very few open-source projects with a core protocol coverage rate of over 95% and an overall coverage rate of around 50% (of course, stability has many more aspects that are not discussed here). However, the requirements for SRS are to directly provide services on industrial servers, requiring even higher stability. There are many areas that need careful handling, especially in cases of inconsistency, such as player timeouts, source cleaning, race conditions, and cooperation among multiple coroutines. Stability is a fundamental capability that cannot be compromised. The more investment, the more stability.
Is SRS difficult to use? Based on feedback and continuous observations, it should not be considered difficult to use. However, the requirements for SRS are to directly provide services on commercial servers, so usability needs to be further improved. This mainly involves Dockerization, integration with cloud services, HTTP protocol enhancements such as monitoring the online audience of HLS, and providing operational data solutions through JSON-structured logs. Currently, the HTTP part of SRS mainly refers to the implementation of HTTP 1.1 in Go. In the future, consideration will be given to porting more underlying capabilities from NGINX. For example, it may be possible to directly run NGINX modules on SRS, which gives us something to look forward to. See reference #1657.
In addition, security and licensing have always been the focal points of SRS. In terms of security, it mainly involves anti-leeching measures, enhanced restrictions such as rate limiting and client limitations, encryption and decryption, and code vulnerability detection. As for licensing, the only issue currently is replacing ST with at least one optional version that does not have licensing limitations.
So, dear reader, what key capabilities do you expect SRS4 to support? Please reply to this issue 😄 😄
Make sure to maintain the markdown structure.
TRANS_BY_GPT3
The text was updated successfully, but these errors were encountered: