ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    streamer default h265

    VOXL SDK
    3
    21
    601
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Eric KatzfeyE
      Eric Katzfey ModalAI Team @bendraper
      last edited by

      @bendraper You can also set the aspect ratio of the video in QGroundControls application settings.

      B 1 Reply Last reply Reply Quote 0
      • B
        bendraper @Eric Katzfey
        last edited by

        @Eric-Katzfey Yea I think that functionality may be broken though. If I try to do the inverse aspect ratio, it just kinda shrinks the stream as opposed to stretching it back out

        B 1 Reply Last reply Reply Quote 0
        • B
          bendraper @bendraper
          last edited by

          @bendraper said in streamer default h265:

          @Eric-Katzfey Yea I think that functionality may be broken though. If I try to do the inverse aspect ratio, it just kinda shrinks the stream as opposed to stretching it back out

          It's also seemingly fixed in the daily builds of QGC... Oh well

          1 Reply Last reply Reply Quote 0
          • B
            bendraper
            last edited by

            02b0803c-94f9-4412-9252-39d94fbfbac7-image.png

            I'm looking at the camera server documentation and this is saying that H265 essentially requires twice the bandwidth that H264 does. Isn't that backwards? Isn't H265 more efficient at the cost of latency? @Alex-Kushleyev

            Alex KushleyevA 1 Reply Last reply Reply Quote 0
            • Alex KushleyevA
              Alex Kushleyev ModalAI Team @bendraper
              last edited by

              @bendraper,

              This is not a requirement but a current limitation of voxl-camera-server configuration of the encoder. Yes, h265 is generally 2x more efficient and having the minimum bitrate 2x compared to h264 does not make sense. This is a limitation due to some unknown mis-configuration of the encoder by the camera server. We will try to fix this, but it is not high priority, so not sure when this will happen.

              The gstreamer (voxl-streamer) does not have this limitation, please double check it. I have tested voxl-streamer with bitrate down to 0.25 mbps in h265 mode and video looks surprisingly good. Such configuration can be good for streaming over very low bandwidth link.

              By the way, voxl-camera-server supports dynamic bitrate updates by sending a command to camera server (within the mentioned limits), for example:

              voxl-send-command hires_front_large_encoded set_large_venc_mbps 4.0
              

              Alex

              B 1 Reply Last reply Reply Quote 0
              • B
                bendraper @Alex Kushleyev
                last edited by

                @Alex-Kushleyev Sounds good thanks for clarifying. Also, it looks like you can use a hybrid CQP and CBR mode per the documentation, but when I use "cbr+cqp" in the camera server conf file, it does not seem to like it. Is this feature not available yet?
                4c901ab0-d2bd-4707-b4fb-2d1dee641b22-image.png

                Alex KushleyevA 1 Reply Last reply Reply Quote 0
                • Alex KushleyevA
                  Alex Kushleyev ModalAI Team @bendraper
                  last edited by Alex Kushleyev

                  @bendraper , ah, yes the feature is available and I can see how the naming is misleading.

                  In order to achieve the CBR + CQP functionality, you do the following:

                  • select cbr mode just like normal CBR
                  • specify maximum bit rate, lets say 1.5 mbit, which is the lowest we can currently do with h264
                  • now if you want to achieve lower bitrate when there is not much motion (instead of always forcing the desired bit rate), set _venc_Qmin to a larger number (than the default 15 or so).

                  Basically by default _venc_Qmin is very low, which means the encoder is allowed to increase the image quality (decrease quantization level) if there is not much motion, so that you meet the target constant bit rate.

                  By increasing this Qmin, you will not allow the encoder to keep increasing the quality under low motion condition, so it will cap the maximum quality level (Qmin) and reduce bandwidth. You can start with values of Qmin at 20, 25, 30 and see how low your bandwidth will get when not moving. When you start moving the camera, the bitrate should jump up to the CBR value, if needed. Please note that the quantization factor Qmin is not linear, i don't have the exact formula.

                  In general what happens in the encoder, if you want to maintain some CBR, the Quantization level is dynamically changed (within allowed range) depending on how much image is changing, so lots of motion in image will result in lowering overall quality (increasing quantization) in order to still be able to fit within the allowed CBR bitrate budget.

                  Please try it out and let me know how that works for you..

                  Alex

                  Alex KushleyevA 1 Reply Last reply Reply Quote 0
                  • Alex KushleyevA
                    Alex Kushleyev ModalAI Team @Alex Kushleyev
                    last edited by

                    I have updated the docs to clarify the setting for CBR + CQP mode:

                    https://docs.modalai.com/voxl-camera-server/#constant-quantization-vs-constant-bitrate-mode

                    CBR + CQP
                    
                    This is a hybrid mode that uses Constatnt Quantization when there is little motion and Constant Bitrate to limit the maximum bitrate
                    In order to use this mode, select cbr as the bitrate control, however also adjust the Qmin parameter, as described below
                    
                    Alex KushleyevA 1 Reply Last reply Reply Quote 0
                    • Alex KushleyevA
                      Alex Kushleyev ModalAI Team @Alex Kushleyev
                      last edited by

                      @bendraper, in case you need to set lower CBR bitrates than previously stated, we have a workaround for the 1.5 and 3.0 mbps limits. Camera server in dev branch supports lower bitrates and we have tested h265 as low as 0.25Mbps works pretty well.

                      The workaround tells the encoder that fps is higher than actual, allowing us to achieve effective lowering of the bitrate. You can just set your bitrate in camera server config to the desired bitrate and if bitrate is below the “limit”, the encoder fps setting is adjusted accordingly to achieve the low bitrate. This does not have any adverse effect on output quality and the fps value is not actually sent with the encoded stream.

                      If you want to adjust the bitrate dynamically below that “limit”, you may want to hardcode the value of m_fpsHackScale to a certain value like 12. Value of 12 would allow you to set h265 to 3.0/12 = 0.25Mbps or higher.

                      https://gitlab.com/voxl-public/voxl-sdk/services/voxl-camera-server/-/blob/dev/src/omx_video_encoder.cpp

                      Let me know if you need any more details. We will work towards improving this workaround in the future.

                      Alex

                      B 1 Reply Last reply Reply Quote 0
                      • B
                        bendraper @Alex Kushleyev
                        last edited by

                        @Alex-Kushleyev Thanks for letting me know! I'll have to give it a try

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Powered by NodeBB | Contributors