node-mac-recorder 2.23.2 → 2.23.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -25,7 +25,7 @@ static int64_t g_avFrameNumber = 0;
|
|
|
25
25
|
static CMTime g_avStartTime;
|
|
26
26
|
static void* g_avAudioRecorder = nil;
|
|
27
27
|
static NSString* g_avAudioOutputPath = nil;
|
|
28
|
-
static const NSInteger kAVFoundationHighQualityVideoBitrate =
|
|
28
|
+
static const NSInteger kAVFoundationHighQualityVideoBitrate = 100 * 1000 * 1000;
|
|
29
29
|
|
|
30
30
|
// AVFoundation screen recording implementation
|
|
31
31
|
extern "C" bool startAVFoundationRecording(const std::string& outputPath,
|
|
@@ -158,6 +158,14 @@ extern "C" bool startAVFoundationRecording(const std::string& outputPath,
|
|
|
158
158
|
bitrate = MAX(bitrate, minBitrate);
|
|
159
159
|
bitrate = MIN(bitrate, maxBitrate);
|
|
160
160
|
qualityHint = @0.9;
|
|
161
|
+
} else { // high - çözünürlüğe DUYARLI yüksek kalite (eski sabit 50 Mbps yerine)
|
|
162
|
+
NSInteger multiplier = 32; // ~0.53 bpp @60fps
|
|
163
|
+
NSInteger minBitrate = kAVFoundationHighQualityVideoBitrate; // 100 Mbps taban
|
|
164
|
+
NSInteger maxBitrate = 200 * 1000 * 1000; // 200 Mbps tavan
|
|
165
|
+
bitrate = (NSInteger)(recordingSize.width * recordingSize.height * multiplier);
|
|
166
|
+
bitrate = MAX(bitrate, minBitrate);
|
|
167
|
+
bitrate = MIN(bitrate, maxBitrate);
|
|
168
|
+
qualityHint = @1.0;
|
|
161
169
|
}
|
|
162
170
|
|
|
163
171
|
MRLog(@"🎬 AVFoundation encoder (%@): %dx%d, codec=H.264 High Profile, bitrate=%.2fMbps",
|
|
@@ -165,7 +165,7 @@ static NSInteger g_targetFPS = 60;
|
|
|
165
165
|
static NSString *g_qualityPreset = @"high";
|
|
166
166
|
static NSInteger g_frameCount = 0;
|
|
167
167
|
static CFAbsoluteTime g_firstFrameTime = 0;
|
|
168
|
-
static const NSInteger kSCKHighQualityVideoBitrate =
|
|
168
|
+
static const NSInteger kSCKHighQualityVideoBitrate = 100 * 1000 * 1000;
|
|
169
169
|
|
|
170
170
|
// Quality helpers
|
|
171
171
|
static NSString *SCKNormalizeQualityPreset(id preset) {
|
|
@@ -214,10 +214,12 @@ static void SCKQualityBitrateForDimensions(NSString *preset,
|
|
|
214
214
|
multiplier = 18;
|
|
215
215
|
minBitrate = 18 * 1000 * 1000;
|
|
216
216
|
maxBitrate = 80 * 1000 * 1000;
|
|
217
|
-
} else { // high/default -
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
217
|
+
} else { // high/default - çözünürlüğe DUYARLI yüksek kalite
|
|
218
|
+
// Eski hali sabit 50 Mbps idi: Retina/4K kayıtta çok düşük (hatta medium
|
|
219
|
+
// yüksek çözünürlükte high'ı geçebiliyordu). Artık çözünürlükle ölçeklenir.
|
|
220
|
+
multiplier = 32; // ~0.53 bpp @60fps
|
|
221
|
+
minBitrate = kSCKHighQualityVideoBitrate; // 100 Mbps taban
|
|
222
|
+
maxBitrate = 200 * 1000 * 1000; // 200 Mbps tavan (realtime güvenli)
|
|
221
223
|
}
|
|
222
224
|
|
|
223
225
|
double base = ((double)MAX(1, width)) * ((double)MAX(1, height)) * (double)multiplier;
|