diff --git a/apps/aomenc.c b/apps/aomenc.c
index 2e5d35c..a9c6f78 100644
--- a/apps/aomenc.c
+++ b/apps/aomenc.c
@@ -1463,8 +1463,9 @@
 #if CONFIG_WEBM_IO
   if (stream->config.write_webm) {
     stream->webm_ctx.stream = stream->file;
-    write_webm_file_header(&stream->webm_ctx, cfg, stream->config.stereo_fmt,
-                           global->codec->fourcc, pixel_aspect_ratio);
+    write_webm_file_header(&stream->webm_ctx, &stream->encoder, cfg,
+                           stream->config.stereo_fmt, global->codec->fourcc,
+                           pixel_aspect_ratio);
   }
 #else
   (void)pixel_aspect_ratio;
@@ -2153,10 +2154,11 @@
     }
 
     FOREACH_STREAM(stream, streams) { setup_pass(stream, &global, pass); }
+    FOREACH_STREAM(stream, streams) { initialize_encoder(stream, &global); }
     FOREACH_STREAM(stream, streams) {
       open_output_file(stream, &global, &input.pixel_aspect_ratio);
     }
-    FOREACH_STREAM(stream, streams) { initialize_encoder(stream, &global); }
+
     if (strcmp(global.codec->name, "av1") == 0 ||
         strcmp(global.codec->name, "av1") == 0) {
       // Check to see if at least one stream uses 16 bit internal.
diff --git a/common/webmenc.cc b/common/webmenc.cc
index 58ab336..02f9850 100644
--- a/common/webmenc.cc
+++ b/common/webmenc.cc
@@ -13,6 +13,7 @@
 
 #include <string>
 
+#include "common/av1_config.h"
 #include "third_party/libwebm/mkvmuxer/mkvmuxer.h"
 #include "third_party/libwebm/mkvmuxer/mkvmuxerutil.h"
 #include "third_party/libwebm/mkvmuxer/mkvwriter.h"
@@ -23,6 +24,7 @@
 }  // namespace
 
 void write_webm_file_header(struct WebmOutputContext *webm_ctx,
+                            aom_codec_ctx_t *encoder_ctx,
                             const aom_codec_enc_cfg_t *cfg,
                             stereo_format_t stereo_fmt, unsigned int fourcc,
                             const struct AvxRational *par) {
@@ -46,6 +48,26 @@
                              static_cast<int>(cfg->g_h), kVideoTrackNumber);
   mkvmuxer::VideoTrack *const video_track = static_cast<mkvmuxer::VideoTrack *>(
       segment->GetTrackByNumber(video_track_id));
+
+  aom_fixed_buf_t *obu_sequence_header =
+      aom_codec_get_global_headers(encoder_ctx);
+  if (obu_sequence_header != NULL) {
+    Av1Config av1_config;
+    if (get_av1config_from_obu(
+            reinterpret_cast<const uint8_t *>(obu_sequence_header->buf),
+            obu_sequence_header->sz, false, &av1_config) == 0) {
+      uint8_t av1_config_buffer[4] = { 0 };
+      size_t bytes_written = 0;
+      if (write_av1config(&av1_config, sizeof(av1_config_buffer),
+                          &bytes_written, av1_config_buffer) == 0) {
+        video_track->SetCodecPrivate(av1_config_buffer,
+                                     sizeof(av1_config_buffer));
+      }
+    }
+    free(obu_sequence_header->buf);
+    free(obu_sequence_header);
+  }
+
   video_track->SetStereoMode(stereo_fmt);
   const char *codec_id;
   switch (fourcc) {
diff --git a/common/webmenc.h b/common/webmenc.h
index aa9832f..9d459a7 100644
--- a/common/webmenc.h
+++ b/common/webmenc.h
@@ -39,6 +39,7 @@
 } stereo_format_t;
 
 void write_webm_file_header(struct WebmOutputContext *webm_ctx,
+                            aom_codec_ctx_t *encoder_ctx,
                             const aom_codec_enc_cfg_t *cfg,
                             stereo_format_t stereo_fmt, unsigned int fourcc,
                             const struct AvxRational *par);
