@@ -18,7 +18,13 @@ public class RTMPStreaming: ObservableObject {
1818
1919 private var rtmpStreams : [ RTMPStream ] = [ ]
2020 private var rtmpConnections : [ RTMPConnection ] = [ ]
21+ private var lastSampleBufferTimestamp : CMTime ?
2122
23+ // Properties for frame rate logging
24+ private var frameCount : Int = 0
25+ private var startTime : Date ?
26+ private let logInterval : TimeInterval = 5.0 // Log every 5 seconds
27+
2228 public init ( renderSettings: RenderSettings ) {
2329 self . renderSettings = renderSettings
2430 setupRTMPStreams ( )
@@ -42,11 +48,34 @@ public class RTMPStreaming: ObservableObject {
4248 }
4349
4450 private func configureRTMPStream( _ rtmpStream: RTMPStream , with streamSettings: LivestreamSettings ) {
45- rtmpStream. videoSettings. videoSize = CGSize ( width: CGFloat ( renderSettings. width) , height: CGFloat ( renderSettings. height) )
46- rtmpStream. videoSettings. profileLevel = streamSettings. profileLevel ?? kVTProfileLevel_H264_Main_AutoLevel as String
47- rtmpStream. videoSettings. bitRate = streamSettings. bitRate ?? renderSettings. getDefaultBitrate ( )
48- rtmpStream. videoSettings. maxKeyFrameIntervalDuration = 2
49- rtmpStream. videoSettings. scalingMode = . trim
51+ // rtmpStream.videoSettings.videoSize = CGSize(width: CGFloat(renderSettings.width), height: CGFloat(renderSettings.height))
52+ // rtmpStream.videoSettings.profileLevel = streamSettings.profileLevel ?? kVTProfileLevel_H264_Main_AutoLevel as String
53+ // rtmpStream.videoSettings.bitRate = streamSettings.bitRate ?? renderSettings.getDefaultBitrate()
54+ // rtmpStream.videoSettings.profileLevel = kVTProfileLevel_H264_Baseline_AutoLevel as String
55+ // rtmpStream.videoSettings.bitRate = 1200 * 1000
56+ // rtmpStream.videoSettings.maxKeyFrameIntervalDuration = 2
57+ // rtmpStream.videoSettings.scalingMode = .trim
58+
59+ let bitrate = renderSettings. getDefaultBitrate ( )
60+ rtmpStream. frameRate = Double ( renderSettings. fps)
61+ // stream.videoSettings.bitRateMode = .constant
62+ // rtmpStream.sessionPreset = .hd1920x1080
63+ rtmpStream. sessionPreset = . hd1920x1080
64+ // let bitrate = 6800 * 1000 // 6800 Kbps in bps
65+
66+ rtmpStream. videoSettings = VideoCodecSettings (
67+ videoSize: CGSize ( width: renderSettings. width, height: renderSettings. height) ,
68+ bitRate: bitrate,
69+ // renderSettings.getDefaultBitrate(),
70+ // profileLevel: kVTProfileLevel_H264_Baseline_5_2 as String,
71+ // profileLevel: kVTProfileLevel_H264_Baseline_AutoLevel as String,
72+ profileLevel: kVTProfileLevel_H264_Main_AutoLevel as String ,
73+ scalingMode: . trim,
74+ bitRateMode: . constant,
75+ maxKeyFrameIntervalDuration: 2
76+ )
77+
78+ // rtmpStream.bitrateStrategy = VideoAdaptiveNetBitRateStrategy(mamimumVideoBitrate: VideoCodecSettings.default.bitRate)
5079 }
5180
5281 public func startStreaming( ) {
@@ -60,6 +89,7 @@ public class RTMPStreaming: ObservableObject {
6089 }
6190
6291 isStreaming = true
92+ // resetFrameRateLogging()
6393 }
6494
6595 public func stopStreaming( ) {
@@ -77,17 +107,39 @@ public class RTMPStreaming: ObservableObject {
77107
78108 public func appendSampleBuffer( _ sampleBuffer: CMSampleBuffer ) {
79109 guard isStreaming else { return }
80-
110+
81111 for rtmpStream in rtmpStreams {
82112 rtmpStream. append ( sampleBuffer)
83113 }
114+
115+ // logFrameRate()
84116 }
85117
86118 @objc private func rtmpStatusHandler( _ notification: Notification ) {
87119 // Handle RTMP status
120+ print ( " RTMP STATUS " , notification)
88121 }
89122
90123 @objc private func rtmpErrorHandler( _ notification: Notification ) {
124+ print ( " RTMP ERROR " , notification)
91125 // Handle RTMP error
92126 }
127+
128+ private func resetFrameRateLogging( ) {
129+ frameCount = 0
130+ startTime = Date ( )
131+ }
132+
133+ private func logFrameRate( ) {
134+ frameCount += 1
135+
136+ guard let startTime = startTime else { return }
137+
138+ let elapsedTime = Date ( ) . timeIntervalSince ( startTime)
139+ if elapsedTime >= logInterval {
140+ let frameRate = Double ( frameCount) / elapsedTime
141+ print ( " Current frame rate: \( frameRate) fps " )
142+ resetFrameRateLogging ( )
143+ }
144+ }
93145}
0 commit comments