发送音频空包

2018-01-17  本文已影响41人  OnlyRose

在Rtmp和Voip通话过程中,有的时候,需要发送音频空包。这个时候需要替换音频包或者按照一定的频率发送音频空包。

 public void run() {
        try {
            while (!mStopFlag) {
                //eh880音频无法释放
                while (mPauseFlag) {
                    /**
                     * 发送空包
                     * 保证视频播放不黑屏
                      */
                    try {
                        byte clearM = 0;
                        Arrays.fill(mRecordBuffer, clearM);
                        if (mAudioEncoder != null) {
                            mAudioEncoder.offerEncoder(mRecordBuffer);
                        }
                        Thread.sleep(23);//0.022ms https://www.jianshu.com/p/030288800a61
                        /*Thread.sleep(1000);*/
                    } catch (Exception e){
                        e.printStackTrace();
                    }
                }
                if(mAudioRecord!=null) {
                    int readLen = mAudioRecord.read(mRecordBuffer, 0, mRecordBufferSize);
                    hasAudio(readLen);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

 @DebugLog
    private void hasAudio(int readLen) {
        if (readLen > 0) {
            if (mMute) {
                byte clearM = 0;//将以前的音频包,全部替换为空。
                Arrays.fill(mRecordBuffer, clearM);
            }
            if (mAudioEncoder != null) {
                mAudioEncoder.offerEncoder(mRecordBuffer);
            }
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读