diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh
deleted file mode 100644
index 37072bf3cfef159b12d2d92ba84e783debf5284f..0000000000000000000000000000000000000000
--- a/recipes/ffmpeg/recipe.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-VERSION=4.0
-GIT=https://github.com/FFmpeg/FFmpeg
-BRANCH=release/$VERSION
-BUILD_DEPENDS=(liborbital llvm mesa sdl2 zlib)
-
-function recipe_version {
-    echo "$VERSION"
-    skip=1
-}
-
-function recipe_build {
-    export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include"
-    export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static"
-    ./configure \
-        --enable-cross-compile \
-        --target-os=redox \
-        --arch=${ARCH} \
-        --cross_prefix=${HOST}- \
-        --prefix=/ \
-        --disable-network \
-        --enable-sdl2 \
-        --enable-zlib \
-        --enable-encoder=png \
-        --enable-decoder=png
-    "$REDOX_MAKE" -j"$($NPROC)"
-    skip=1
-}
-
-function recipe_clean {
-    "$REDOX_MAKE" clean
-    skip=1
-}
-
-function recipe_stage {
-    dest="$(realpath $1)"
-    "$REDOX_MAKE" DESTDIR="$dest" install
-    skip=1
-}
diff --git a/recipes/ffmpeg/recipe.toml b/recipes/ffmpeg/recipe.toml
new file mode 100644
index 0000000000000000000000000000000000000000..49a6e873a4ab71843b7e0694b941d9e46e3a3b27
--- /dev/null
+++ b/recipes/ffmpeg/recipe.toml
@@ -0,0 +1,31 @@
+[source]
+tar = "https://ffmpeg.org/releases/ffmpeg-5.1.2.tar.xz"
+patches = [
+    "ffmpeg.patch"
+]
+
+[build]
+template = "custom"
+dependencies = [
+    "liborbital",
+    "llvm",
+    "mesa",
+    "sdl2",
+    "zlib",
+]
+script = """
+ARCH="${TARGET%%-*}"
+COOKBOOK_CONFIGURE_FLAGS=(
+    --enable-cross-compile
+    --target-os=redox
+    --arch="${ARCH}"
+    --cross_prefix="${TARGET}-"
+    --prefix=/
+    --disable-network
+    --enable-sdl2
+    --enable-zlib
+    --enable-encoder=png
+    --enable-decoder=png
+)
+cookbook_configure
+"""