使用Red5-Pro Android官方Demo拆解分析(一)

世界如此簡單發表於2020-07-16

一、配置檔案

  1.匯入庫檔案jniLibs到main資料夾下

   

  2.匯入red5streaming.jar

  3.在build裡到入其他的包,程式碼如下: 

 1 dependencies {
 2     implementation fileTree(dir: 'libs', include: ['*.jar'])
 3     implementation 'ch.qos.logback:logback-classic:1.2.3'
 4     implementation 'ch.qos.logback:logback-core:1.2.3'
 5     implementation 'org.apache.mina:mina-core:2.1.3'
 6     implementation 'org.slf4j:slf4j-api:1.7.28'
 7     implementation 'com.android.support:support-v4:28.0.0'
 8     implementation 'com.googlecode.mp4parser:isoparser:1.1.22'
 9     implementation 'com.google.code.gson:gson:2.8.2'
10     implementation files('libs\\red5streaming.jar')
11 }

  4.宣告許可權

     

1     <uses-permission android:name="android.permission.CAMERA" /><!--拍照-->
2     <uses-permission android:name="android.permission.INTERNET" /><!--網路-->
3 <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"
4 tools:ignore="ProtectedPermissions" /><!--允許應用程式捕獲音訊輸出-->
5     <uses-permission android:name="android.permission.RECORD_AUDIO" /><!--允許錄製聲音-->
6     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!--允許程式寫入外部儲存-->
7 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><!--允許程式修改聲音設定資訊-->

二、佈局檔案

  在你需要顯示的佈局中加入以下程式碼即可

1 <com.red5pro.streaming.view.R5VideoView
2         android:id="@+id/videoView"
3         android:layout_width="wrap_content"
4         android:layout_height="wrap_content"
5         android:layout_centerHorizontal="true" />

三、具體實現的程式碼

  1.實現R5ConnectionListener介面裡的方法(onConnectionEvent這是連線的監聽)

  2.通過R5ConnectionEvent列舉裡可拿到一個變數,兩個方法。可以通過監聽裡拿到的R5ConnectionEvent和系統裡的作判斷

   2-1-1)       message;

   2-1-2)       name();    value();[==eventCode]

   2-2.R5ConnectionEvent列舉裡所有的值

    CONNECTED(0),//已連線狀態
    DISCONNECTED(1),//斷開狀態
    ERROR(2),//異常狀態
    TIMEOUT(3),//超時
    CLOSE(4),//關閉通道
    START_STREAMING(5),//啟動-流媒體
    STOP_STREAMING(6),//停止流媒體
    NET_STATUS(7),//網路狀況
    AUDIO_MUTE(8),//音訊靜音
    AUDIO_UNMUTE(9),//音訊取消靜音
    VIDEO_MUTE(10),//視訊靜音
    VIDEO_UNMUTE(11),//視訊取消靜音
    LICENSE_ERROR(12),//sdk 許可證出現錯誤
    LICENSE_VALID(13),//許可證有效
    BUFFER_FLUSH_START(14),//緩衝器沖洗啟動
    BUFFER_FLUSH_EMPTY(15),//緩衝區沖洗空
    VIDEO_RENDER_START(16),//視訊渲染開始
    ABR_LEVEL_CHANGED(17),//ABR_級別_已更改
    SRTP_KEY_GEN_ERROR(18),//SRTP金鑰生成錯誤
    SRTP_KEY_HANDLE_ERROR(19);//SRTP_KEY_HANDLE異常

  3.具體連線和觀看直播的程式碼書寫

R5Configuration config = new R5Configuration(R5StreamProtocol.RTSP,"192.168.1.103",8554,"live",0.5f);
        config.setLicenseKey("********");//[屬性1:協議,屬性2:主機地址,屬性3:埠,屬性4:上下文名稱(應該可隨意填寫還沒試過),屬性5:緩衝時間]
     
        config.setBundleID(this.getPackageName());//給他一個id就行

        R5Connection connection = new R5Connection(config);//R5連線物件

        //setup a new stream using the connection
        subscribe = new R5Stream(connection);//推流還是流的來源都是這個

        subscribe.audioController = new R5AudioController();//new red5裡面的音訊控制器給subscribe
        subscribe.audioController.sampleRate = 44100;//取樣頻率

        subscribe.client = this;
        subscribe.setListener(this);

        //show all logging
        subscribe.setLogLevel(R5Stream.LOG_LEVEL_DEBUG);

        //display.setZOrderOnTop(true);
        display.attachStream(subscribe);//附加流

        display.showDebugView(true);//設定顯示除錯
        subscribe.play("stream1", true);//開始播放[屬性1:播放的流名字  屬性2:是不是需要開啟硬體加速]

 

    後續續拆解直播和打遊戲錄屏直播的解釋.....請要關注我哦!

相關文章