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:
Setup your globals:
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:
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:
// 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:
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!
— modified on Dec 21, 2017, 11:05:50 PM
Recommended editorial content
With your consent, external content is loaded here.
By clicking on the button above, you agree that external content may be displayed to you. Personal data may be transmitted to third-party providers in the process. You can find more information about this in our Privacy Policy.