開発者がTencent Cloud Gaming Multimedia Engine製品APIのデバッグ・アクセスを行いやすいように、ここで、Gaming Multimedia Engineリアルタイム音声伴奏のインポート技術ドキュメントを説明させていただきます。
インターフェース | インターフェースの意味 |
---|---|
StartAccompany | 伴奏再生を開始します。 |
StopAccompany | 伴奏再生を停止します。 |
IsAccompanyPlayEnd | 伴奏再生が終わっているかどうか。 |
PauseAccompany | 伴奏再生を一時停止します。 |
ResumeAccompany | 伴奏再生を再開します。 |
SetAccompanyVolume | 伴奏ボリュームを設定します。 |
GetAccompanyVolume | 伴奏再生ボリュームを取得します。 |
SetAccompanyFileCurrentPlayedTimeByMs | 再生進捗を設定します。 |
リアルタイム音声伴奏を利用する必要がある場合は、 GME SDK をアクセスし、且つリアルタイムの音声通話を行える必要があります。
ソーシャルタイプAPPの呼び出しフローチャートは下図の通りです。
StartAccompany インターフェースを呼び出し伴奏再生を開始します。m4a、wav、mp3 の3種類のフォーマットをサポートしています。このAPIを呼び出すと、ボリュームがリセットされます。
ITMGAudioEffectCtrl virtual int StartAccompany(const char* filePath, bool loopBack, int loopCount, int msTime)
パラメータ | タイプ | 意味 |
---|---|---|
filePath | char* | 伴奏を再生するパスです。 |
loopBack | bool | ミキシングで発送するかどうかは、一般的にはtrueにします、即ち、ほかの人たちも伴奏が聞こえることです。 |
loopCount | int | 循環回数です。数値が-1の場合、無限循環を示しています。 |
msTime | int | ディレー時間です。 |
//Windowsコード
ITMGContextGetInstance()->GetAudioEffectCtrl()->StartAccompany(filePath,true,-1,0);
//Androidコード
ITMGContext.GetInstance(this).GetAudioEffectCtrl().StartAccompany(filePath,true,loopCount,0);
//iOSコード
[[[ITMGContext GetInstance] GetAudioEffectCtrl] StartAccompany:path loopBack:isLoopBack loopCount:loopCount msTime:0];
伴奏再生が終わった後に、コールバック関数が OnEventを呼び出します。イベントメッセージがITMG_MAIN_EVENT_TYPE_ACCOMPANY_FINISHであり、OnEvent関数でイベントメッセージを判断します。
渡されるパラメータdataには resultと file_pathの二つの情報が含まれています。
void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
//処理します
break;
}
...
case ITMG_MAIN_EVENT_TYPE_ACCOMPANY_FINISH:
{
//処理します
break;
}
}
}
StopAccompanyインターフェースを呼び出し、伴奏再生を停止します。
ITMGAudioEffectCtrl virtual int StopAccompany(int duckerTime)
パラメータ | タイプ | 意味 |
---|---|---|
duckerTime | int | フェードアウト時間です。 |
ITMGContextGetInstance()->GetAudioEffectCtrl()->StopAccompany(0);
再生が終わった場合は、戻り値がtrueです。再生が終わっていない場合は、戻り値が falseです。
ITMGAudioEffectCtrl virtual bool IsAccompanyPlayEnd()
ITMGContextGetInstance()->GetAudioEffectCtrl()->IsAccompanyPlayEnd();
PauseAccompany インターフェースを呼び出し伴奏再生を一時停止します。
ITMGAudioEffectCtrl virtual int PauseAccompany()
ITMGContextGetInstance()->GetAudioEffectCtrl()->PauseAccompany();
ResumeAccompany インターフェースは伴奏再生の再開に使われています。
ITMGAudioEffectCtrl virtual int ResumeAccompany()
ITMGContextGetInstance()->GetAudioEffectCtrl()->ResumeAccompany();
このインターフェースは自分に伴奏が聞こえるかどうかを設定することに使われます。
ITMGAudioEffectCtrl virtual int EnableAccompanyPlay(bool enable)
パラメータ | タイプ | 意味 |
---|---|---|
enable | bool | 聞こえるかどうか。 |
ITMGContextGetInstance()->GetAudioEffectCtrl()->EnableAccompanyPlay(false);
他人にも伴奏が聞こえるかどうかを設定します。
ITMGAudioEffectCtrl virtual int EnableAccompanyLoopBack(bool enable)
パラメータ | タイプ | 意味 |
---|---|---|
enable | bool | 聞こえるかどうか。 |
ITMGContextGetInstance()->GetAudioEffectCtrl()->EnableAccompanyLoopBack(false);
SetAccompanyVolume インターフェースを呼び出し伴奏ボリュームを設定します、ボリュームのデフォルト値が100です。数値が100以上の場合はゲインを上げ、数値が100以下の場合はゲインを下げます。数値範囲が0-200です。
ITMGAudioEffectCtrl virtual int SetAccompanyVolume(int vol)
パラメータ | タイプ | 意味 |
---|---|---|
vol | int | ボリュームの数値です。 |
int vol=100;
ITMGContextGetInstance()->GetAudioEffectCtrl()->SetAccompanyVolume(vol);
GetAccompanyVolume インターフェースは伴奏ボリュームの取得に使われています。
ITMGAudioEffectCtrl virtual int GetAccompanyVolume()
ITMGContextGetInstance()->GetAudioEffectCtrl()->GetAccompanyVolume();
下記の二つのインターフェースは伴奏再生進捗の取得に使われています。注意事項:Current / Total = 現在循環回数、Current % Total = 現在再生循環の位置。
ITMGAudioEffectCtrl virtual int GetAccompanyFileTotalTimeByMs()
ITMGAudioEffectCtrl virtual int GetAccompanyFileCurrentPlayedTimeByMs()
ITMGContextGetInstance()->GetAudioEffectCtrl()->GetAccompanyFileTotalTimeByMs();
ITMGContextGetInstance()->GetAudioEffectCtrl()->GetAccompanyFileCurrentPlayedTimeByMs();
SetAccompanyFileCurrentPlayedTimeByMs インターフェースは再生進捗の設定に使われています。
ITMGAudioEffectCtrl virtual int SetAccompanyFileCurrentPlayedTimeByMs(unsigned int time)
パラメータ | タイプ | 意味 |
---|---|---|
time | int | 再生進捗はミリ秒を単位とします。 |
ITMGContextGetInstance()->GetAudioEffectCtrl()->SetAccompanyFileCurrentPlayedTimeByMs(time);
エラーコードの名 | エラーコードの値 | エラーコードの意味 | 解決方法 |
---|---|---|---|
QAV_ERR_ACC_OPENFILE_FAILED | 4001 | ファイルを開くことに失敗しました | ファイルパス及びファイルが存在しているかどうかを確認し、ファイルにアクセスする権限があるかどうかを確認します。 |
QAV_ERR_ACC_FILE_FORAMT_NOTSUPPORT | 4002 | 未対応のファイル形式です | ファイル形式が正しいかどうかを確認します。 |
QAV_ERR_ACC_DECODER_FAILED | 4003 | デコードに失敗しました | ファイル形式が正しいかどうかを確認します。 |
QAV_ERR_ACC_BAD_PARAM | 4004 | パラメータエラー | コードにおけるパラメータが正しいかどうかを確認します。 |
QAV_ERR_ACC_MEMORY_ALLOC_FAILED | 4005 | メモリの割り当てに失敗しました | システムリソースが使い切られています、このエラーコードが続く場合、開発者に連絡してください。 |
QAV_ERR_ACC_CREATE_THREAD_FAILED | 4006 | スレッドの作成は失敗しました | システムリソースが使い切られています、このエラーコードが続く場合、開発者に連絡してください。 |
QAV_ERR_ACC_STATE_ILLIGAL | 4007 | 不正な状態です | ある状態でないことです。この状態でないと呼び出せないインターフェースを呼び出した場合は、このエラーが発生します。 |
この記事はお役に立ちましたか?