可能有两种原因:
1.推流端推的画面本身有黑边。因为SDK推流只支持16:9(或者9:16)的画面,如果推流端采集的画面不是16:9的,SDK编码时也会编码成16:9的比例,多出来的部分以黑色填充,具体表现就是编码出来的画面有黑边。这样的情况拉流端SDK一般是处理不了的
2.推流端推的画面无黑边,拉流端播放时有黑边。这是因为拉流端显示屏的长宽比与画面的长宽比不一致所导致,如果需要完整的显示画面,那肯定会有多出来的部分(这部分会以黑色填充,具体表现就是黑边),否则画面就会被拉伸、变形。
解决方法: 对于第二种情况,可以在播放端调用 setRenderMode 接口设置画面显示模式。其中 RENDER_MODE_FILL_SCREEN 为等比例铺满整个屏幕,RENDER_MODE_ADJUST_RESOLUTION
为等比例缩放以显示全部画面。
方案原理
对于第二种情况,如果选择 RENDER_MODE_FILL_SCREEN,SDK 会以完全铺满整个屏幕为原则等比例缩放图片,超出部分会被裁剪掉;如果选择 RENDER_MODE_ADJUST_RESOLUTION
,SDK 会以完全显示图片为原则等比例缩放图片,然后居中显示图片,没有画面的部分会以黑色进行填充。
使用的渲染的模式 可以在SuperPlayerGlobalConfig中的renderMode 默认是自适应模式