HaishinKit for iOS, macOS, tvOS, visionOS and Android.
- Camera and Microphone streaming library via RTMP and SRT for iOS, macOS, tvOS and visionOS.
- 10th AnniversaryποΈIn development for 10 years, with 2,778 commits and 163 releases. Thank you. Since Aug 2, 2015.
Do you need additional support? Technical support on Issues and Discussions is provided only to contributors and academic researchers of HaishinKit. By becoming a sponsor, I can provide the support you need.
Sponsor: $50 per month: Technical support via GitHub Issues/Discussions with priority response.
- Protocols β¨Publish and playback feature are available RTMP, SRT and WHEP/WHIP(alpha).
- Multi Camera access β¨Support multitasking camera access.
- Multi Streaming β¨Allowing live streaming to separate services. Views also support this, enabling the verification of raw video data.
- Strict Concurrency β¨Supports Swift's Strict Concurrency compliance.
- Screen Capture β¨Supports ReplayKit(iOS) and ScreenCaptureKit(macOS) api.
- Video mixing β¨Possible to display any text or bitmap on a video during broadcasting or viewing. This allows for various applications such as watermarking and time display.
Publish Playback 

| Version | Xcode | Swift |
|---|---|---|
| 2.2.0+ | 26.0+ | 6.0+ |
| 2.1.0+ | 16.4+ | 6.0+ |
| iOS | tvOS | Mac Catalyst | macOS | visionOS | watchOS |
|---|---|---|---|---|---|
| 15.0+ | 15.0+ | 15.0+ | 12.0+ | 1.0+ | - |
- SRTHaishinKit is not avaliable for Mac Catalyst.
Important
There are several issues that occur when connected to Xcode. Please also refer to this document.
- Reference implementation app for live streaming
publishandplayback. - If an issue occurs, please check whether it also happens in the examples app.
You can verify by changing the URL of the following file.
HaishinKit.swift/Examples/Preference.swift
Lines 1 to 7 in abf1883
git clone https://github.com/HaishinKit/HaishinKit.swift.git
cd HaishinKit.swift
open Examples/Examples.xcodeprojhttps://github.com/HaishinKit/HaishinKit.swiftMake sure you setup and activate your AVAudioSession iOS.
import AVFoundation
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(.playAndRecord, mode: .default, options: [.defaultToSpeaker, .allowBluetooth])
try session.setActive(true)
} catch {
print(error)
}Please make sure to contains Info.plist the following values when accessing the camera or microphone.
<key>NSCameraUsageDescription</key>
<string>your usage description here</string>
<key>NSMicrophoneUsageDescription</key>
<string>your usage description here</string>| Project name | Notes | License |
|---|---|---|
| HaishinKit for Android. | Camera and Microphone streaming library via RTMP for Android. | BSD 3-Clause "New" or "Revised" License |
| HaishinKit for Flutter. | Camera and Microphone streaming library via RTMP for Flutter. | BSD 3-Clause "New" or "Revised" License |
BSD-3-Clause