GSYVideoPlayer播放视频

  • xml布局
<com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
        android:id="@+id/view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ></com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer>
  • 解析的BigBeas类
public class BigBeas {
    /**
     * message : {"audioUrl":"https://v-rtmp-ngb.qf.56.com/live/3983114_1559345783338?only-audio=1&wsSecret=026bdb2a17f14a3fe9bb339293e7dee9&wsTime=5CF1ED45&cid=1&ver=ngb&cip=ngb&get_url=6","rUrl":"https://v-ngb.qf.56.com/live/3983114_1559345783338.flv?wsSecret=026bdb2a17f14a3fe9bb339293e7dee9&wsTime=5CF1ED45&cid=1&ver=ngb&cip=ngb&get_url=9","hd":3,"sp":2,"push":1,"live":1}
     * status : 200
     */

    private MessageBean message;
    private int status;

    public MessageBean getMessage() {
        return message;
    }

    public void setMessage(MessageBean message) {
        this.message = message;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public static class MessageBean {
        /**
         * audioUrl : https://v-rtmp-ngb.qf.56.com/live/3983114_1559345783338?only-audio=1&wsSecret=026bdb2a17f14a3fe9bb339293e7dee9&wsTime=5CF1ED45&cid=1&ver=ngb&cip=ngb&get_url=6
         * rUrl : https://v-ngb.qf.56.com/live/3983114_1559345783338.flv?wsSecret=026bdb2a17f14a3fe9bb339293e7dee9&wsTime=5CF1ED45&cid=1&ver=ngb&cip=ngb&get_url=9
         * hd : 3
         * sp : 2
         * push : 1
         * live : 1
         */

        private String audioUrl;
        private String rUrl;
        private int hd;
        private int sp;
        private int push;
        private int live;

        public String getAudioUrl() {
            return audioUrl;
        }

        public void setAudioUrl(String audioUrl) {
            this.audioUrl = audioUrl;
        }

        public String getRUrl() {
            return rUrl;
        }

        public void setRUrl(String rUrl) {
            this.rUrl = rUrl;
        }

        public int getHd() {
            return hd;
        }

        public void setHd(int hd) {
            this.hd = hd;
        }

        public int getSp() {
            return sp;
        }

        public void setSp(int sp) {
            this.sp = sp;
        }

        public int getPush() {
            return push;
        }

        public void setPush(int push) {
            this.push = push;
        }

        public int getLive() {
            return live;
        }

        public void setLive(int live) {
            this.live = live;
        }
    }
}

  • 解析的AlterBean类
public class AlterBean {


    /**
     * code : 000000
     * streamType : 1
     * url : https://1grauemttgr3nhcjzgezdcpa.ourdvsss.com/v-ngb.qf.56.com/live/3983114_1559345783338.flv?wsSecret=026bdb2a17f14a3fe9bb339293e7dee9&wsTime=5CF1ED45&cid=1&ver=ngb&cip=ngb&wsiphost=ipdbm
     */

    private String code;
    private String streamType;
    private String url;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getStreamType() {
        return streamType;
    }

    public void setStreamType(String streamType) {
        this.streamType = streamType;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}

  • Interface接口
public interface MyInterface {

    @GET
    Observable<BigBeas> bigBean(@Url String url);

    @GET
    Observable<AlterBean> alterBean(@Url String url);

}
  • main方法
public class LiveActivity extends AppCompatActivity{

    private StandardGSYVideoPlayer videoPlayer;
    private OrientationUtils orientationUtils;

    String bigBaseUrl = "http://qf.56.com/play/v1/";
    String bigUrl = "http://qf.56.com/play/v1/preLoading.android?roomId=";
    String alterBaseUrl = "https://v-ngb.qf.56.com/live/";
    private Observable<BigBeas> bigBeanObservable;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_live);
        initView();
    }

    private void initView() {

        videoPlayer = findViewById(R.id.view);

        // RXJAVA+Retrofit获取最外层的数据
        Retrofit.Builder builder = new Retrofit.Builder();
        builder.baseUrl(bigBaseUrl);
        builder.addConverterFactory(GsonConverterFactory.create());
        builder.addCallAdapterFactory(RxJava2CallAdapterFactory.create());
        Retrofit build = builder.build();

        MyInterface myInterface = build.create(MyInterface.class);
        String index = getIntent().getStringExtra("index");

        if (index.equals("1")) {
            bigBeanObservable = myInterface.bigBean(bigUrl + "520166");
        } else if (index.equals("2")) {
            bigBeanObservable = myInterface.bigBean(bigUrl + "520529");
        }
        bigBeanObservable
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<BigBeas>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(BigBeas bigBeas) {
                        BigBeas.MessageBean message = bigBeas.getMessage();
                        String rUrl = message.getRUrl();
                        Log.i("MyCL", "rUrl" + rUrl);
                        //RXJAVA+Retrofit获取里面的数据
                        Retrofit.Builder builder1 = new Retrofit.Builder();
                        builder1.baseUrl(alterBaseUrl);
                        builder1.addConverterFactory(GsonConverterFactory.create());
                        builder1.addCallAdapterFactory(RxJava2CallAdapterFactory.create());
                        Retrofit build1 = builder1.build();
                        MyInterface myInterface1 = build1.create(MyInterface.class);
                        Observable<AlterBean> alterBeanObservable = myInterface1.alterBean(rUrl);
                        alterBeanObservable
                                .subscribeOn(Schedulers.io())
                                .observeOn(AndroidSchedulers.mainThread())
                                .subscribe(new Observer<AlterBean>() {
                                    @Override
                                    public void onSubscribe(Disposable d) {

                                    }

                                    @Override
                                    public void onNext(AlterBean alterBean) {
                                        String url = alterBean.getUrl();
                                        //GSY播放直播
                                        videoPlayer.setUp(url, true, "直播拉流");
                                        //增加封面
                                        ImageView imageView = new ImageView(LiveActivity.this);
                                        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                                        imageView.setImageResource(R.mipmap.ic_launcher);
                                        videoPlayer.setThumbImageView(imageView);
                                        //增加title
                                        videoPlayer.getTitleTextView().setVisibility(View.VISIBLE);
                                        //设置返回键
                                        videoPlayer.getBackButton().setVisibility(View.VISIBLE);
                                        //设置旋转
                                        orientationUtils = new OrientationUtils(LiveActivity.this, videoPlayer);
                                        //设置全屏按键功能,这是使用的是选择屏幕,而不是全屏
                                        videoPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {
                                            @Override
                                            public void onClick(View v) {
                                                orientationUtils.resolveByClick();
                                            }
                                        });
                                        //是否可以滑动调整
                                        videoPlayer.setIsTouchWiget(true);
                                        //设置返回按键功能
                                        videoPlayer.getBackButton().setOnClickListener(new View.OnClickListener() {
                                            @Override
                                            public void onClick(View v) {
                                                onBackPressed();
                                            }
                                        });
                                        videoPlayer.startPlayLogic();
                                    }

                                    @Override
                                    public void onError(Throwable e) {

                                    }

                                    @Override
                                    public void onComplete() {

                                    }
                                });
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });

//        String url = "https://1grauemttgr3nhcjsgyzdocy.ourdvsss.com/v-ngb.qf.56.com/live/520700_1559347358299.flv?wsSecret=bc19e7f4df5713fe48037ce93f601ed1&wsTime=5CF1C9DD&cid=1&ver=ngb&cip=ngb&wsiphost=ipdbm";




    }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值