Skip to content
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

Requirements Gathering #51

Open
harlanc opened this issue Jul 30, 2023 · 20 comments
Open

Requirements Gathering #51

harlanc opened this issue Jul 30, 2023 · 20 comments
Assignees
Labels
new feature new feature

Comments

@harlanc
Copy link
Owner

harlanc commented Jul 30, 2023

Everyone can list your important requirements here, which may be implemented in the future.

@harlanc harlanc pinned this issue Jul 30, 2023
@harlanc
Copy link
Owner Author

harlanc commented Aug 2, 2023

  • Protocols Support
    • GB28181
    • Webrtc (whip/whep)
    • SRT
    • LL-HLS
    • Media Over QUIC
    • RTSP client logic implementation
  • Others
    • HTTPS for media protocols
    • Build docker image.
    • Build custom XIU binary using RUST's features, then you can add or remove protocols(features) according to your need.

@themaxsmith
Copy link

  • SRT
  • WebRTC

@harlanc harlanc self-assigned this Aug 11, 2023
@Arjen10
Copy link

Arjen10 commented Sep 20, 2023

need GB28181, go go

@CHAT-00001
Copy link

谢谢你带来的项目,我没使用过,盲写几个需求

  1. 直播回放录像
  2. 后台管理面板
  3. 聊天室功能
  4. 视频会议功能

@harlanc harlanc added the new feature new feature label Oct 3, 2023
@udoless
Copy link

udoless commented Oct 17, 2023

Push local file or local data stream to rtmp server, just like the requirement in #35.

@ningnao
Copy link
Contributor

ningnao commented Oct 23, 2023

不知道能不能实现这样的效果:
某个rtmp流长时间没有人看的时候能暂时关闭流 有人看的时候再打开

@jb-alvarado
Copy link

Dynamic forward would be nice. SRS v5 supports this, and it communicates for that with a backend.

I have modify the example go backend they share, and now it monitors a json config file and when that file is changed it sends the targets SRS.

A **conf.d ** folder where we can place different configuration files for different vhosts could be also useful.

@harlanc
Copy link
Owner Author

harlanc commented Dec 29, 2023

Seems that we can publish audio/video streams from browser using Media over QUIC.
After research, pushing H.264/AAC streams are supported, so maybe we can implement stream reception and transmuxing (to rtmp/hls/httpflv) on the server side.

@VanderBieu
Copy link

Is it possible to implement WebRTC over UDP?

@aseuler
Copy link

aseuler commented Jan 2, 2024

"GB28181" and "Media Over QUIC"

@miaulightouch
Copy link

miaulightouch commented Jan 15, 2024

Enhanced RTMP

twitch supported and add unpublished feature named "multitrack"

@jb-alvarado
Copy link

I don't even know if it is possible, but how about generating WEBVTT based thumbnails for HLS streams:

https://developer.bitmovin.com/playback/docs/webvtt-based-thumbnails

Let's say you have a HLS live stream with DVR for one hour, this combining with WEBVTT thumbnails would be awesome.

That would almost be a unique selling point.

@RobinvdGriend
Copy link

Perhaps it would be good if we can push RTMP to a particular server depending on the application name or domain of the input stream. So for example:

[[rtmp.push]]
domain = "example.com"
address = "stream-relay.example.com"
[[rtmp.push]]
app_name = "live"
address = "localhost:1936"

This way you would be able to use the server as a sort of RTMP reverse proxy.

@kumaraguru1735
Copy link

RTMP, RTMPS, HLS, DASH, FLV, SRT, WEB-RTC, RTSP

@kumaraguru1735
Copy link

Need API to manage

SERVER RESOURCE
SINGLE STREAM STATS
ALL STREAM STATS
SINGLE CLIENT STATS
ALL CLIENT STATS
KICKOUT CLIENT/ STREAM
COUNTS OF TOTAL STREAMS, TOTAL CLIENTS, TOTAL INPUT BANDWIDTH AND TOTAL OUTPUT BANDWITH

@abhemanyus
Copy link

S3-compatible object storage support for recording VODs.
I am currently working on it. On that note, any particular reason why the filesystem I/O is using blocking operations, other than for simplicity's sake?

@harlanc
Copy link
Owner Author

harlanc commented Aug 29, 2024

S3-compatible object storage support for recording VODs. I am currently working on it. On that note, any particular reason why the filesystem I/O is using blocking operations, other than for simplicity's sake?

Sorry for late reply, I haven’t given this much thought, just for simplicity as you said. Will writing files synchronously affect functionality (e.g., causing lags) or impact performance? @abhemanyus

@abhemanyus
Copy link

abhemanyus commented Aug 29, 2024

S3-compatible object storage support for recording VODs. I am currently working on it. On that note, any particular reason why the filesystem I/O is using blocking operations, other than for simplicity's sake?

Sorry for late relay, I haven’t given this much thought, just for simplicity as you said. Will writing files synchronously affect functionality (e.g., causing lags) or impact performance? @abhemanyus

Yes, writing files synchronously will block the entire thread on disk I/O. If said thread is also performing the video transcoding, that will be pretty noticeable. Multiple streams, high-definition videos, codec conversion, etc, are all cases where this will become an issue.

Also, I tried out the POC. It worked, sort of. There was also the overhead of saving the same file twice, once to disk and once to S3.
It also looked extremely ugly, for which I am solely to blame. The larger application had no async support, I had to jerry rig that.
I have abandoned that project since then and moved on to Nginx + RTMP module + Gstreamer with S3 sink.

@harlanc
Copy link
Owner Author

harlanc commented Aug 29, 2024

So it's better to place time-consuming tasks, such as disk writes and S3 uploads, in separate threads to avoid blocking other tokio threads. Since it has already been uploaded to S3, why do we need to save it locally (write to disk)? You can open a new issue and it won't disturb others..

S3-compatible object storage support for recording VODs. I am currently working on it. On that note, any particular reason why the filesystem I/O is using blocking operations, other than for simplicity's sake?

Sorry for late relay, I haven’t given this much thought, just for simplicity as you said. Will writing files synchronously affect functionality (e.g., causing lags) or impact performance? @abhemanyus

Yes, writing files synchronously will block the entire thread on disk I/O. If said thread is also performing the video transcoding, that will be pretty noticeable. Multiple streams, high-definition videos, codec conversion, etc, are all cases where this will become an issue.

Also, I tried out the POC. It worked, sort of. There was also the overhead of saving the same file twice, once to disk and once to S3. It also looked extremely ugly, for which I am solely to blame. The larger application had no async support, I had to jerry rig that. I have abandoned that project since then and moved on to Nginx + RTMP module + Gstreamer with S3 sink.

@kumaraguru1735
Copy link

Add user_agent for publisher and subscriber!
send_bitrate(kbits/s) (total bitrate sending outside for all subscribers)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new feature new feature
Projects
None yet
Development

No branches or pull requests