Set bitrate for streaming (Theta X)

Hi all,

I’m streaming from Theta X camera on Jetson Nano computer. I’m using libuvc-theta library. According to my tests, the camera provide bitrates around 100 Mbps @4K and 30 Mbps @2K. These values are too high for standard streaming applications. I wonder if it’s possible to control the bitrate of the camera. Some tips:

  • There is the possibility of encoding the stream provided by the camera within the computer. But I would like to avoid any additional transcoding step to optimize the video pipeline.
  • libuvc has an structure to read the capabilities of the camera (uvc_fame_desc). In this structure, there is 2 fields related to the bitrate: dwMinBitRate and dwMaxBitRate. The values that return Theta X are: 600000 & 800000000 respectively. So, I suppose that the camera firmware is able to provide bitrates between these values. But I couldn’t find any function or way in libuvc to set any of these.

I wonder if there is any chance to set these parameters on the camera. Thus, I’d really appreciate if anyone can shed further ligth on this.

Thank you very much in advance.

KR,

 Juan

I do not know of any successful implementation to adjust the bitrate within the camera for output over the USB cable. I believe most people are processing the video on the board (like a Jetson AGX) and retransmitting it if they need the feed remotely.

I would like to submit the use case as community feedback. What is the target bitrate you need from the camera at 2K and 4K? Is the reason you do not want to process on the computer board because of power consumption, CPU consumption, or latency considerations?

Savvy developers like @biviel are adjusting the bitrate with WiFi streaming output using a plug-in.

However, most developers using the THETA for things like ROS or connection to small board computers like Jetson are using the USB cable. WiFi will also generate more heat, especially with the X.

1 Like

Thank you for the reply and the support.

I’m working on an inmersive tele-presence platform. So, using a Theta X and streaming the video, multiple users can see the place where the camera is located remotely. I have other 360 cameras working via wifi, but in some environments the video transmission is degraded (for instance if there are a lot of devices connected to the same wifi).

To answer your questions, I’d like to set the bitrate as a customizable parameter. In addition, the computer where the camera is plugged can work via power bank. So, one of the reasons for avoiding an extra transcoding task is power consumption. As well, it’s important the CPU consumption (because the computer board does more demanding tasks) and also the latency (because the application works in real time).

KR,

 Juan
1 Like

It’s possible that the other of gsthetauvc may have some insight if you open up an issue on his personal GitHub repo.

I don’t think this number can be changed, but maybe the developer knows?

Another option is to open an issue on the official libuvc GitHub repo as the bitrate is a libuvc setting, not specific to the libuvc-theta modification.

Thanks again, @craig.

It makes more sense to me your second alternative: open an issue in libuvc github. I’m going to do that.

KR,

Juan

1 Like