Skip to content

Commit 9cef7b8

Browse files
authored
Merge pull request #1 from StreamUI/062624-video-quality
Added more keyframes per fps as video was very low quality
2 parents 68bd33e + f2201ef commit 9cef7b8

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//
2+
// File.swift
3+
//
4+
//
5+
// Created by Jordan Howlett on 6/26/24.
6+
//
7+
8+
import Foundation

Sources/StreamUI/Helpers/FrameTimer.swift

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import CoreMedia
99
import Foundation
1010

11+
@Observable
1112
public class FrameTimer {
1213
private var startTime: CMTime?
1314
public var frameCount: Int = 0

Sources/StreamUI/Helpers/RenderSettings.swift

+5
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,9 @@ public struct RenderSettings {
8181
default: return 3_000_000 // for 16/9 1080p
8282
}
8383
}
84+
85+
func getDefaultKeyframeInterval() -> Int32 {
86+
// Default to a keyframe every 2 seconds, but cap at 60 frames
87+
return min(fps * 2, 60)
88+
}
8489
}

Sources/StreamUI/Recorders/VideoRecorder/VideoRecorder.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ class VideoRecorder {
3030
func setupVideoInput() {
3131
guard let assetWriter = parentRecorder?.assetWriter else { return }
3232

33-
// Define compression properties
3433
let compressionProperties: [String: Any] = [
3534
AVVideoAverageBitRateKey: renderSettings.getDefaultBitrate(),
36-
AVVideoMaxKeyFrameIntervalKey: 1, // Force keyframe at start
35+
AVVideoMaxKeyFrameIntervalKey: renderSettings.getDefaultKeyframeInterval(), // Keyframe every 1 second at 30 fps
3736
AVVideoProfileLevelKey: AVVideoProfileLevelH264High41,
38-
AVVideoH264EntropyModeKey: AVVideoH264EntropyModeCABAC
37+
AVVideoH264EntropyModeKey: AVVideoH264EntropyModeCABAC,
38+
AVVideoQualityKey: 0.1 // High quality (0.0 - 1.0)
3939
]
4040

4141
let videoSettings: [String: Any] = [

0 commit comments

Comments
 (0)