Welcome to PhantomPilots.com

Sign up for a weekly email of the latest drone news & information

Live Streaming bit rate?

Discussion in 'Pro/Adv Discussion' started by ghintx, Jun 18, 2015.

  1. ghintx

    Joined:
    Jun 18, 2015
    Messages:
    4
    Likes Received:
    0
    Has anyone found a way to control the live streaming bit rate or any other stream profile settings? It seems to be locked at 720p and several megabits per second (haven't had a chance to measure how many). I have dug through the settings and lots of fruitless Google search results trying to find a way.

    This is a problem if you have constrained upstream bandwidth.

    It seems that many situations where live streaming may be actually useful (e.g. at an event) may present you with limited data rates. While streaming several meg at 720p might make for a nice picture, it's worthless if you can't get the bits to YouTube. Given the option, lowering the bit rate, frame rate, and/or resolution would seem to be good compromises.

    Is the DJI app just trying to upload the FPV stream from the P3 without transcoding it first? It seems like many devices would have the horsepower to downconvert. Live streaming from the camera is supported in many apps. These devices have hardware support for video scaling and encoding.

    About the only other option I can imagine is trying to use a server in the middle (might be an interesting app for a Raspberry Pi 2) to downconvert the video before upload. I have to explore the custom mode in streaming further to see if this would be possible.

    Thoughts? Experiences?
     
  2. bbfpv

    Joined:
    Feb 3, 2015
    Messages:
    3,744
    Likes Received:
    1,092
    Location:
    Long Island, NY
    It just pumps the decoded lightbridge stream to youtube as is. There are no options to change the rate. And while I agree you that many devices have the horsepower to down convert the feed, no device has the horsepower to decode 720p in, down convert 720 to something else, and pump to youtube simultaneously. Putting a Pi in the middle to do the down convert is an interesting idea.
     
  3. ctp

    ctp

    Joined:
    Oct 31, 2014
    Messages:
    238
    Likes Received:
    88
    Location:
    Reston, VA
    There is the option in advanced to push to a different server. Depending on the protocol. I did some testing several years ago on a device that would multipath with up to 4 different cellular data cards (could be different providers) to push data out.
     
  4. ghintx

    Joined:
    Jun 18, 2015
    Messages:
    4
    Likes Received:
    0
    I've read of a few examples of people real time transcoding 720p from one of the rPi cameras to something lower res and lower bit rate using ffmpeg. If I recall correctly the rPi arm chip has similar hardware codec support to many mobile devices and ffmpeg can use that. You might have to drop the res to 480p or 360p but given the circumstances that's better than not being able to stream at all.

    Combine that with something like nginex to capture the RTMP locally (just enter the local server address in the custom dialog for YouTube streaming) and it might be possible. Sounds like a weekend project (whenever I have a free weekend).

    https://plus.google.com/+WolfgangSchlatter/posts/2L5fRou17AX

    https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/
     
  5. brizey

    Joined:
    Jan 19, 2014
    Messages:
    70
    Likes Received:
    0
    Location:
    USA
    nginx module can rewrite the bitrate, This might work.
    exec ffmpeg -i rtmp://localhost/src/$name
    -c:a libfdk_aac -b:a 32k -c:v libx264 -b:v 128K -f flv rtmp://ltwitchorwhatever

    rtmp {
    server {
    listen 1935;

    application src {
    live on;

    exec ffmpeg -i rtmp://localhost/src/$name
    -c:a libfdk_aac -b:a 32k -c:v libx264 -b:v 128K -f flv rtmp://localhost/hls/$name_low
    -c:a libfdk_aac -b:a 64k -c:v libx264 -b:v 256k -f flv rtmp://localhost/hls/$name_mid
    -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 512K -f flv rtmp://localhost/hls/$name_hi;
    }

    application hls {
    live on;

    hls on;
    hls_path /tmp/hls;
    hls_nested on;

    hls_variant _low BANDWIDTH=160000;
    hls_variant _mid BANDWIDTH=320000;
    hls_variant _hi BANDWIDTH=640000;
    }
    }
    }
     
    #5 brizey, Nov 23, 2016
    Last edited: Nov 23, 2016