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,請郵件至[email protected]申請此產品的授權。
            */
            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;
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章