Releases: HaishinKit/HaishinKit.swift
2.2.4
What's Changed
- Video capture continues even while an incoming call is ringing. by @shogo4405 in #1865
- fix a crash caused by an AudioRingBuffer buffer overrun by @shogo4405 in #1867
- iOS example app UX improvements by @psdewar in #1868
New Contributors
Full Changelog: 2.2.3...2.2.4
2.2.3
What's Changed
- Bump up libdatachannel to 0.24.0 by @shogo4405 in #1845
- Bump fastlane from 2.229.0 to 2.229.1 by @dependabot[bot] in #1846
- fixed AVCaptureSession stop when reconnected a USB Audio interface. by @shogo4405 in #1850
- Fix: Reflects the actual capture state. by @shogo4405 in #1851
Full Changelog: 2.2.2...2.2.3
2.2.2
What's Changed
- Add framerate to RTMP onMetaData by @ITlearning in #1832
- fixed an issue where MediaMixer.frameRate would not update. by @shogo4405 in #1837
- Bump fastlane from 2.228.0 to 2.229.0 by @dependabot[bot] in #1839
- Add setExpectedMedia method. by @shogo4405 in #1840
- Made expectedFrameRate optional. by @shogo4405 in #1841
Notes
New Contributors
- @ITlearning made their first contribution in #1832
Full Changelog: 2.2.1...2.2.2
2.2.1
- GPU (CIContext) rendering is now supported for
ScreenObject. As a result, CPU usage has decreased by approximately 15% on iPhone SE2. In future versions, we plan to switch to GPU-only support. - HDR mode support has been added. However, it has not yet been applied to the live streaming feature.
What's Changed
- Add recording feature for iOS Example. by @shogo4405 in #1813
- Added GPU rendering support for ScreenObject. by @shogo4405 in #1816
- Fixed an issue where the properties of AudioMixerTrackSettings were unintentionally applied to AVAudioConverter each time. by @shogo4405 in #1819
- Supported the kVTCompressionPropertyKey_VariableBitRate option in VideoToolbox. by @shogo4405 in #1822
- Bump rubocop from 1.81.1 to 1.81.6 by @dependabot[bot] in #1823
- fixed an issue where the frame rate could not be configured when attaching a video using attachVideo. by @shogo4405 in #1824
- Bump rubocop from 1.81.6 to 1.81.7 by @dependabot[bot] in #1826
- Support HighDynamicRange mode. by @shogo4405 in #1827
Notes
Full Changelog: 2.2.0...2.2.1
2.2.0: Bump to Xcode up 26.
The development environment has been updated to Xcode 26. Accordingly, the minimum OS requirements for each platform have been updated. Several bugs have been fixed, and deprecated methods have been removed.
What's Changed
- Removed a duplicate method used in DeviceUtil for macOS. by @shogo4405 in #1783
- Add SessionConfiguration protocols. by @shogo4405 in #1785
- Made it possible to pass WebRTC configuration information. by @shogo4405 in #1788
- Bump to Xcode up 26. by @shogo4405 in #1784
- Bump rubocop from 1.80.2 to 1.81.1 by @dependabot[bot] in #1792
- Support for rtmp url's query parameters by @shogo4405 in #1793
- fix the issue where PiPHKView drifts during long streaming sessions by @shogo4405 in #1796
- Added channel conversion functionality. by @shogo4405 in #1798
- Bump to Logboard up 2.6.0 by @shogo4405 in #1801
- Remove VideoRotator. by @shogo4405 in #1803
- install: AI Issue and Comment Moderator by @shogo4405 in #1804
- Reviewed the class structure of SRTLogger. by @shogo4405 in #1805
- Fix an issue where the FPS setting in VideoCodec by @shogo4405 in #1811
Full Changelog: 2.1.2...2.2.0
2.1.2
- Fixed a bug that caused streaming errors in RTMP FMLE compatibility mode.
- Initial support for WHEP/WHIP has been added. It’s not yet production-ready, but feel free to try it out if you’re interested.
Notes
What's Changed
- Support for the WHEP (WebRTC-HTTP Egress Protocol) by @shogo4405 in #1775
- Revise exception handling in RTMPStream layer. by @shogo4405 in #1776
- Bump rubocop from 1.80.1 to 1.80.2 by @dependabot[bot] in #1778
- Add UIViewRepresentable for SwiftUI. by @shogo4405 in #1779
- Update Example macOS. by @shogo4405 in #1780
- fixed an issue that prevented playback via RTMP. by @shogo4405 in #1781
Full Changelog: 2.1.1...2.1.2
2.1.1
Notes
What's Changed
- Bump rubocop from 1.79.2 to 1.80.0 by @dependabot[bot] in #1767
- Stereo recording feature for Example iOS ver 2025 by @shogo4405 in #1770
- Bump rubocop from 1.80.0 to 1.80.1 by @dependabot[bot] in #1771
- Now conforms to Sendable RTMPStreamInfo. by @shogo4405 in #1774
Full Changelog: 2.1.0...2.1.1
2.1.0
HaishinKit has reached its 10th anniversary on August 2, 2025.
We are deeply grateful for the contributions from the OSS community and the continued support from our generous sponsors. Thank you all!
In this version, I have restructured the module configuration. The RTMP-related features that were previously in HaishinKit have been moved to RTMPHaishinKit.
Features
Session
This is an API that consolidates the connection handling of RTMP and SRT into a unified interface. It encapsulates retry logic and best practices for establishing connections
Prerequisites
import HaishinKit
import RTMPHaishinKit
import SRTHaishinKit
Task {
await SessionBuilderFactory.shared.register(RTMPSessionFactory())
await SessionBuilderFactory.shared.register(SRTSessionFactory())
}Make session
let session = try await SessionBuilderFactory.shared.make(URL(string: "rtmp://hostname/live/live"))
.setMode(.ingest)
.build()let session = try await SessionBuilderFactory.shared.make(URL(string: "srt://hostname:448?stream=xxxxx"))
.setMode(.playback)
.build()Connect
Playback or ingest will be performed according to the selected mode setting.
try session.connect {
print("on disconnected")
}Notes
What's Changed
- Bump danger from 9.5.1 to 9.5.3 by @dependabot[bot] in #1738
- Update AudioMixer test cases. by @shogo4405 in #1739
- Fix: heap-use-after-free in AudioMixerByMultiTrack by @finnvoor in #1718
- Bump rubocop from 1.77.0 to 1.78.0 by @dependabot[bot] in #1742
- Repackage RTMPHaishinKit. by @shogo4405 in #1743
- Remove deprecated method. by @shogo4405 in #1744
- fix typo BitRateStorategy -> BitRateStrategy. by @shogo4405 in #1745
- Modified to throw an error for unsupported codecs. by @shogo4405 in #1746
- Add retry RTMPConneciton. by @shogo4405 in #1741
- Bump rubocop from 1.78.0 to 1.79.0 by @dependabot[bot] in #1748
- Bump rubocop from 1.79.0 to 1.79.1 by @dependabot[bot] in #1752
- Example SwiftUI. by @shogo4405 in #1753
- Remove start capture manually option. by @shogo4405 in #1756
- The concept of frameRate has been separated into input and output. by @shogo4405 in #1757
- Rename isHardwareEncoderEnabled to isHardwareAcceleratedEnabled. by @shogo4405 in #1758
- Bump rubocop from 1.79.1 to 1.79.2 by @dependabot[bot] in #1759
- Revised the reconnection process for the Session API. by @shogo4405 in #1760
- Reviewed the error handling process of SRTConnection. by @shogo4405 in #1761
- enum BitRateMode to struct. by @shogo4405 in #1762
- Add LowLatencyRateControlEnabled option. by @shogo4405 in #1763
- Redesign of the Session API. by @shogo4405 in #1764
- Add CaptureSessionMode feature. by @shogo4405 in #1765
New Contributors
Full Changelog: 2.0.9...2.1.0
2.0.9
What's Changed
- Fix typo (audioMonoStereoSegmentCOntrol -> audioMonoStereoSegmentControl) by @H0sungKim in #1706
- Update documents. by @shogo4405 in #1715
- New Session api. by @shogo4405 in #1734
New Contributors
- @H0sungKim made their first contribution in #1706
Full Changelog: 2.0.8...2.0.9
1.9.9
What's Changed
- Feature: add new property to allow mirror the preview view by @thula-belive in #1724
New Contributors
- @thula-belive made their first contribution in #1724
Full Changelog: 1.9.8...1.9.9