tencent cloud

フィードバック

リアルタイムカラオケ機能

最終更新日:2024-01-18 15:47:47
    開発者がTencent Cloud Gaming Multimedia Engine製品APIのデバッグ・アクセスを行いやすいように、ここで、Gaming Multimedia Engineリアルタイム音声カラオケ機能の導入技術ドキュメントを説明します。

    使用前提

    リアルタイム音声カラオケ機能を利用する必要がある場合は、GME SDKへアクセスし、且つリアルタイムの音声通話を行える必要があります。
    入室時にルームタイプのパラメータを入力します。RoomType=2でルームに参加することをお勧めします(2または3を使用してください)。
    使用中にエラーコードが表示された場合、エラーコードドキュメントを参照して解決してください。

    フローチャート

    入室手順の参考図は以下のとおりです:
    
    
    
    リアルタイムボイスルーム参加インターフェース:
    ITMGContext.GetInstance(this).Init(String.valueOf(mAppId), mUserId);//sdkの初期化
    ITMGContext.GetInstance(this).SetTMGDelegate(new MyDelegate());//さまざまなコールバックとイベントを受け取るためのエージェントクラスを設定します
    EnginePollHelper.createEnginePollHelper();//定期的にPoll関数が呼び出され、コールバックがトリガされます
    
    byte[] authbuff = AuthBuffer.getInstance().genAuthBuffer(mAppId, mRoomId, mUserId,mAppKey);//認証情報の取得
    ITMGContext.GetInstance(this).EnterRoom(mRoomId, 2, authbuff);//入室
    説明:
    呼び出し手順とインターフェースの詳細については各端末SDKインターフェースドキュメントをご参照ください。

    カラオケインターフェイスの取得

    1. ダウンロードガイドから標準SDKファイルをダウンロードします。
    2. プラットフォームによっては、カラオケ機能インターフェースをダウンロードし、適切なインターフェースファイルをインポートします。
    説明:
    この機能は、mp3とoggの両方の形式をサポートしています。
    音楽ファイルがogg形式の場合は、クリックしてoggダイナミックライブラリをダウンロードしてください(iOS側にはoggダイナミックライブラリが含まれているのでインポートは不要)。
    音楽ファイルがmp3形式の場合は、クリックしてmp3ダイナミックライブラリをダウンロードしてください(iOS以外のプラットフォームにはこのダイナミックライブラリをインポートする必要があります)。

    Android端末の設定

    Android対応のインターフェースはすでに標準jarパッケージに含まれており、別途でインターフェースファイルをダウンロードする必要はありません。

    iOS端末の設定

    1. iOS側でカラオケ機能を使用するには、関連するダイナミックライブラリをプロジェクトに導入する必要があり、クリックしてmp3ダイナミックライブラリをダウンロードしてください。
    2. ダウンロードしたファイルをプロジェクトファイルに取り込みます。このダイナミックライブラリをLink Binary With Librariesに追加します。
    3. ヘッダーファイルTMGEngine_adv.hを、他のSDKヘッダーファイルと同じディレクトリにあるプロジェクトに追加します。

    Windows端末の設定

    Windows側ではカラオケ機能を使用するには、ヘッダーファイルをダウンロードした後、ヘッダーファイルtmg_sdk_adv.h、tmg_type_adv.hをプロジェクトにインポートする必要があります。

    Unityエンジンの設定

    Unityエンジンでカラオケ機能を使用するには、ヘッダーファイルをダウンロードし、Unityフォルダ下のコードファイルTMGEngine_Adv.cs、ITMGEngine_Adv.csをコピーしてプロジェクトにインポートする必要があります。
    iOSプラットフォームからエクスポートする場合は、上記を参照してmp3ダイナミックライブラリをインポートしてください。

    レコーディング関連インターフェース

    レコーディング開始

    StartRecordインターフェースを呼び出してレコーディングを開始します。レコーディングが完了すると、コールバック関数が呼び出され、ITMG_MAIN_EVENT_TYPE_RECORD_COMPLETEDをリスニングする必要があります。
    レコーディングの際にはマイクがオンになっていること(デバイスと上りの両方がオンになっている必要があります)、ファイルパスがアクセス可能であることを確認してください。SDKは自動でフォルダを作成できません。

    関数のプロトタイプ

    int StartRecord(int type, String dstFile, String accMixFile, String accPlayFile)
    パラメータ
    タイプ
    意味
    type
    int
    カラオケシナリオで、このパラメータはITMG_AUDIO_RECORDING_KTVに渡されます。単にMP3ファイルをレコーディングする場合は、ITMG_AUDIO_RECORDING_SELFを使用してください。
    dstFile
    String
    レコーディングされた音楽を保存するための対象ファイルのパス。
    accMixFile
    String
    人間の声と音楽ファイルを合成するために用いられる通常の歌なしの伴奏。
    accPlayFile
    String
    再生に使用する音楽ファイルであり、通常はaccMixFileと同じファイルです。しかし、ユーザーが曲に慣れていない場合には、歌付きの音楽ファイルのパスを埋め込みます。この場合の再生内容は歌付きの音楽であり、歌なしの伴奏を合成します。

    サンプルコード

    //Android
    ITMGAudioRecordCtrl.GetInstance().StartRecord(ITMGAudioRecordCtrl.ITMG_AUDIO_RECORDING_KTV, dstFile, accMixFile, accPlayFile);
    //iOS
    #import "GMESDK/TMGEngine_adv.h"
    [[ITMGAudioRecordCtrl GetInstance]StartPreview]

    レコーディング停止

    StopRecordインターフェースを呼び出して記録を停止します。

    関数のプロトタイプ

    int StopRecord()

    レコーディングの一時停止

    PauseRecordインターフェースを呼び出して記録を一時停止します。

    関数のプロトタイプ

    int PauseRecord()

    レコーディングの再開

    記録を再開するには、ResumeRecordインターフェースを呼び出します。

    関数のプロトタイプ

    int ResumeRecord()

    コールバックのレコーディング

    ITMG_MAIN_EVENT_TYPE_RECORD_COMPLETEDレコーディングが完了したときのコールバック。このコールバックは伴奏の再生が終了するか、StopRecordが呼び出されるとトリガーされます。

    コールバックパラメータ

    パラメータ
    タイプ
    意味
    result
    int
    記録結果です。0は成功を意味します。他にエラーコードがある場合は、エラーコードドキュメントを参照して解決してください。
    filepath
    String
    対象ファイルへのパスです。StartRecordから渡される引数dstFile。
    duration
    String
    記録ファイルの長さ(ミリ秒単位)です。

    再生ファイルの設定

    StartRecordインターフェースを呼び出してレコーディングする際に、再生する音楽ファイルを設定します。再設定したい場合は、このインターフェースを呼び出して再生ファイルを再設定することができます。通常、歌と伴奏を切り替えるのに使われます。

    関数のプロトタイプ

    int SetAccompanyFile(String accPlayFile)
    パラメータ
    タイプ
    意味
    accPlayFile
    String
    再生に使用される音楽ファイル。

    伴奏の長さを取得

    このパラメータを呼び出し、伴奏ファイルaccMixFileの長さを取得します。ミリ秒単位で返されます。

    関数のプロトタイプ

    int GetAccompanyTotalTimeByMs()

    現在の記録時間を取得

    このパラメータを呼び出し、現在の記録時間をミリ秒単位で取得します。

    関数のプロトタイプ

    int GetRecordTimeByMs()

    レコーディングのジャンプ

    記録時間を指定した時刻にジャンプします。パラメータが現在の時刻よりも前にある場合、繰り返した箇所は再記録されます。現在時刻よりも後であれば、記録されていない部分をミュートデータで埋めます。

    関数のプロトタイプ

    int SetRecordTimeByMs(int timeMs)
    パラメータ
    タイプ
    意味
    timeMs
    int
    ジャンプする時刻(ミリ秒単位)。

    カラオケファイルのプレビュー

    レコーディングファイルの長さの取得

    このパラメータを呼び出して、記録ファイルの長さを取得します。

    関数のプロトタイプ

    int GetRecordFileDurationByMs()

    記録ファイルのプレビューを開始

    このパラメータを呼び出して、記録ファイルのプレビューを開始します。

    関数のプロトタイプ

    int StartPreview()

    記録ファイルのプレビューを停止

    このパラメータを呼び出して、記録ファイルのプレビューを停止します。

    関数のプロトタイプ

    int StopPreview()

    記録ファイルのプレビューを一時停止

    このパラメータを呼び出して、記録ファイルのプレビューを一時停止します。

    関数のプロトタイプ

    int PausePreview()

    記録ファイルのプレビューを復元

    このパラメータを呼び出して、記録ファイルのプレビューを復元します。

    関数のプロトタイプ

    int ResumePreview()

    現在のプレビューの時点を設定

    このパラメータを呼び出して、現在のプレビューの時点を設定します。

    関数のプロトタイプ

    int SetPreviewTimeByMs(int time)
    パラメータ
    タイプ
    意味
    time
    int
    ファイルがプレビューされる時点(ミリ秒単位)。

    現在のプレビューの時点を取得

    このパラメータを呼び出して、現在のプレビューの時点を取得します。

    関数のプロトタイプ

    int GetPreviewTimeByMs()

    プレビュー再生のコールバック

    ITMG_MAIN_EVENT_TYPE_RECORD_PREVIEW_COMPLETEDプレビューが完了したときのコールバック。プレビューファイルの再生が終了するか、StopPreviewインターフェースを呼び出すとトリガーされます

    コールバックパラメータ

    パラメータ
    タイプ
    意味
    result
    int
    再生結果です。0は成功を意味します。

    ファイル合成インターフェース

    ファイル結合

    このパラメータを呼び出して、録音された人の声と伴奏を1つのファイルにまとめます。

    関数のプロトタイプ

    int MixRecordFile();

    合成の解除

    このパラメータを呼び出して、合成操作がキャンセルされます。

    関数のプロトタイプ

    int CancelMixRecordFile();

    ファイル合成のコールバック

    ITMG_MAIN_EVENT_TYPE_RECORD_MIX_COMPLETEDプレビューが完了したときのコールバック。プレビューファイルの再生が終了するか、StopPreviewインターフェースを呼び出してトリガされます。

    コールバックパラメータ

    パラメータ
    タイプ
    意味
    result
    int
    合成結果です。0は成功を意味します。
    filepath
    String
    対象ファイルのパスであり、StartRecordインターフェースから渡されるdstFile。
    duration
    String
    記録ファイルの長さ(ミリ秒単位)です。

    詳細設定

    伴奏スケールを設定

    このインターフェースを呼び出して、人の声と伴奏のスケールを設定します。記録が完了したら調整できます。

    関数のプロトタイプ

    int SetMixWieghts(float mic, float acc)
    パラメータ
    タイプ
    意味
    mic
    float
    人の声のスケールです。1.0が元の音量、1.0未満が縮小、1.0を超えると拡大、0~2の範囲で設定されます。
    acc
    float
    伴奏のスケールです。1.0が元のボリューム、1.0未満が縮小、1.0を超えると拡大、0~2の範囲で設定されます。

    オフセットを設定

    このインターフェースを呼び出して伴奏に対する人の声のオフセットを設定します。通常、声がテンポに追いつかない問題を調整するために使用されます。記録が完了したら調整できます。

    関数のプロトタイプ

    int AdjustAudioTimeByMs(int time)
    パラメータ
    タイプ
    意味
    time
    int
    伴奏に対する人の声のオフセット時間(単位ms)。0より大きい場合は後方に移動し、0より小さい場合は前方に移動します。

    効果音の設定

    効果音の種類を設定します。カラオケ効果音についてはリアルタイム音声効果音ドキュメントをご参照ください。調整は、レコーディングが完了した後または、レコーディング中にも行われることが可能です。

    関数のプロトタイプ

    int SetRecordKaraokeType(int type)
    パラメータ
    タイプ
    意味
    type
    int
    このタイプは、リアルタイム音声効果のカラオケ効果音のタイプと同様します。詳細については、カラオケ効果音をご参照ください。
    
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)