diff --git a/cmdutils.c b/cmdutils.c
index 5a0c8f378fb46f91db4e902f3d31100f078742f5..8265fbcd0fe98c2a21918fc9f6e71ffee1f0f508 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -849,6 +849,23 @@ FILE *get_preset_file(char *filename, size_t filename_size,
         av_strlcpy(filename, preset_name, filename_size);
         f = fopen(filename, "r");
     } else {
+#ifdef _WIN32
+        char datadir[MAX_PATH], *ls;
+        base[2] = NULL;
+
+        if (GetModuleFileNameA(GetModuleHandleA(NULL), datadir, sizeof(datadir) - 1))
+        {
+            for (ls = datadir; ls < datadir + strlen(datadir); ls++)
+                if (*ls == '\\') *ls = '/';
+
+            if (ls = strrchr(datadir, '/'))
+            {
+                *ls = 0;
+                strncat(datadir, "/ffpresets",  sizeof(datadir) - 1 - strlen(datadir));
+                base[2] = datadir;
+            }
+        }
+#endif
         for (i = 0; i < 3 && !f; i++) {
             if (!base[i])
                 continue;
diff --git a/cmdutils.h b/cmdutils.h
index 5a9314681a176068d911c2cb6d6c5dfae8c6a631..9e5827fc2b550779375f3ec0f06b5669b2700383 100644
--- a/cmdutils.h
+++ b/cmdutils.h
@@ -243,7 +243,8 @@ int read_file(const char *filename, char **bufptr, size_t *size);
  * If is_path is non-zero, look for the file in the path preset_name.
  * Otherwise search for a file named arg.ffpreset in the directories
  * $FFMPEG_DATADIR (if set), $HOME/.ffmpeg, and in the datadir defined
- * at configuration time, in that order. If no such file is found and
+ * at configuration time or in a "ffpresets" folder along the executable
+ * on win32, in that order. If no such file is found and
  * codec_name is defined, then search for a file named
  * codec_name-preset_name.ffpreset in the above-mentioned directories.
  *
diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
index 77fde185643c14bfed0010af094398a3d4818dc5..fe9e9a9e92bee19b2c698d433a5008ff4f6ce28b 100644
--- a/doc/ffmpeg.texi
+++ b/doc/ffmpeg.texi
@@ -816,6 +816,7 @@ following rules:
 First ffmpeg searches for a file named @var{arg}.ffpreset in the
 directories @file{$FFMPEG_DATADIR} (if set), and @file{$HOME/.ffmpeg}, and in
 the datadir defined at configuration time (usually @file{PREFIX/share/ffmpeg})
+or in a @file{ffpresets} folder along the executable on win32,
 in that order. For example, if the argument is @code{libx264-max}, it will
 search for the file @file{libx264-max.ffpreset}.