Change livestream bitrate/framerate for RICOH THETA Z1 in linux?

Hi guys, I’m trying to use Linux and GStreamer to stream H264 4k video from one computer to another through the Internet. But I found the network workload is extremely high, around 14MB/s, which is too high for the router. Is there any way to lower the network usage? I’m thinking of lower the bitrate or framerate of the stream, but I cannot find any config file for me to change. Is there anyone who has done it that can help? Thank you so much for your attention and participation.

You can change the resolution from 4K to 2K.

Do you want 4K video frames at lower bitrate and/or framerate?

Have you tried to alter the framerate with the gstreamer pipeline? I do not know gstreamer that well.


It seems possible to adjust the bitrate with gstreamer.

Hi craig,

Thanks for your relpy.

Yes, I want to get 4K video at lower bitrate or lower framerate. 2K is too low for our application.

I think it’s a setting problem and not a gstreamer problem. Since the video stream from the camera is a h.264 stream, we can only alter the framerate after decoding it. But there will be extra costs, I need to encode it to h.264 again for udp transfer.

I tried to read the uvc driver file, and did some attempts do change the framerate but failed. I’m a newbee of drivers. But I found that some add-ons from the market that can change the bitrate or the frames, so I think the encoder in the camera supports those settings, but I just don’t know how.


I don’t think you can send the camera a command to have it output a different framerate or bitrate during the livestream. You may have a better chance at reducing the framerate or bitrate by using gstthetauvc

gstthetauvs is also based on libuvc-theta, it’s same as what I’m using now (source code from libuvc-theta-sample).
I checked the USB API doc and find that we cannot change the bitrate in live streaming mode. So I need to make sure whether the camera supports changing framerate or bitrate through the uvc driver. I believe the hardware supports that but maybe the USB driver does not?

I don’t think the driver supports changing the bitrate and framerate, only the resolution.

I think you need to process the stream after it arrives on the Linux computer you are using and before transmission to the viewer over the network.

As far as I know, everyone is using 4K 30fps from the camera to the Linux computer using USB or 2K 30fps. Everyone is using the same bitrate.

OK, I can decode the stream first and encode it again, but it causes extra latency (around 700ms) and I want to use the streaming with zero latency.
If the API doesn’t support that, I think I should find another way to reach it.

As the Z1 needs to stitch the two lens spheres in real-time as it outputs the equirectangular stream, the lowest latency from the camera is going to be around 300ms. I haven’t heard of a way to get it significantly lower.

you could theoretically try to experiment with the camera API inside of the plug-in.

The camera runs a version of Android inside the camera. You can use the Android Camera API for additional functionality if your application runs inside the camera.