Android RTMP播放

    RTMP、RTSP、HTTP协议都属于互联网 TCP/IP 五层体系结构中应用层的协议。理论上这三种都可以用来做视频直播或点播。但通常来说,直播一般用 RTMP、RTSP。而点播用 HTTP。

  Android平台播放RTMP流媒体采用了GiraffePlayer2,使用前可在build.gradle中引入:

api 'com.github.tcking:giraffeplayer2:0.1.25'

api 'com.github.tcking:ijkplayer-arm64:0.8.8' //support arm64
api 'com.github.tcking:ijkplayer-armv5:0.8.8' //support armv5
api 'com.github.tcking:ijkplayer-x86:0.8.8' //support x86
api 'com.github.tcking:ijkplayer-x86_64:0.8.8' //support x86_64

1、全屏播放

GiraffePlayer.play(getContext(), new VideoInfo("video url"));

2、在Layout文件中使用

在layout xml文件中添加VideoView:

代码中调用:

VideoView videoView = (VideoView) findViewById(R.id.video_view);
videoView.setVideoPath(videoUri).getPlayer().start();

3、常用配置:

  • 取消底部控制栏

      播放器默认显示底部控制栏,比如:播放、暂停、时间进度等,但如果刚进入页面,播放器还未获取url时点击播放按钮,会出现crash错误。另外直播也没必要这个底部控制栏,可以取消。

videoView.container.findViewById(R.id.app_video_bottom_box)?.removeAllViewsInLayout()
  • 视频显示比例

      为了适应videoview显示区域大小,需要设置其显示方式:

public class VideoInfo implements Parcelable {
    public static final int AR_ASPECT_FIT_PARENT = 0; // 默认方式,不剪切,保持比例显示最长边,短边可能有空白
    public static final int AR_ASPECT_FILL_PARENT = 1; // 可能剪切,保持比例显示短边,长边可能被剪切
    public static final int AR_ASPECT_WRAP_CONTENT = 2;//保持比例按内容显示
    public static final int AR_MATCH_PARENT = 3; //按照所给尺寸占满,比例变化
    public static final int AR_16_9_FIT_PARENT = 4; //按照长宽比16:9完整显示,可能有空白
    public static final int AR_4_3_FIT_PARENT = 5;  //按照长宽比4:3完整显示,可能有空白

    代码中设置如下:

videoView.videoInfo.aspectRatio = VideoInfo.AR_MATCH_PARENT

 

 

参考:

1、https://github.com/tcking/GiraffePlayer2

2、https://www.cnblogs.com/juanxincai/p/12900303.html

3、https://blog.csdn.net/u014162133/article/details/81188410

你可能感兴趣的:(Android,Java)