Android TencentのリアルタイムオーディオおよびビデオTRTCオーディオの競合、Mike Fengプリエンプションの問題、リアルタイムオーディオおよびビデオ中の記録の失敗

       TencentのリアルタイムオーディオおよびビデオTRTCSDKに接続しましたが、使用中にいくつかの問題が発生しました。さらに深刻なのは、オーディオおよびビデオプロセス中にローカル画面の記録が実行され、音がないために記録が失敗したことです。

1.チャンネル

       SDKは現在、システムボリュームタイプに対して3つの制御モードを提供しています。

(1)TRTCCloudDef#TRTCSystemVolumeTypeAuto:「マイクで通話、マイクの下のメディア」、つまり、アンカーはマイクがオンのときに通話音量を使用し、視聴者は視聴者がマイクを使用していないときにメディア音量を使用します。これはオンラインライブブロードキャストシナリオに適しています。Roomに入るときに選択したシーンが TRTCCloudDef#TRTC_APP_SCENE_LIVE または TRTCCloudDef#TRTC_APP_SCENE_VOICE_CHATROOMの場合、SDKはこのモードを自動的に選択します。

(2)TRTCCloudDef#TRTCSystemVolumeTypeVOIP:複数人の会議シナリオに適した、通話全体で通話量を使用します。Roomに入るときに選択するシーンが TRTCCloudDef#TRTC_APP_SCENE_VIDEOCALL または TRTCCloudDef#TRTC_APP_SCENE_AUDIOCALLの場合、SDKはこのモードを自動的に選択します。

(3)TRTCCloudDef#TRTCSystemVolumeTypeMedia:メディアボリュームは通話全体で使用されますが、これは一般的には使用されず、特別なニーズを持つ個々のアプリケーションシナリオ(ホストの外部サウンドカードなど)に適しています。

それがコールチャネルであるかメディアチャネルであるかを判別します。

音量キーで音量をオフにします。音なしでオフにできる場合はメディアチャンネル、音なしでオフにできない場合は通話チャンネルです。

2.Xlogログ

      使用中に問題や例外が発生した場合はxlogログを確認し、Tencentのカスタマーサービスに送信して確認できます。xlogログは電話のローカルファイルパスにあります
。xlogログ:https://cloud.tencent.com/developer/article/1502366

3.マイクのプリエンプション

      マイクのプリエンプションは、携帯電話で試行される基本的な実装に関連している可能性があります。処理方法の1つは、Tencentのリアルタイムオーディオおよびビデオオーディオをオフにしてから、提供されるAPIを使用して独自のオーディオデータをリアルタイムで送信することです。これにより、競合が発生せず、オーディオデータを送信できます。

(1)設定tRTCCloud.enableCustomAudioCapture(true)

       オーディオカスタムキャプチャモードを有効にする

      このモードを有効にすると、SDKは元のオーディオキャプチャプロセスを実行せず、エンコード機能と送信機能のみを保持します。自分で収集したオーディオデータをSDKに継続的に挿入するには、sendCustomAudioData()を使用する必要があります。

パラメータ

有効にする 有効にするかどうかtrue:有効; false:無効、デフォルト値:false

(2)tRTCCloud.startLocalAudio();を呼び出さないでください。呼び出された場合は、注意する必要があります。オフにした後、Tencentリアルタイムオーディオおよびビデオsdkのオーディオ送信はありません

(3)tRTCCloud.sendCustomAudioData(mTRTCAudioFrame)を介してリアルタイムでオーディオデータを送信します。

private TRTCCloudDef.TRTCAudioFrame mTRTCAudioFrame = new TRTCCloudDef.TRTCAudioFrame();
mTRTCAudioFrame.data = data; //data为你自己采集到的音频数据
mTRTCAudioFrame.sampleRate = 48000; //采样率需要与自己音频的采样率一样,不与其推荐的一样也可以
mTRTCAudioFrame.channel = 1;  //1-单声道,2-双声道
mTRTCAudioFrame.timestamp = 0; //时间戳设为0即可
if (trtcCloud != null) {
   trtcCloud.sendCustomAudioData(mTRTCAudioFrame);
}

 sendCustomAudioData()

自分で収集した音声データをSDKに送信する

TRTCAudioFrameでは、次の入力方法をお勧めします。

データ:オーディオフレームバッファ。オーディオフレームデータはPCM形式である必要があり、フレームあたり20msのサンプルをお勧めします。[48000サンプリングレート、モノフレーム長:48000×0.02s×1×16ビット= 15360ビット= 1920バイト]。
sampleRate:サンプリングレート。
チャネル:チャネル数(ステレオの場合、データが交差します)、モノ:1、デュアル:2。
タイムスタンプ:タイムスタンプの間隔が不均一な場合、オーディオとビデオの同期および記録されたMP4の品質に深刻な影響を及ぼします。
参照ドキュメント:カスタムキャプチャとレンダリング。

パラメータ
フレームオーディオフレーム。現在、モノラルのみをサポートし、48Kのサンプリングレートのみをサポートしています。TRTCAudioFrame
注を参照してください。
フレーム内のタイムスタンプを0に設定できます。これは、SDKにタイムスタンプ自体を設定させるのと同じですが、sendCustomAudioDataの呼び出し間隔を「均等に」制御してください。そうしないと、音が断続的になります。

 

おすすめ

転載: blog.csdn.net/qq_37980878/article/details/111557146