diff --git a/media/engine/simulcast_encoder_adapter.cc b/media/engine/simulcast_encoder_adapter.cc
index 5ca2a03..7007db6 100644
--- a/media/engine/simulcast_encoder_adapter.cc
+++ b/media/engine/simulcast_encoder_adapter.cc
@@ -265,7 +265,8 @@
               .Vp8BoostBaseLayerQuality()),
       prefer_temporal_support_on_base_layer_(env_.field_trials().IsEnabled(
           "WebRTC-Video-PreferTemporalSupportOnBaseLayer")),
-      per_layer_pli_(SupportsPerLayerPictureLossIndication(format.parameters)) {
+      per_layer_pli_(SupportsPerLayerPictureLossIndication(format.parameters)),
+      encoder_info_override_(env.field_trials()) {
   RTC_DCHECK(primary_factory);
 
   // The adapter is typically created on the worker thread, but operated on
diff --git a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc
index 0eaea92..6a97c63 100644
--- a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc
+++ b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc
@@ -180,6 +180,7 @@
       frame_for_encode_(nullptr),
       encoded_image_callback_(nullptr),
       timestamp_(0),
+      encoder_info_override_(env.field_trials()),
       disable_frame_dropping_(env.field_trials().IsEnabled(
           "WebRTC-LibaomAv1Encoder-DisableFrameDropping")),
       max_consec_frame_drop_(GetMaxConsecutiveFrameDrop(env.field_trials())) {}
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
index e9cf5d8..be3ccc3 100644
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
@@ -316,6 +316,7 @@
       last_encoder_output_time_(kMaxSimulcastStreams,
                                 Timestamp::MinusInfinity()),
       framerate_controller_(variable_framerate_screenshare::kMinFps),
+      encoder_info_override_(env_.field_trials()),
       max_frame_drop_interval_(ParseFrameDropInterval(env_.field_trials())),
       android_specific_threading_settings_(env_.field_trials().IsEnabled(
           "WebRTC-LibvpxVp8Encoder-AndroidSpecificThreadingSettings")) {
diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
index 31f41a0..877d10d 100644
--- a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
+++ b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
@@ -264,6 +264,7 @@
       performance_flags_(ParsePerformanceFlagsFromTrials(env.field_trials())),
       num_steady_state_frames_(0),
       config_changed_(true),
+      encoder_info_override_(env.field_trials()),
       svc_frame_drop_config_(ParseSvcFrameDropConfig(env.field_trials())) {
   codec_ = {};
   memset(&svc_params_, 0, sizeof(vpx_svc_extra_cfg_t));
diff --git a/rtc_base/experiments/BUILD.gn b/rtc_base/experiments/BUILD.gn
index c3e0066..a8cd9c5 100644
--- a/rtc_base/experiments/BUILD.gn
+++ b/rtc_base/experiments/BUILD.gn
@@ -145,8 +145,8 @@
   deps = [
     ":field_trial_parser",
     "..:logging",
+    "../../api:field_trials_view",
     "../../api/video_codecs:video_codecs_api",
-    "../../system_wrappers:field_trial",
   ]
   absl_deps = [
     "//third_party/abseil-cpp/absl/strings",
diff --git a/rtc_base/experiments/encoder_info_settings.cc b/rtc_base/experiments/encoder_info_settings.cc
index 136201d..e9229df 100644
--- a/rtc_base/experiments/encoder_info_settings.cc
+++ b/rtc_base/experiments/encoder_info_settings.cc
@@ -13,9 +13,9 @@
 #include <stdio.h>
 
 #include "absl/strings/string_view.h"
+#include "api/field_trials_view.h"
 #include "rtc_base/experiments/field_trial_list.h"
 #include "rtc_base/logging.h"
-#include "system_wrappers/include/field_trial.h"
 
 namespace webrtc {
 namespace {
@@ -175,7 +175,8 @@
   }
 }
 
-EncoderInfoSettings::EncoderInfoSettings(absl::string_view name)
+EncoderInfoSettings::EncoderInfoSettings(const FieldTrialsView& field_trials,
+                                         absl::string_view name)
     : requested_resolution_alignment_("requested_resolution_alignment"),
       apply_alignment_to_all_simulcast_layers_(
           "apply_alignment_to_all_simulcast_layers") {
@@ -194,15 +195,15 @@
            [](BitrateLimit* b) { return &b->max_bitrate_bps; })},
       {});
 
-  std::string name_str(name);
-  if (field_trial::FindFullName(name_str).empty()) {
+  std::string experiment_string = field_trials.Lookup(name);
+  if (experiment_string.empty()) {
     // Encoder name not found, use common string applying to all encoders.
-    name_str = "WebRTC-GetEncoderInfoOverride";
+    experiment_string = field_trials.Lookup("WebRTC-GetEncoderInfoOverride");
   }
 
   ParseFieldTrial({&bitrate_limits, &requested_resolution_alignment_,
                    &apply_alignment_to_all_simulcast_layers_},
-                  field_trial::FindFullName(name_str));
+                  experiment_string);
 
   resolution_bitrate_limits_ = ToResolutionBitrateLimits(bitrate_limits.Get());
 }
@@ -220,17 +221,22 @@
 EncoderInfoSettings::~EncoderInfoSettings() {}
 
 SimulcastEncoderAdapterEncoderInfoSettings::
-    SimulcastEncoderAdapterEncoderInfoSettings()
+    SimulcastEncoderAdapterEncoderInfoSettings(
+        const FieldTrialsView& field_trials)
     : EncoderInfoSettings(
+          field_trials,
           "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride") {}
 
-LibvpxVp8EncoderInfoSettings::LibvpxVp8EncoderInfoSettings()
-    : EncoderInfoSettings("WebRTC-VP8-GetEncoderInfoOverride") {}
+LibvpxVp8EncoderInfoSettings::LibvpxVp8EncoderInfoSettings(
+    const FieldTrialsView& field_trials)
+    : EncoderInfoSettings(field_trials, "WebRTC-VP8-GetEncoderInfoOverride") {}
 
-LibvpxVp9EncoderInfoSettings::LibvpxVp9EncoderInfoSettings()
-    : EncoderInfoSettings("WebRTC-VP9-GetEncoderInfoOverride") {}
+LibvpxVp9EncoderInfoSettings::LibvpxVp9EncoderInfoSettings(
+    const FieldTrialsView& field_trials)
+    : EncoderInfoSettings(field_trials, "WebRTC-VP9-GetEncoderInfoOverride") {}
 
-LibaomAv1EncoderInfoSettings::LibaomAv1EncoderInfoSettings()
-    : EncoderInfoSettings("WebRTC-Av1-GetEncoderInfoOverride") {}
+LibaomAv1EncoderInfoSettings::LibaomAv1EncoderInfoSettings(
+    const FieldTrialsView& field_trials)
+    : EncoderInfoSettings(field_trials, "WebRTC-Av1-GetEncoderInfoOverride") {}
 
 }  // namespace webrtc
diff --git a/rtc_base/experiments/encoder_info_settings.h b/rtc_base/experiments/encoder_info_settings.h
index 416bf6b..b200238 100644
--- a/rtc_base/experiments/encoder_info_settings.h
+++ b/rtc_base/experiments/encoder_info_settings.h
@@ -16,6 +16,7 @@
 
 #include "absl/strings/string_view.h"
 #include "absl/types/optional.h"
+#include "api/field_trials_view.h"
 #include "api/video_codecs/video_encoder.h"
 #include "rtc_base/experiments/field_trial_parser.h"
 
@@ -59,7 +60,8 @@
           resolution_bitrate_limits);
 
  protected:
