Capturing the video on Meta Quest

It is simple in Meta Quest to record at 60fps but... the true way to capture VR is to tweak a few settings. there is a secret video capture mode that can reach produce a proper 120fps file for your enjoyment capture will be done with all cables unplugged some simple steps below

How to record 120hz gameplay on oculus quest 3

download sidequest
https://sidequestvr.com/setup-howto

download ffmpeg
https://www.ffmpeg.org/download.html

-------------  ADB
adb  shell setprop debug.oculus.fullRateCapture 1; setprop debug.oculus.capture.width 1632; setprop debug.oculus.capture.height 1408; setprop debug.oculus.capture.fps 120; setprop debug.oculus.capture.bitrate 35000000; setprop debug.oculus.fullRateCapture 1;

------------- NVIDIA
c:\ffmpeg\bin\ffmpeg   -hwaccel auto ^
  -i "com.oculus.vrshell-20240719-151313.mp4" ^
 -vf "tblend=average" -r 60   ^
 -c:v h264_nvenc -rc vbr -cq 15 -preset p7 -b:v 0K  ^
 -pix_fmt yuv420p  -c:a copy -movflags faststart ^
 "in-hat.mkv"

-------- CPU
c:\ffmpeg\bin\ffmpeg   -hwaccel auto ^
  -i "com.oculus.vrshell-20240719-151313.mp4" ^
 -vf "tblend=average" -r 60   ^
 -c:v h264  -rc vbr -cq 15   -b:v 0K  ^
 -pix_fmt yuv420p  -c:a copy -movflags faststart ^
 "eeeeeeee.mkv"
 
hometreegamestudio youtube channel

files in this example

  • repossessed-Y68-120vhz.mp4
  • repossessed-Y68-60hz-cpu26.mp4
  • repossessed-Y68-60hz-nv26.mp4
  • repossessed-Y68-SLOMO.mp4
  • Meta Quest Developer Hub

    Add the custom command to Device Manager

    adb -s _MQDH_CONNECTED_DEVICE_SERIAL_ID_ shell setprop debug.oculus.fullRateCapture 1; setprop debug.oculus.capture.width 1632; setprop debug.oculus.capture.height 1408; setprop debug.oculus.capture.fps 120; setprop debug.oculus.capture.bitrate 35000000; setprop debug.oculus.fullRateCapture 1;

    The game needs to be paused when you send this command. check that its recording at the correct rate before you unplug cable. and enable Record Mode

    16:9 Indeed this produuces a square file so you may want to crop some off the top and stretch it out thats how you keep your hands on screen

    FFMPEG

    Once you have copied the MP4 file to your Windows PC you will need to convert from variable framerate in the proper way

    Rough Cut

    The example is cut from a larger file without reencoding (the first few seconds will be messed up)

    REM === TRUNCATE === ffmpeg -ss 00:00:36.8 -t 00:00:47 ^ -i "..\com.HomeTree.Repossessed-20240117-224849.mp4" ^ -c copy "repossessed-Y68-120hz.mp4"

    Mastering the file from Quest

    To blend a high variable rate file to 60fps we will always add this

    -vf "tblend=average" -r 60

    For best quality use your CPU

    REM === CPU === ffmpeg -hwaccel auto ^ -i "repossessed-Y68-120vhz.mp4" ^ -vf "tblend=average" -r 60 ^ -c:v libx264 -rc vbr -cq 26 -preset slow -b:v 0K ^ -pix_fmt yuv420p -c:a copy -movflags faststart ^ "repossessed-Y68-60hz-cpu26.mp4"

    The NVIDIA encoder is faster BUT produces a larger file and less quality

    REM === NVIDIA === ffmpeg -hwaccel auto ^ -i "repossessed-Y68-120vhz.mp4" ^ -vf "tblend=average" -r 60 ^ -c:v h264_nvenc -rc vbr -cq 26 -preset p7 -b:v 0K ^ -pix_fmt yuv420p -c:a copy -movflags faststart ^ "repossessed-Y68-60hz-nv26.mp4"

    Slow Motion

    As example the VBR file played back at 30fps

    REM === HACK THE FRAMERATE === REM -- dump the video stream ffmpeg -y -ss 00:00:44 -t 00:00:04 -i "repossessed-Y68-120vhz.mp4" -map 0:v -c:v copy -bsf:v h264_mp4toannexb "raw.h264" REM -- custom container ffmpeg -fflags +genpts -r 30 -i "raw.h264" -c:v copy "repossessed-Y68-SLOMO.mp4"

    16:9 Superview

    The process below distorts the video to fit a 16:9 aspect ratio

    ...

    To capture stereo audio

    The process is a bit advanced. Contact us for the details