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.
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.
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).