Skip to main content

GSoC-2025

ยท 6 min read

Project Description

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT.

Information for Students

Getting Started

  1. Get to know SRS. If you are a student interested in contributing to SRS, it is recommended to start by join to the SRS Discord and exploring both the codebase and the development workflow. Feel free to contact us if you have any questions. Also do not hesitate to answer questions from other students on our Discord channel if you know the answer to something.
  2. Find a project. Listed on this page are mentored and un-mentored projects. Mentored projects are well-defined and mentor(s) have already volunteered. Un-mentored projects are additional ideas you may want to consider, but you will have to contact us to find a mentor. You can also propose your own project, if you can think of one that better fits your interest and skill level. If a project description is unclear or you have any questions, please get in touch with its mentor and/or join our Discord channel at #general.
  3. Contact us. If you decide on a project, get in touch with the community and let us know. If you want to work on a qualification task, let the respective mentor know so we can avoid duplicated efforts.
  4. Apply. Students should apply definitely before deadline on April 8th. The "work" period begins on June 2th and ends in September. Take a look at GSoC timeline for additional information. Note, make sure you apply to Google before April 19th, even if you have not yet finished your qualification task. Please apply as soon as possible: Applications can be improved until the 19th but not afterwards!

Note: A friendly reminder that while the application to GSoC is important for you and GSoC, SRS mentors will not base their decision solely on the GSoC application. We will judge applicants based on their qualification tasks to understand their abilities in coding, learning the tools, communication skills etc. So please do not worry about your application being perfect for us. Although it is very important to follow GSoC's application rules so they can pay you.

Qualification Tasks

In order to get accepted you have to complete a small qualification task which in all cases include sending a patch to the development mailing list. SRS development can be quite challenging and the qualification task helps us figure out whether you are motivated enough and have the potential to deliver successfully.

The qualification tasks are usually shown in the project description. Contact the respective mentor(s) for assistance on getting a related qualification task or if you want to propose your own. You can also browse the SRS Bug Issue for qualification task ideas. In general qualification tasks should include submitting a patch to the SRS Bug Issue which passes review and is accepted into the SRS codebase. It will be common for such patches to need multiple iterations of submissions and reviews, so don't wait too long with the first submission! Note, please avoid picking a qualification task which another student is already working on, each student should work on a different qualification task.

Development

If you are selected for a particular project then you are not only expected to present a working implementation but you should also submit your work for inclusion for the SRS codebase. This should be done at least 2-3 weeks before the end of the second work period by sending patches to the SRS Bug Issue&Discord where the SRS community and your mentor will review your work. You will likely be asked to make some changes and resend improved versions. If you feel that no consensus is reached about how something should be done then follow the advice of your mentor.

In order to create good quality patches make sure to read the Developer Documentation.

Contacting SRS

If you have questions or comments feel free to contact us via our mail, Discord one of the SRS GSoC admins:

  • Discord: #general
  • SRS GSoC Admins: Winlin (winlin in #general on Discord, winlinvip at gmail dot com ), Devin (Devin in #general on Discord, devin at ossrs dot io), LiuQi (Steven in #general on Discord, lq at chinaffmpeg dot org) You may also contact a mentor directly if you have questions specifically related to one of the projects listed on this page.

Mentored Project Ideas

This section lists well-defined projects that have one or more available mentors. If you are new to SRS, and have relatively little experience with multimedia, you should favor one of these ideas rather than propose your own. Contact the respective mentor(s) to get more information about the project and the requested qualification task.

1. YAML Configuration File Support

Name of projectYAML Configuration File Support
Project DescriptionSRS currently uses a proprietary configuration format similar to NGINX. YAML is a widely adopted configuration format, familiar to many users.
MentorJunqin Zhang(chundonglinlin@163.com)
Backup MentorHaibo Chen(495810242@qq.com)
Required SkillsFamiliar with yaml file format and its parsing method, skilled in C++ programming.
DifficultyBeginner
Expected OutcomeConvert existing SRS configuration files to YAML format with proper parsing and execution.
Qualification TaskImplement YAML file parsing.

2. HLS LLHLS mode

Name of projectHLS support LLHLS mode
Project DescriptionHLS, developed by Apple, is a method for file-based live streaming with high latency. LLHLS significantly reduces this latency.
MentorZhihong Xiao(hondaxiao@tencent.com)
Backup MentorHaibo Chen(495810242@qq.com)
Required SkillsFamiliarity with HLS and LLHLS, strong ability to read standards documentation, proficient in C++ programming
DifficultyAdvanced
Expected OutcomeAchieve playback on LLHLS-supported players with expected latency.
Qualification TaskComplete LLHLS encoding, re-muxing, and manifest file generation.

3. Coroutine-based DNS Resolution in SRS Network Library ST (State-Thread)

Name of projectCoroutine-based DNS Resolution in SRS Network Library ST (State-Thread)
Project DescriptionST (State-Thread) is a coroutine library with coroutine-based wrappers for common network interfaces. Currently, DNS resolution is not adapted to ST and needs full coroutine support.
MentorZhihong Xiao (hondaxiao@tencent.com)
Backup MentorWinlin (winlinvip@gmail.com)
Required SkillsFamiliarity with DNS resolution process, understanding of coroutine principles, proficient in C++ programming
DifficultyIntermediate
Expected OutcomeImplement coroutine-based DNS resolution for all DNS operations in the code.
Qualification TaskDevelop a DNS resolution interface based on State-Thread.

4. HLS Support for CMAF

Name of projectHLS Support for CMAF
Project DescriptionCMAF (Common Media Application Format) is an international standard proposed by industry leaders like Microsoft and Apple, approved in 2017. Implementing CMAF in SRS allows compatibility with more platforms.
MentorZhihong Xiao(hondaxiao@tencent.com)
Backup MentorSteven Liu(lq@chinaffmpeg.org)
Required SkillsFamiliarity with HLS, CMAF, MP4 standards, strong ability to read standards documentation, proficient in C++ programming
DifficultyAdvanced
Expected OutcomeOutput CMAF-HLS manifests and corresponding packaging formats.
Qualification TaskComplete CMAF packaging and CMAF-HLS manifest file generation.

5. Enhanced RTMP (V2)

Name of projectEnhanced RTMP (V2)
Project DescriptionImplement Enhanced RTMP (V2) to support advanced streaming capabilities.
MentorZhihong Xiao (hondaxiao@tencent.com)
Backup MentorWinlin (winlinvip@gmail.com)
Required SkillsFamiliarity with Enhanced RTMP (V2) standard, strong ability to read standards documentation, proficient in C++ programming
DifficultyAdvanced
Expected OutcomeSupport streaming, playback, and relay using Enhanced RTMP (V2).
Qualification TaskImplement Enhanced RTMP (V2) features and successfully achieve streaming, playback, and relay.