diff --git a/sdk/objc/api/video_codec/RTCNativeVideoEncoder.h b/sdk/objc/api/video_codec/RTCNativeVideoEncoder.h
new file mode 100644
index 0000000..4cf1c9d
--- /dev/null
+++ b/sdk/objc/api/video_codec/RTCNativeVideoEncoder.h
@@ -0,0 +1,20 @@
+/*
+ *  Copyright (c) 2024 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "base/RTCMacros.h"
+#import "base/RTCVideoEncoder.h"
+
+// NativeVideoEncoder pretends to conform to RTCVideoEncoder protocol, but
+// expects its methods won't be called.
+@interface RTC_OBJC_TYPE (RTCNativeVideoEncoder) : NSObject <RTC_OBJC_TYPE (RTCVideoEncoder)>
+
+@end
diff --git a/sdk/objc/api/video_codec/RTCNativeVideoEncoder.mm b/sdk/objc/api/video_codec/RTCNativeVideoEncoder.mm
new file mode 100644
index 0000000..be1ddc8
--- /dev/null
+++ b/sdk/objc/api/video_codec/RTCNativeVideoEncoder.mm
@@ -0,0 +1,70 @@
+/*
+ *  Copyright (c) 2024 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCNativeVideoEncoder.h"
+#import "base/RTCMacros.h"
+#include "rtc_base/checks.h"
+
+@implementation RTC_OBJC_TYPE (RTCNativeVideoEncoder)
+
+- (void)setCallback:(RTCVideoEncoderCallback)callback {
+  RTC_DCHECK_NOTREACHED();
+}
+
+- (NSInteger)startEncodeWithSettings:(RTC_OBJC_TYPE(RTCVideoEncoderSettings) *)settings
+                       numberOfCores:(int)numberOfCores {
+  RTC_DCHECK_NOTREACHED();
+  return 0;
+}
+
+- (NSInteger)releaseEncoder {
+  RTC_DCHECK_NOTREACHED();
+  return 0;
+}
+
+- (NSInteger)encode:(RTC_OBJC_TYPE(RTCVideoFrame) *)frame
+    codecSpecificInfo:(nullable id<RTC_OBJC_TYPE(RTCCodecSpecificInfo)>)info
+           frameTypes:(NSArray<NSNumber *> *)frameTypes {
+  RTC_DCHECK_NOTREACHED();
+  return 0;
+}
+
+- (int)setBitrate:(uint32_t)bitrateKbit framerate:(uint32_t)framerate {
+  RTC_DCHECK_NOTREACHED();
+  return 0;
+}
+
+- (NSString *)implementationName {
+  RTC_DCHECK_NOTREACHED();
+  return nil;
+}
+
+- (nullable RTC_OBJC_TYPE(RTCVideoEncoderQpThresholds) *)scalingSettings {
+  RTC_DCHECK_NOTREACHED();
+  return nil;
+}
+
+- (NSInteger)resolutionAlignment {
+  RTC_DCHECK_NOTREACHED();
+  return 1;
+}
+
+- (BOOL)applyAlignmentToAllSimulcastLayers {
+  RTC_DCHECK_NOTREACHED();
+  return NO;
+}
+
+- (BOOL)supportsNativeHandle {
+  RTC_DCHECK_NOTREACHED();
+  return NO;
+}
+@end
diff --git a/sdk/objc/api/video_codec/RTCNativeVideoEncoderBuilder+Native.h b/sdk/objc/api/video_codec/RTCNativeVideoEncoderBuilder+Native.h
new file mode 100644
index 0000000..6d22c6c
--- /dev/null
+++ b/sdk/objc/api/video_codec/RTCNativeVideoEncoderBuilder+Native.h
@@ -0,0 +1,25 @@
+/*
+ *  Copyright (c) 2024 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "base/RTCMacros.h"
+
+#include <memory>
+
+#include "api/environment/environment.h"
+#include "api/video_codecs/video_encoder.h"
+
+@protocol RTC_OBJC_TYPE
+(RTCNativeVideoEncoderBuilder)
+
+    - (std::unique_ptr<webrtc::VideoEncoder>)build : (const webrtc::Environment&)env;
+
+@end
diff --git a/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h b/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h
index 8df9cee..b0e6823 100644
--- a/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h
+++ b/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h
@@ -10,6 +10,7 @@
 
 #import <Foundation/Foundation.h>
 
+#import "RTCNativeVideoEncoder.h"
 #import "base/RTCMacros.h"
 #import "base/RTCVideoEncoder.h"
 
@@ -17,7 +18,8 @@
 #include "api/video_codecs/video_encoder.h"
 #include "media/base/codec.h"
 
-@interface RTC_OBJC_TYPE (RTCWrappedNativeVideoEncoder) : NSObject <RTC_OBJC_TYPE (RTCVideoEncoder)>
+// TODO: bugs.webrtc.org/15860 - Remove in favor of the RTCNativeVideoEncoderBuilder
+@interface RTC_OBJC_TYPE (RTCWrappedNativeVideoEncoder) : RTC_OBJC_TYPE (RTCNativeVideoEncoder)
 
 - (instancetype)initWithNativeEncoder:(std::unique_ptr<webrtc::VideoEncoder>)encoder;
 
diff --git a/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm b/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm
index 4160572..0fc2eca 100644
--- a/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm
+++ b/sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm
@@ -12,7 +12,6 @@
 
 #import "RTCWrappedNativeVideoEncoder.h"
 #import "base/RTCMacros.h"
-#import "helpers/NSString+StdString.h"
 
 @implementation RTC_OBJC_TYPE (RTCWrappedNativeVideoEncoder) {
   std::unique_ptr<webrtc::VideoEncoder> _wrappedEncoder;
@@ -30,57 +29,4 @@
   return std::move(_wrappedEncoder);
 }
 
-#pragma mark - RTC_OBJC_TYPE(RTCVideoEncoder)
-
-- (void)setCallback:(RTCVideoEncoderCallback)callback {
-  RTC_DCHECK_NOTREACHED();
-}
-
-- (NSInteger)startEncodeWithSettings:(RTC_OBJC_TYPE(RTCVideoEncoderSettings) *)settings
-                       numberOfCores:(int)numberOfCores {
-  RTC_DCHECK_NOTREACHED();
-  return 0;
-}
-
-- (NSInteger)releaseEncoder {
-  RTC_DCHECK_NOTREACHED();
-  return 0;
-}
-
-- (NSInteger)encode:(RTC_OBJC_TYPE(RTCVideoFrame) *)frame
-    codecSpecificInfo:(nullable id<RTC_OBJC_TYPE(RTCCodecSpecificInfo)>)info
-           frameTypes:(NSArray<NSNumber *> *)frameTypes {
-  RTC_DCHECK_NOTREACHED();
-  return 0;
-}
-
-- (int)setBitrate:(uint32_t)bitrateKbit framerate:(uint32_t)framerate {
-  RTC_DCHECK_NOTREACHED();
-  return 0;
-}
-
-- (NSString *)implementationName {
-  RTC_DCHECK_NOTREACHED();
-  return nil;
-}
-
-- (nullable RTC_OBJC_TYPE(RTCVideoEncoderQpThresholds) *)scalingSettings {
-  RTC_DCHECK_NOTREACHED();
-  return nil;
-}
-
-- (NSInteger)resolutionAlignment {
-  RTC_DCHECK_NOTREACHED();
-  return 1;
-}
-
-- (BOOL)applyAlignmentToAllSimulcastLayers {
-  RTC_DCHECK_NOTREACHED();
-  return NO;
-}
-
-- (BOOL)supportsNativeHandle {
-  RTC_DCHECK_NOTREACHED();
-  return NO;
-}
 @end
diff --git a/sdk/objc/native/src/objc_video_encoder_factory.h b/sdk/objc/native/src/objc_video_encoder_factory.h
index 85a1e53..c27782b 100644
--- a/sdk/objc/native/src/objc_video_encoder_factory.h
+++ b/sdk/objc/native/src/objc_video_encoder_factory.h
@@ -15,6 +15,7 @@
 
 #import "base/RTCMacros.h"
 
+#include "api/environment/environment.h"
 #include "api/video_codecs/video_encoder_factory.h"
 
 @protocol RTC_OBJC_TYPE
@@ -32,6 +33,8 @@
   std::vector<SdpVideoFormat> GetSupportedFormats() const override;
   std::vector<SdpVideoFormat> GetImplementations() const override;
   std::unique_ptr<VideoEncoder> CreateVideoEncoder(const SdpVideoFormat& format) override;
+  std::unique_ptr<VideoEncoder> Create(const Environment& env,
+                                       const SdpVideoFormat& format) override;
   std::unique_ptr<EncoderSelectorInterface> GetEncoderSelector() const override;
 
  private:
diff --git a/sdk/objc/native/src/objc_video_encoder_factory.mm b/sdk/objc/native/src/objc_video_encoder_factory.mm
index d4ea79c..04515af 100644
--- a/sdk/objc/native/src/objc_video_encoder_factory.mm
+++ b/sdk/objc/native/src/objc_video_encoder_factory.mm
@@ -19,10 +19,12 @@
 #import "sdk/objc/api/peerconnection/RTCEncodedImage+Private.h"
 #import "sdk/objc/api/peerconnection/RTCVideoCodecInfo+Private.h"
 #import "sdk/objc/api/peerconnection/RTCVideoEncoderSettings+Private.h"
+#import "sdk/objc/api/video_codec/RTCNativeVideoEncoderBuilder+Native.h"
 #import "sdk/objc/api/video_codec/RTCVideoCodecConstants.h"
 #import "sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h"
 #import "sdk/objc/helpers/NSString+StdString.h"
 
+#include "api/environment/environment.h"
 #include "api/video/video_frame.h"
 #include "api/video_codecs/sdp_video_format.h"
 #include "api/video_codecs/video_encoder.h"
@@ -195,6 +197,20 @@
   }
 }
 
+std::unique_ptr<VideoEncoder> ObjCVideoEncoderFactory::Create(const Environment &env,
+                                                              const SdpVideoFormat &format) {
+  RTC_OBJC_TYPE(RTCVideoCodecInfo) *info =
+      [[RTC_OBJC_TYPE(RTCVideoCodecInfo) alloc] initWithNativeSdpVideoFormat:format];
+  id<RTC_OBJC_TYPE(RTCVideoEncoder)> encoder = [encoder_factory_ createEncoder:info];
+  if ([encoder conformsToProtocol:@protocol(RTC_OBJC_TYPE(RTCNativeVideoEncoderBuilder))]) {
+    return [((id<RTC_OBJC_TYPE(RTCNativeVideoEncoderBuilder)>)encoder) build:env];
+  } else if ([encoder isKindOfClass:[RTC_OBJC_TYPE(RTCWrappedNativeVideoEncoder) class]]) {
+    return [(RTC_OBJC_TYPE(RTCWrappedNativeVideoEncoder) *)encoder releaseWrappedEncoder];
+  } else {
+    return std::make_unique<ObjCVideoEncoder>(encoder);
+  }
+}
+
 std::unique_ptr<VideoEncoderFactory::EncoderSelectorInterface>
     ObjCVideoEncoderFactory::GetEncoderSelector() const {
   if ([encoder_factory_ respondsToSelector:@selector(encoderSelector)]) {
diff --git a/sdk/objc/unittests/objc_video_encoder_factory_tests.mm b/sdk/objc/unittests/objc_video_encoder_factory_tests.mm
index 9a4fee2..a04e797 100644
--- a/sdk/objc/unittests/objc_video_encoder_factory_tests.mm
+++ b/sdk/objc/unittests/objc_video_encoder_factory_tests.mm
@@ -14,6 +14,7 @@
 
 #include "sdk/objc/native/src/objc_video_encoder_factory.h"
 
+#include "api/environment/environment_factory.h"
 #include "api/video_codecs/sdp_video_format.h"
 #include "api/video_codecs/video_encoder.h"
 #import "base/RTCVideoEncoder.h"
@@ -55,7 +56,7 @@
     id<RTC_OBJC_TYPE(RTCVideoEncoderFactory)> factory) {
   webrtc::ObjCVideoEncoderFactory encoder_factory(factory);
   webrtc::SdpVideoFormat format("H264");
-  return encoder_factory.CreateVideoEncoder(format);
+  return encoder_factory.Create(webrtc::CreateEnvironment(), format);
 }
 
 #pragma mark -
