android集成EasyPlayer播放器播放实时流媒体视屏

android集成EasyPlayer播放器播放实时流媒体视屏


    最近公司项目需要实现一个rtsp实时流媒体视频的播放,在移动端尝试了多个第三方能播放rtsp流实时视频的软件后发现EasyPlayer的实时性较好,画面、声音也都还可以。所以,今天记录一下自己的成果。第一次写。。


    EasyPlayer是由EasyDarwin开源团队开发和维护的一个流媒体播放器项目,目前有RTSP版和Pro版两个版本,RTSP支持Windows(支持多窗口、包含ActiveX,npAPI Web插件)、Android平台,iOS平台,视频支持H.264,H.265,MPEG4,MJPEG,音频支持G711A,G711U,G726,AAC,支持RTSP over TCP/UDP,支持硬解码,是一套极佳的RTSP流播放组件。

easyPlayer集成步骤

1.先下载官方的dome https://github.com/EasyDarwin/EasyPlayer_Android
2.下载后导入到android studio中(一般会有问题,①是你的gradle版本和他的不一样,②可能他关联的包,库你的环境里没有。。。还有些其他的)
3.可以看到他关联了一个库(rtspclient)
4.在自己的项目中关联rtspclient(主要查看下rtspclient的gradle和自己项目的gradle,这里可能会出现一些问题)

开始代码中的集成了

1。布局文件中添加一个TexTureView控件,并在activity中实现其回调。

<TextureView
        android:id="@+id/ttV"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

mTtv.setOpaque(false);//设置是否透明
mTtv = findViewById(R.id.ttV);
mTtv.setSurfaceTextureListener(MainActivity.this);

在Mainactivity中实现相应的接口

2.在TexTureView的回掉函数onSurfaceTextureAvailable中执行视屏的显示。

public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
        startRending(surface);
    }
if (url.toLowerCase().startsWith("rtmp://")){
            Toast.makeText(this, "地址出错", Toast.LENGTH_SHORT).show();
        }else{
             /*
            *本Key为3个月临时授权License,如需商业使用或者更改applicationId,请邮件至support@easydarwin.org申请此产品的授权。
            */
            mEasyRTSPClient = new EasyRTSPClient(MainActivity.this, "79393674363536526D3430417A41645A7076677A532B6473615768686279356A6232307562586C686348427361574E6864476C76626A4B45567778576F50394C34456468646D6C754A6B4A68596D397A595541794D4445325257467A65555268636E6470626C526C5957316C59584E35", surface, mResultReceiver);

            boolean autoRecord = PreferenceManager.getDefaultSharedPreferences(MainActivity.this).getBoolean("auto_record", false);

            File f = new File(MyApplication.sMoviePath);
            f.mkdirs();
            try {
            mEasyRTSPClient.start(url, 1, RTSPClient.EASY_SDK_VIDEO_FRAME_FLAG | RTSPClient.EASY_SDK_AUDIO_FRAME_FLAG, "", "", autoRecord ? new File(f, new SimpleDateFormat("yy-MM-dd HH:mm:ss").format(new Date()) + ".mp4").getPath() : null);
            }catch (Exception e){
                e.printStackTrace();
                Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                return;
            }
//这里我是把dome里的拷过来了,这里主要是EasyRTSPClient这个类,可以去看看他的源码。看他的构造函数的参数
//2--需要一个授权的id,上面介绍了获取的办法
//3--显示视频的控件
//4--自己可以百度去看看 http://blog.csdn.net/liuyingcan/article/details/50673317

视频停止

public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
        stopRending();
        return true;

    }

//视频停止显示
    private void stopRending() {
        if (mEasyRTSPClient != null) {
            mEasyRTSPClient.stop();
            mEasyRTSPClient = null;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值