프로젝트 소개

rtmp-rs는 Rust로 작성되고 Tokio 타임 위에 구축된 비동기 RTMP 서버 및 클라이언트 라이브러리입니다. 개발자는 OBS나 FFmpeg 같은 인코더에서 라이브 스트림을 수신하고, 시청자에게 중계하며, 외부 서버에서 스트림을 가져오거나 YouTube 및 Twitch 같은 RTMPS 엔드포인트로 게시할 수 있습니다. 이 라이브러리는 레거시 RTMP(H.264 및 AAC)와 Enhanced RTMP v2를 모두 지원하여 HEVC, AV1, VP9, VP8, Opus, FLAC, AC-3, E-AC-3 같은 최신 코덱을 사용할 수 있습니다. 빈 app 이름과 타임스탬프 역행을 포함해 실제 인코더의 특이 동작을 원활하게 처리하도록 설계되었습니다. 주요 기능은 다음과 같습니다: - GOP 캐싱: 게 참여한 시청자에게 키프레임을 즉시 전달합니다. - 백프레셔 처리: 느린 구독자에게는 비디오 프레임을 드롭하면서 오디오는 연속적으로 유지합니다. - 제로 카피 공유: 미디어 페이로드는 bytes::Bytes로 전달되어 복사 없이 구독자 간에 프레임을 공유합니다. - RTMPS 지원: rustls와 webpki-roots를 사용하는 TLS 기반 보안 RTMP입니다. - 확장 가능한 백: RtmpHandler 트레이트는 인증, 메타데이터 파싱, 프레임별 처리를 위한 사용자 정의 훅을 제공합니다.