Theta X was set to 29 fps, but the actual FPS received is only around 15–16

I’m an iOS developer working on a project that involves livestreaming with the Theta X.

When connecting to the Theta device via USB, I set the frame rate to 29 FPS.

    for format in device.formats {
        for range in format.videoSupportedFrameRateRanges {
            try device.lockForConfiguration()
            device.activeFormat = format
            let validFps = validatedFPS(fps, in: range)
            let frameDuration: CMTime = CMTime(value: 1, timescale: Int32(validFps))
            device.activeVideoMinFrameDuration = frameDuration
            device.activeVideoMaxFrameDuration = frameDuration
            device.unlockForConfiguration()
            break
        }

private func validatedFPS(_ fps: Int, in range: AVFrameRateRange) -> Int {
    if fps >= Int(range.maxFrameRate) {
        return Int(range.maxFrameRate)
    } else if fps <= Int(range.minFrameRate) {
        return Int(range.minFrameRate)
    } else {
        return fps
    }
}

However, the actual FPS measured in the function

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection)

is only around 15 or 16.

I’m connecting the Theta X to an iPad via USB.
Is there any way to achieve 29 or 30 FPS as specified in Theta X’s technical documentation?

Try testing it with the Mac laptop and see if you get the same fps. I don’t think the iPad or iPhone is an official supported target for the live stream over USB.

You can try stream over WiFi as an alternative to the iPad.

You may get better fps if you cut down the resolution to 2k

Thank you for your response.
I tried it on macOS, and the FPS can reach up to 30

You may want to try contacting ricoh. although the iPad is not an officially supported target, they may have heard of other experiences. someone else on this forum is using an iPad with USB for streaming and having inconsistent results.