diff --git a/src/media/media_encoder.cpp b/src/media/media_encoder.cpp
index 56c4046aa7152f02cc31ec5cbaf07133bc40a77c..91f3ab05e870f6cc7d21c8d58370f3edcf55540f 100644
--- a/src/media/media_encoder.cpp
+++ b/src/media/media_encoder.cpp
@@ -160,6 +160,12 @@ MediaEncoder::openFileOutput(const std::string& filename, std::map<std::string,
 {
     avformat_free_context(outputCtx_);
     avformat_alloc_output_context2(&outputCtx_, nullptr, nullptr, filename.c_str());
+
+    if (!options["title"].empty())
+        av_dict_set(&outputCtx_->metadata, "title", options["title"].c_str(), 0);
+    if (!options["description"].empty())
+        av_dict_set(&outputCtx_->metadata, "description", options["description"].c_str(), 0);
+
     auto bitrate = SystemCodecInfo::DEFAULT_MAX_BITRATE;
     auto quality = SystemCodecInfo::DEFAULT_CODEC_QUALITY;
     // ensure all options retrieved later on are in options_ (insert does nothing if key exists)
diff --git a/test/unitTest/media/test_media_encoder.cpp b/test/unitTest/media/test_media_encoder.cpp
index 2a1fb24eb539355bf074dfb1336fee91fbd2320a..a251b518a73b1780a4c4a24829530336b0cf1e70 100644
--- a/test/unitTest/media/test_media_encoder.cpp
+++ b/test/unitTest/media/test_media_encoder.cpp
@@ -150,6 +150,8 @@ MediaEncoderTest::testMultiStream()
     const constexpr int width = 320;
     const constexpr int height = 240;
     std::map<std::string, std::string> options;
+    options["title"] = "Encoder Unit Test";
+    options["description"] = "Description goes here";
     options["sample_rate"] = std::to_string(sampleRate);
     options["channels"] = std::to_string(nbChannels);
     options["width"] = std::to_string(width);