diff --git a/libmat2/exiftool.py b/libmat2/exiftool.py
index d18b1fbe805cfcd0cca763fd64e58056cb721a27..2e83f1389593bfb7846b30f9cec69801a679097c 100644
--- a/libmat2/exiftool.py
+++ b/libmat2/exiftool.py
@@ -1,3 +1,4 @@
+import functools
 import json
 import logging
 import os
@@ -56,6 +57,7 @@ class ExiftoolParser(abstract.AbstractParser):
             return False
         return True
 
+@functools.lru_cache()
 def _get_exiftool_path() -> str:  # pragma: no cover
     possible_pathes = {
         '/usr/bin/exiftool',              # debian/fedora
diff --git a/libmat2/video.py b/libmat2/video.py
index 0060f782a11d27641fd3cdde8b0ab14709fefbd0..1492ba12b864c16908192105b40835cb366eb5ca 100644
--- a/libmat2/video.py
+++ b/libmat2/video.py
@@ -1,3 +1,4 @@
+import functools
 import os
 import logging
 
@@ -130,6 +131,7 @@ class MP4Parser(AbstractFFmpegParser):
     }
 
 
+@functools.lru_cache()
 def _get_ffmpeg_path() -> str:  # pragma: no cover
     ffmpeg_path = '/usr/bin/ffmpeg'
     if os.path.isfile(ffmpeg_path):