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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-mac-recorder",
3
- "version": "2.23.2",
3
+ "version": "2.23.3",
4
4
  "description": "Native macOS screen recording package for Node.js applications",
5
5
  "main": "index.js",
6
6
  "keywords": [
@@ -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 = 50 * 1000 * 1000;
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 = 50 * 1000 * 1000;
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 - fixed high-quality H.264 target
218
- multiplier = 0;
219
- minBitrate = kSCKHighQualityVideoBitrate;
220
- maxBitrate = kSCKHighQualityVideoBitrate;
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;