-  explicit EncoderInfoSettings(absl::string_view name);
+  EncoderInfoSettings(const FieldTrialsView& field_trials,
+                      absl::string_view name);
 
  private:
   FieldTrialOptional<uint32_t> requested_resolution_alignment_;
@@ -70,28 +72,29 @@
 // EncoderInfo settings for SimulcastEncoderAdapter.
 class SimulcastEncoderAdapterEncoderInfoSettings : public EncoderInfoSettings {
  public:
-  SimulcastEncoderAdapterEncoderInfoSettings();
+  explicit SimulcastEncoderAdapterEncoderInfoSettings(
+      const FieldTrialsView& field_trials);
   ~SimulcastEncoderAdapterEncoderInfoSettings() override {}
 };
 
 // EncoderInfo settings for LibvpxVp8Encoder.
 class LibvpxVp8EncoderInfoSettings : public EncoderInfoSettings {
  public:
-  LibvpxVp8EncoderInfoSettings();
+  explicit LibvpxVp8EncoderInfoSettings(const FieldTrialsView& field_trials);
   ~LibvpxVp8EncoderInfoSettings() override {}
 };
 
 // EncoderInfo settings for LibvpxVp9Encoder.
 class LibvpxVp9EncoderInfoSettings : public EncoderInfoSettings {
  public:
-  LibvpxVp9EncoderInfoSettings();
+  explicit LibvpxVp9EncoderInfoSettings(const FieldTrialsView& field_trials);
   ~LibvpxVp9EncoderInfoSettings() override {}
 };
 
 // EncoderInfo settings for LibaomAv1Encoder.
 class LibaomAv1EncoderInfoSettings : public EncoderInfoSettings {
  public:
-  LibaomAv1EncoderInfoSettings();
+  explicit LibaomAv1EncoderInfoSettings(const FieldTrialsView& field_trials);
   ~LibaomAv1EncoderInfoSettings() override {}
 };
 
diff --git a/rtc_base/experiments/encoder_info_settings_unittest.cc b/rtc_base/experiments/encoder_info_settings_unittest.cc
index 929c777..5739673 100644
--- a/rtc_base/experiments/encoder_info_settings_unittest.cc
+++ b/rtc_base/experiments/encoder_info_settings_unittest.cc
@@ -11,59 +11,63 @@
 #include "rtc_base/experiments/encoder_info_settings.h"
 
 #include "rtc_base/gunit.h"
