日本大香线蕉线伊人久久

在線咨詢

0755-26916129

Sales@yfcloud.com

了解直播短視頻

SaaS解決方案&CDN

開發者文檔

推流SDK Android
簡介
直播推流 Android SDK 是云帆加速推出的Android平臺用于推流的軟件開發工具包(SDK),為您提供簡單、便捷的開發接口,助您在基于 Android4.1 及以上版本的移動設備上實現直播推流功能。

推流 Android SDK

功能特點
  • 支持RTMP協議
  • 支持視頻硬編
  • 支持后臺純音頻推流
  • 支持推送主流分辨率視頻,支持手動設置碼率、幀率、緩存大小等配置
  • 支持動態碼率
  • 支持推流水印設置
  • 支持實時美顏(基于GPU)
  • 支持純視頻推流
  • 支持主流RTMP服務器(simple-rtmp-server、crtmpserver、FMS 等)
  • 支持文件(MP4、FLV)錄制
  • 支持低延時直播,控制直播延時1.5秒內
  • 支持閃光燈、攝像頭切換、自動對焦等實用功能
  • 支持h265推流
運行環境
功能Android版本備注
不支持美顏 Android 4.1及以上版本 支持后臺推流
支持美顏 Android 4.3及以上版本 支持后臺音頻推流
下載并使用SDK

1. 從github下載工程

                    
    SDK內容說明(推流SDK的完整下載包包含SDK、DOC、Demo三部分):
    - SDK目錄:YfEncoderKit.jar、libffmpeg.so、libmuxer.so
    - DOC目錄:YFEncoderKit幫助文檔.pdf、README.MD
    - Demo:集成了推流sdk的所有功能示范
                    
                
2、鑒權

獲取SDK使用許可的Token,在app啟動的時候調用全局靜態鑒權方法。

                    
    Authentication.AuthCallBack authCallBack = new Authentication.AuthCallBack() {
            @Override
            public void onAuthenticateSuccess() {
                Log.d(TAG, "鑒權成功~!");
            }

            @Override
            public void onAuthenticateError(int errorCode) {
                Log.d(TAG, "鑒權失敗啦:" + errorCode);
            }
        };
    Authentication.Authenticate(TOKEN, authCallBack);  
                    
                

為了防止在鑒權的時候因為網絡異常而鑒權失敗,可以在恢復網絡的時候確認一下是否鑒權成功,如果沒有則再次發起鑒權。

                    
    if(!Authentication.isAuthenticateSucceed()){
        //retry
    }  
                    
                

注意事項

github或官網上下載的sdk僅支持使用測試域名進行推流,正式使用請與我們聯系獲取正式token并設置推流域名。

3、在APP上集成SDK

1、實現回調接口YfEncoderKit.RecordMonitor

                    
    public interface RecordMonitor {
        /**
         * 成功連接上服務器
         */
        void onServerConnected();
        /**
         * 錯誤回調
         *
         * @param  mode
         * @param  camId
         * @param  err
         * @param  msg
         */
        void onError(int mode, int camId, int err, String msg);

        /**
         * 錄制狀態發生變化
         *
         * @param  mode
         * @param  camId
         * @param  oldState
         * @param  newState
         */
        void onStateChanged(int mode, int camId, int oldState,
                            int newState);

        /**
         * 生成了新的錄制片段
         *
         * @param  mode
         * @param  camId
         * @param  fragPath
         */
        void onFragment(int mode, int camId, String fragPath);

        /**
         * 錄制時間刷新
         *
         * @param  time
         */
        void onTimeUpdate(int time);

        /**
         * 截圖結果
         *
         * @param  path 截圖成功時為圖片路徑,失敗時為null
         */
        void onCapturedResult(String path);

        /**
         * buffer大小及相關策略的回調
         *
         * @param  currentBitrate 當前碼率
         * @param  bufferMs       當前緩存大小
         * @param  event          事件
         */
        void onBufferHandleCallback(int currentBitrate, int bufferMs, int event);
    }  
                    
                

2、初始化編碼器并配置攝像頭及預覽界面

                    
    //context、截圖/錄制視頻等文件保存的根目錄、允許開啟濾鏡、攝像頭輸出寬度、攝像頭輸出高度
    YfEncoderKit yfEncorderKit = new YfEncoderKit(this, CACHE_DIRS, mEnableFilter, PREVIEW_WIDTH, PREVIEW_HEIGHT, VIDEO_FRAME_RATE);
    yfEncorderKit.setContinuousFocus()//設置連續自動對焦
        .setLandscape(mLandscape)//設置是否橫屏模式(默認豎屏)
        .setRecordMonitor(this)//設置回調
        .setDefaultCamera(true)//設置默認打開前置攝像頭---不設置也默認打開后置攝像頭
        .openCamera(s);//設置預覽窗口GlSurfaceView  
                    
                

3、配置編碼參數并開始錄制

                     
    //設置編碼參數:直播/錄制、是否硬解、碼率、幀率、寬、高
    yfEncorderKit.changeMode(YfEncoderKit.MODE_LIVE, HARD_ENCODER, VIDEO_BITRATE, VIDEO_WIDTH, VIDEO_HEIGHT);
    yfEncorderKit.setMaxReconnectCount(5);//自動重連次數,0代表不自動重連
    yfEncorderKit.setAdjustQualityAuto(true, 300);//打開碼率自適應,每5秒統計一次上傳速度
    yfEncorderKit.setBufferSizeBySec(1);//最多緩存1秒的數據,超過1秒則丟幀
    yfEncorderKit.setLiveUrl(mUrl.getText().toString());
    yfEncorderKit.startRecord(); 
                    
                

4、停止推流

                      
    yfEncorderKit.stopRecord();
                    
                

更多功能的使用請參考Demo。

本地視頻錄制

基本方法與直播推流無異,只是在配置編碼器的時候設置為MODE_VOD并設置存放名字。

                    
    yfEncorderKit.changeMode(YfEncoderKit.MODE_VOD,HARD_ENCODER,VIDEO_BITRATE,VIDEO_WIDTH,VIDEO_HEIGHT);
    yfEncorderKit.setVodSaveName("測試視頻");
    yfEncorderKit.startRecord();
                    
                

注意事項

SDK區分允許濾鏡(美顏)模式及不允許濾鏡(美顏)模式,允許濾鏡模式(需Android 4.3及以上版本)下可以開啟和關閉濾鏡,但后臺推流僅支持音頻推流;不允許濾鏡模式下支持后臺繼續推送音視頻。

兩種模式下攝像頭輸出寬高及編碼寬高的注意事項

模式\寬高攝像頭輸出寬高編碼寬高模式編碼寬高
允許濾鏡模式 攝像頭支持的寬高 縮放 必須保持與攝像頭寬高比例一致
不允許濾鏡模式 攝像頭支持的寬高 裁剪 必須保證小于等于攝像頭輸出寬高

例如:在希望輸出640x360分辨率的視頻的情況下,允許濾鏡模式應將攝像頭輸出寬高設置為1280x720,或其他縮放比例最小的同比例寬高(如華為榮耀3c的攝像頭支持最小的16:9的分辨率是2560x1440),然后才能【縮放】至目標分辨率;不允許濾鏡的模式下應將攝像頭輸出寬高設置為640x480,然后才能【裁剪】至目標分辨率。

接口說明
參考DOC目錄里的YFEncoderKit幫助文檔
反饋和建議

技術支持:support@yfcloud.com

日本大香线蕉线伊人久久