diff --git a/graphics/osg/Makefile b/graphics/osg/Makefile
index 4611594e2bcb..dd3e2f5e37ef 100644
--- a/graphics/osg/Makefile
+++ b/graphics/osg/Makefile
@@ -54,7 +54,7 @@ COLLADA_DESC=		COLLADA (dae) format support
 CURL_LIB_DEPENDS=	libcurl.so:ftp/curl
 CURL_VARS=		FORCE_REQUIRE+=CURL
 CURL_VARS_OFF=		FORCE_IGNORE+=CURL
-FFMPEG_LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg
+FFMPEG_LIB_DEPENDS=	libavcodec.so.58:multimedia/ffmpeg4
 FFMPEG_VARS=		FORCE_REQUIRE+=FFmpeg
 FFMPEG_VARS_OFF=	FORCE_IGNORE+=FFmpeg
 FREETYPE_LIB_DEPENDS=	libfreetype.so:print/freetype2
@@ -148,6 +148,8 @@ post-patch:
 		${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g'
 	@${REINPLACE_CMD} -e '/FIND_LIBRARY.*DL_LIBRARY/ d; \
 		s|-pedantic||' ${WRKSRC}/CMakeLists.txt
+	@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+		${PATCH_WRKSRC}/CMakeModules/FindFFmpeg.cmake
 .for p in ${FORCE_REQUIRE}
 	@${REINPLACE_CMD} -e '/FIND_PACKAGE.*${p}/ s|)$$| REQUIRED&|' \
 		${WRKSRC}/CMakeLists.txt
diff --git a/graphics/osg/files/patch-CMakeModules_FindFFmpeg.cmake b/graphics/osg/files/patch-CMakeModules_FindFFmpeg.cmake
new file mode 100644
index 000000000000..21ea506f30a7
--- /dev/null
+++ b/graphics/osg/files/patch-CMakeModules_FindFFmpeg.cmake
@@ -0,0 +1,10 @@
+--- CMakeModules/FindFFmpeg.cmake.orig	2023-04-24 09:16:25 UTC
++++ CMakeModules/FindFFmpeg.cmake
+@@ -21,6 +21,7 @@
+ #                                                       (in new version case, use by ffmpeg header) 
+ #and ${FFMPEG_libname_INCLUDE_DIRS/libname}             (in new version case, use by osg plugin code)
+ 
++set(CMAKE_PREFIX_PATH "%%LOCALBASE%%/ffmpeg4;%%LOCALBASE%%/ffmpeg4/libexec")
+ 
+ # Macro to find header and lib directories
+ # example: FFMPEG_FIND(AVFORMAT avformat avformat.h)
diff --git a/graphics/osg34/Makefile b/graphics/osg34/Makefile
index 75356ffc5b47..42465672d234 100644
--- a/graphics/osg34/Makefile
+++ b/graphics/osg34/Makefile
@@ -23,7 +23,7 @@ GH_PROJECT=	OpenSceneGraph
 
 CONFLICTS_INSTALL=osg
 
-USES=		alias cmake compiler:c++11-lang gl jpeg pkgconfig xorg
+USES=		alias cmake compiler:c++11-lang gl jpeg localbase pkgconfig xorg
 USE_GL=		gl glu
 USE_XORG=	x11
 USE_LDCONFIG=	yes
@@ -54,7 +54,7 @@ OPTIONS_SUB=	yes
 CURL_LIB_DEPENDS=	libcurl.so:ftp/curl
 CURL_VARS=		FORCE_REQUIRE+=CURL
 CURL_VARS_OFF=		FORCE_IGNORE+=CURL
-FFMPEG_LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg
+FFMPEG_LIB_DEPENDS=	libavcodec.so.58:multimedia/ffmpeg4
 FFMPEG_VARS=		FORCE_REQUIRE+=FFmpeg
 FFMPEG_VARS_OFF=	FORCE_IGNORE+=FFmpeg
 FREETYPE_LIB_DEPENDS=	libfreetype.so:print/freetype2
@@ -138,6 +138,8 @@ post-patch:
 		${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g'
 	@${REINPLACE_CMD} -e '/FIND_LIBRARY.*DL_LIBRARY/ d' \
 		${WRKSRC}/CMakeLists.txt
+	@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+		${PATCH_WRKSRC}/CMakeModules/FindFFmpeg.cmake
 .for p in ${FORCE_REQUIRE}
 	@${REINPLACE_CMD} -e '/FIND_PACKAGE.*${p}/ s|)$$| REQUIRED&|' \
 		${WRKSRC}/CMakeLists.txt
diff --git a/graphics/osg34/files/patch-CMakeModules_FindFFmpeg.cmake b/graphics/osg34/files/patch-CMakeModules_FindFFmpeg.cmake
new file mode 100644
index 000000000000..8877dac1de45
--- /dev/null
+++ b/graphics/osg34/files/patch-CMakeModules_FindFFmpeg.cmake
@@ -0,0 +1,10 @@
+--- CMakeModules/FindFFmpeg.cmake.orig	2023-04-24 09:18:12 UTC
++++ CMakeModules/FindFFmpeg.cmake
+@@ -21,6 +21,7 @@
+ #                                                       (in new version case, use by ffmpeg header) 
+ #and ${FFMPEG_libname_INCLUDE_DIRS/libname}             (in new version case, use by osg plugin code)
+ 
++set(CMAKE_PREFIX_PATH "%%LOCALBASE%%/ffmpeg4;%%LOCALBASE%%/ffmpeg4/libexec")
+ 
+ # Macro to find header and lib directories
+ # example: FFMPEG_FIND(AVFORMAT avformat avformat.h)