Split Video into Separate Y U V Planes Using FFmpeg
Extracting the individual Y (luminance), U (chrominance blue), and V
(chrominance red) components of a video is a common task in video
analysis, compression research, and visual effects. This guide
demonstrates how to use the powerful extractplanes filter
in FFmpeg to isolate these three color channels and save them
simultaneously into three independent, grayscale video files.
The FFmpeg Command
To extract and save the Y, U, and V planes in a single command pass, use the following FFmpeg syntax:
ffmpeg -i input.mp4 -filter_complex "extractplanes=y+u+v[y][u][v]" \
-map "[y]" y_plane.mp4 \
-map "[u]" u_plane.mp4 \
-map "[v]" v_plane.mp4How the Command Works
-i input.mp4: Specifies your input video file.-filter_complex "extractplanes=y+u+v[y][u][v]": This is the core filter. It takes the input video, extracts the Y, U, and V planes, and assigns them to the temporary output labels[y],[u], and[v].-map "[y]" y_plane.mp4: Selects the stream labeled[y](the luminance channel) and saves it asy_plane.mp4.-map "[u]" u_plane.mp4: Selects the stream labeled[u](chrominance blue) and saves it asu_plane.mp4.-map "[v]" v_plane.mp4: Selects the stream labeled[v](chrominance red) and saves it asv_plane.mp4.
Because individual color channels do not contain RGB color data on their own, the resulting output videos for the U and V planes will appear as grayscale videos representing the intensity of those specific color channels.
Choosing the Right Codec (Optional)
By default, FFmpeg will auto-select a codec based on your output
container (like H.264 for .mp4). If you require lossless
quality to preserve the exact raw pixel data of each plane for
scientific or editing purposes, you can encode them using the
ffv1 or x264 lossless encoder:
ffmpeg -i input.mp4 -filter_complex "extractplanes=y+u+v[y][u][v]" \
-map "[y]" -c:v libx264 -crf 0 y_plane.mp4 \
-map "[u]" -c:v libx264 -crf 0 u_plane.mp4 \
-map "[v]" -c:v libx264 -crf 0 v_plane.mp4