diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c
index 0590e99093..ede6888bd3 100644
--- a/libavfilter/vf_libplacebo.c
+++ b/libavfilter/vf_libplacebo.c
@@ -116,6 +116,18 @@ typedef struct LibplaceboContext {
     int num_hooks;
 } LibplaceboContext;
 
+static inline enum pl_log_level get_log_level(void)
+{
+    int av_lev = av_log_get_level();
+    return av_lev >= AV_LOG_TRACE   ? PL_LOG_TRACE :
+           av_lev >= AV_LOG_DEBUG   ? PL_LOG_DEBUG :
+           av_lev >= AV_LOG_VERBOSE ? PL_LOG_INFO :
+           av_lev >= AV_LOG_WARNING ? PL_LOG_WARN :
+           av_lev >= AV_LOG_ERROR   ? PL_LOG_ERR :
+           av_lev >= AV_LOG_FATAL   ? PL_LOG_FATAL :
+                                      PL_LOG_NONE;
+}
+
 static void pl_av_log(void *log_ctx, enum pl_log_level level, const char *msg)
 {
     int av_lev;
@@ -177,7 +189,7 @@ static int libplacebo_init(AVFilterContext *avctx)
 
     /* Create libplacebo log context */
     s->log = pl_log_create(PL_API_VER, pl_log_params(
-        .log_level = PL_LOG_DEBUG,
+        .log_level = get_log_level(),
         .log_cb = pl_av_log,
         .log_priv = s,
     ));
@@ -447,6 +459,7 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
         goto fail;
     }
 
+    pl_log_level_update(s->log, get_log_level());
     if (!s->initialized)
         RET(init_vulkan(ctx));