Joh*_*rvi 1 android fullscreen rtsp libvlc android-studio
我正在使用 mrmaffen 的 VLC-ANDROID-SDK 来开发 RTSP 流应用程序。 https://github.com/mrmafen/vlc-android-sdk
我已经取得了很大的成功,让它工作并运行得很好,但我遇到的问题似乎无法动摇,让它在 SurfaceView 上全屏显示视频源,甚至只是在 SurfaceView 上显示视频源。 SurfaceView 的中心。
这就是我得到的:
黑色窗口是屏幕的总大小,我希望该视频填充屏幕并希望始终从中心填充,但我不知道该怎么做。
任何人都有类似的经验并知道如何解决它吗?
我解决了这个问题,但以一种有点狡猾的方式,它还远未完成,但考虑到缺乏有关该主题的知识和信息,我认为这可能暂时对某人有帮助。
解释每项任务:
设置你的全局变量:
public class SingleStreamView extends AppCompatActivity implements
IVLCVout.Callback {
public int mHeight;
public int mWidth;
Run Code Online (Sandbox Code Playgroud)其次,在 onCreate 任务中找到您设备的屏幕尺寸:
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
mHeight = displayMetrics.heightPixels;
mWidth = displayMetrics.widthPixels;
Run Code Online (Sandbox Code Playgroud)
2. 然后转到“CreatePlayer”事件并设置视频输出:
// Set up video output
final IVLCVout vout = mMediaPlayer.getVLCVout();
vout.setVideoView(mSurface);
vout.setWindowSize(mWidth,mHeight);
vout.addCallback(this);
vout.attachViews();
Run Code Online (Sandbox Code Playgroud)
使其位于我的表面中心的获胜行是“vout.setWindowSize(mWidth,mHeight);”
然后我简单地使用 setscale 选项来“全屏”视频。也就是说,这有点像黑客的做法,我想尝试找出一种方法来获取编解码器信息,以便动态设置视频的比例,这样就可以自动全屏显示任何大小的视频流尺寸屏幕,但目前这适用于已知的视频流分辨率,它会自动调整到手机的屏幕尺寸。
不管怎样,我发现对于 Samsung Galaxy s8,640x480p RTSP 流的良好缩放因子是 1.8。编码如下:
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();
Run Code Online (Sandbox Code Playgroud)
你在哪里得到“mMediaPlayer.setScale(1.8f);”
希望这对某人有帮助!
| 归档时间: |
|
| 查看次数: |
8238 次 |
| 最近记录: |