-#include "test/field_trial.h"
+#include "test/explicit_key_value_config.h"
 #include "test/gmock.h"
 
 namespace webrtc {
 
+using test::ExplicitKeyValueConfig;
+
 TEST(SimulcastEncoderAdapterSettingsTest, NoValuesWithoutFieldTrial) {
-  SimulcastEncoderAdapterEncoderInfoSettings settings;
+  ExplicitKeyValueConfig field_trials("");
+
+  SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
   EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
   EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
   EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
 }
 
 TEST(SimulcastEncoderAdapterSettingsTest, NoValueForInvalidAlignment) {
-  webrtc::test::ScopedFieldTrials field_trials(
+  ExplicitKeyValueConfig field_trials(
       "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
       "requested_resolution_alignment:0/");
 
-  SimulcastEncoderAdapterEncoderInfoSettings settings;
+  SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
   EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
 }
 
 TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionAlignment) {
-  webrtc::test::ScopedFieldTrials field_trials(
+  ExplicitKeyValueConfig field_trials(
       "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
       "requested_resolution_alignment:2/");
 
-  SimulcastEncoderAdapterEncoderInfoSettings settings;
+  SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
   EXPECT_EQ(2u, settings.requested_resolution_alignment());
   EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
   EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
 }
 
 TEST(SimulcastEncoderAdapterSettingsTest, GetApplyAlignment) {
-  webrtc::test::ScopedFieldTrials field_trials(
+  ExplicitKeyValueConfig field_trials(
       "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
       "requested_resolution_alignment:3,"
       "apply_alignment_to_all_simulcast_layers/");
 
-  SimulcastEncoderAdapterEncoderInfoSettings settings;
+  SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
   EXPECT_EQ(3u, settings.requested_resolution_alignment());
   EXPECT_TRUE(settings.apply_alignment_to_all_simulcast_layers());
   EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
 }
 
 TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionBitrateLimits) {
-  webrtc::test::ScopedFieldTrials field_trials(
+  ExplicitKeyValueConfig field_trials(
       "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
       "frame_size_pixels:123,"
       "min_start_bitrate_bps:11000,"
       "min_bitrate_bps:44000,"
       "max_bitrate_bps:77000/");
 
-  SimulcastEncoderAdapterEncoderInfoSettings settings;
+  SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
   EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
   EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
   EXPECT_THAT(settings.resolution_bitrate_limits(),
@@ -72,14 +76,14 @@
 }
 
 TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionBitrateLimitsWithList) {
-  webrtc::test::ScopedFieldTrials field_trials(
+  ExplicitKeyValueConfig field_trials(
       "WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
       "frame_size_pixels:123|456|789,"
       "min_start_bitrate_bps:11000|22000|33000,"
       "min_bitrate_bps:44000|55000|66000,"
       "max_bitrate_bps:77000|88000|99000/");
 
-  SimulcastEncoderAdapterEncoderInfoSettings settings;
+  SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
   EXPECT_THAT(
       settings.resolution_bitrate_limits(),
       ::testing::ElementsAre(
@@ -89,13 +93,13 @@
 }
 
 TEST(EncoderSettingsTest, CommonSettingsUsedIfEncoderNameUnspecified) {
-  webrtc::test::ScopedFieldTrials field_trials(
+  ExplicitKeyValueConfig field_trials(
       "WebRTC-VP8-GetEncoderInfoOverride/requested_resolution_alignment:2/"
       "WebRTC-GetEncoderInfoOverride/requested_resolution_alignment:3/");
 
-  LibvpxVp8EncoderInfoSettings vp8_settings;
+  LibvpxVp8EncoderInfoSettings vp8_settings(field_trials);
   EXPECT_EQ(2u, vp8_settings.requested_resolution_alignment());
-  LibvpxVp9EncoderInfoSettings vp9_settings;
+  LibvpxVp9EncoderInfoSettings vp9_settings(field_trials);
   EXPECT_EQ(3u, vp9_settings.requested_resolution_alignment());
 }
 
diff --git a/video/end_to_end_tests/resolution_bitrate_limits_tests.cc b/video/end_to_end_tests/resolution_bitrate_limits_tests.cc
index 73df8dc..89d4a9a 100644
--- a/video/end_to_end_tests/resolution_bitrate_limits_tests.cc
+++ b/video/end_to_end_tests/resolution_bitrate_limits_tests.cc
@@ -126,7 +126,8 @@
         encoder_factory_(this),
         payload_name_(payload_name),
         configs_(configs),
-        expectations_(expectations) {}
+        expectations_(expectations),
+        encoder_info_override_(env.field_trials()) {}
 
   void OnFrameGeneratorCapturerCreated(
       test::FrameGeneratorCapturer* frame_generator_capturer) override {
