• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Anyone have experience with VLC-ANDROID-SDK?

Jo_Han_Solo

Newbie
Hey guys,

I'm using mrmaffen's VLC-ANDROID-SDK to develop an RTSP streaming app.
https://github.com/mrmaffen/vlc-android-sdk

I've had a lot of success getting it working and running quite well, but the problem I'm having that I can't seem to shake is getting it to display the video feed in fullscreen on the SurfaceView, or even just in the center of the SurfaceView.

This is what I get:
https://goo.gl/7wd8fF

The black window is the total size of the screen, I want that video to fill the screen and hopefully always fill from center, but I can't figure out how to do it.

Anyone have any experience with anything like this and knows how to fix it?
 
Last edited:
Okay so I figured out a basic hack to get it filling a larger portion of the screen, works really well if you know the resolution of the stream you are trying to view, if the resolution is unknown then more work needs to be done but this is a baseline.

There are a few steps involved though so bare with me:
1. Find the size of your screen.
2. Set up your final IVLCOut to incorporate the screen size.
3. Adjust scaling factor in mMediaPlayer to increase size of video stream according to the resolution of your target device.

To explain each task:

1.
Setup your globals:
Code:
public class SingleStreamView extends AppCompatActivity implements IVLCVout.Callback {
    public int mHeight;
    public int mWidth;
        ...

Secondly, in the onCreate task find your screen sizes of your device:
Code:
DisplayMetrics displayMetrics = new DisplayMetrics();
     getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
     mHeight = displayMetrics.heightPixels;
     mWidth = displayMetrics.widthPixels;

2.
Then go down to your "CreatePlayer" event and where you set up your video output:
Code:
// Set up video output
    final IVLCVout vout = mMediaPlayer.getVLCVout();
    vout.setVideoView(mSurface);
    vout.setWindowSize(mWidth,mHeight);
    vout.addCallback(this);
    vout.attachViews();
The winning line that made it center in my surface was the "vout.setWindowSize(mWidth,mHeight);"

I hope this helped, it helped me center my video feed in my app.

3.
Then I simply used the setscale option to "fullscreen" the video. That said, it's a bit of a hack, and I would like to try and figure out a way to grab the codec information so to dynamically set the scale of the video.

Either way I found that with a Samsung Galaxy s8, a good scaling factor for a 640x480p RTSP stream was 1.8. Coded like so:
Code:
    Media m = new Media(libvlc, Uri.parse(RTSP_ADDRESS));
    m.setHWDecoderEnabled(true,false);
    m.addOption(":network-caching=100"); 
    m.addOption(":clock-jitter=0");
    m.addOption(":clock-synchro=0");
    m.addOption(":fullscreen");
    mMediaPlayer.setMedia(m);
    mMediaPlayer.setAspectRatio("16:9");
    mMediaPlayer.setScale(1.8f);
    mMediaPlayer.play();
Where you got "mMediaPlayer.setScale(1.8f);"

Hope this helps you!
 
Last edited:
Back
Top Bottom