すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo Live:クライアント側ローカル録画

最終更新日:Mar 22, 2026

ビデオ通話、ライブ配信、オンライン授業などの場面では、ユーザーが後で視聴できるよう音声および映像ストリームを録画するニーズがよくあります。本ガイドでは、クライアント SDK を使用して音声および映像をローカルファイルとして録画・保存する方法について説明します。

仕組み

通話中には、ご利用の端末上の音声および映像ストリームを録画できます。この機能の実装には、以下の 2 つの主要な API を使用します。

API

説明

パラメーター

startRecord

ローカル録画セッションを構成し、開始します。

  • recordType:録画タイプを指定します。音声のみ、または音声と映像の両方を録画できます。

  • recordFormat:録画ファイルのフォーマットです。音声のみの録画では AAC および WAV を、音声と映像の両方を含む録画では MP4 をサポートします。

  • filePath:録画ファイルの保存先パスです。

  • audioConfig:サンプルレート、音質、外部キャプチャ/再生ソースからの音声録画有効化など、音声録画に関する設定です。

  • videoConfig:映像品質やエンコーディングモードなど、映像録画に関する設定です。

  • maxSize:ファイルサイズの上限(バイト単位)。この制限に達すると、録画は自動的に停止します。

  • maxDuration:録画時間の上限(秒単位)。この制限に達すると、録画は自動的に停止します。

stopRecord

進行中のローカル録画を停止し、録画ファイルを保存します。

なし。

サンプルコード

Android でのローカル録画Android/ARTCExample/AdvancedUsage/src/main/java/com/aliyun/artc/api/advancedusage/LocalRecord/RecordingActivity.java

iOS でのローカル録画iOS/ARTCExample/AdvancedUsage/LocalRecording/RecordingVC.swift

前提条件

開始する前に、以下の前提条件を満たしてください。

実装手順

image

1. 録画設定の構成

startRecord を呼び出す前に、ストリームを配信(publish)してください。状態変化コールバックにより配信が正常に完了したことを確認した後、録画パラメーターを構成できます。

Android

AliRtcEngine.AliRtcRecordType recordType = AliRtcEngine.AliRtcRecordType.AliRtcRecordTypeVideo;  // 録画タイプを設定:音声のみ、または音声と映像の両方。
AliRtcEngine.AliRtcRecordFormat recordFormat = AliRtcEngine.AliRtcRecordFormat.AliRtcRecordFormatMP4; // 録画フォーマットを設定。音声のみ:AAC、WAV;音声と映像:MP4。
String filePath = getApplicationContext().getExternalFilesDir( null) + "/record"; // 保存先パスを指定。
Log.i("startRecord", "filePath:" + filePath);
// 音声録画設定を構成。
AliRtcEngine.AliRtcRecordAudioConfig audioConfig = new AliRtcEngine.AliRtcRecordAudioConfig();
audioConfig.sampleRate = AliRtcEngine.AliRtcAudioSampleRate.AliRtcAudioSampleRate_48000; // サンプルレート。
audioConfig.quality = AliRtcEngine.AliRtcAudioQuality.AliRtcAudioQualityHigh;  // 高品質設定はファイルサイズ増加につながります。
audioConfig.externalPcmCaptureRecording = true;  // 外部キャプチャソースからの録画を有効化。
audioConfig.externalPcmRenderRecording = true;   // 外部レンダリング(再生)ソースからの録画を有効化。

// 映像録画設定を構成。
AliRtcEngine.AliRtcRecordVideoConfig videoConfig = new AliRtcEngine.AliRtcRecordVideoConfig();
videoConfig.quality = AliRtcEngine.AliRtcVideoQuality.AliRtcVideoQualityDefault;
videoConfig.encodeMode = AliRtcEngine.AliRtcRecordVideoEncodeMode.AliRtcRecordReusingEncoderMode;  // 配信時に使用するエンコーダーを再利用。

long maxSize = -1; // ファイルサイズの上限(バイト単位)。この制限に達すると、録画は自動的に停止します。
long maxDuration = -1; // 録画時間の上限(秒単位)。この制限に達すると、録画は自動的に停止します。

iOS

// 録画タイプを設定。本例では音声と映像の両方を録画します。
let recordType:AliRtcRecordType = .video // 音声と映像を含む MP4 形式をサポート。
// 録画フォーマットを設定。
let recordFormat: AliRtcRecordFormat = .MP4
// 録画ファイルの保存先パス(アプリケーションのサンドボックスディレクトリ)を設定。
let fileDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let filePath = (fileDirectory as NSString).appendingPathComponent("record")
let fm = FileManager.default
if !fm.fileExists(atPath: filePath) {
    try? fm.createDirectory(atPath: filePath, withIntermediateDirectories: true, attributes: nil)
}

// 必要に応じて音声録画設定を構成。
var audioConfig = AliRtcRecordAudioConfig(
    sampleRate: ._48000,                    // サンプルレート:48000 Hz。
    quality: .high,                         // 高音質。
    enableRecordExternalRenderPCM: true,    // カスタムレンダリング(再生)ソースからの音声録画を許可。
    enableRecordExternalCapturePCM: true    // カスタムキャプチャソースからの音声録画を許可。
)
// 映像録画設定を構成。
var videoConfig = AliRtcRecordVideoConfig(
    quality: .default,
    sourceType: .video,
    canvas: AliRtcRecordVideoCanvasConfig(canvasWidth: 720, canvasHeight: 1280),
    fps: 30,
    bitrate: 1200
)
// ファイルサイズおよび録画時間の制限を設定。
let maxSize: Int64 = -1     // 単位:バイト。
let maxDuration: Int32 = -1 // 単位:秒。

macOS

  
/*
   音声設定を構成
*/
    AliRtcRecordAudioConfig AudioConfig ;
    AudioConfig.quality = AliRtcAudioQualityMidium ;
    AudioConfig.sampleRate = AliRtcAudioSampleRate_48000 ;
    AudioConfig.enableRecordExternalCapturePCM = false ;
    AudioConfig.enableRecordExternalRenderPCM = false ;

/*
   映像設定を構成
*/
    AliRtcRecordVideoConfig VideoConfig ;
    VideoConfig.sourceType = AliRtcVideosourceCameraType ;
    VideoConfig.bitrate = view.bitrate ;
    VideoConfig.fps = 20 ;
    VideoConfig.quality = AliRtcVideoQualityDefault ;
        

Windows

AliEngineRecordFormat recordFormat = AliEngineRecordFormatMP4; // 録画フォーマット。音声:AAC、WAV;映像:MP4。
std::string filePath = "D:\\record_tmp\\record_video.mp4"; // 保存先パス。

// 音声録画設定。
AliEngineRecordAudioConfig audioConfig;
audioConfig.sampleRate = AliEngineAudioSampleRate_48000; // サンプルレート。
audioConfig.quality = AliEngineAudioQualityHigh;  // 高品質設定はファイルサイズ増加につながります。
audioConfig.externalPcmCaptureRecording = true;  // 外部キャプチャソースからの録画を有効化。
audioConfig.externalPcmRenderRecording = true;   // 外部レンダリング(再生)ソースからの録画を有効化。

// 映像録画設定。
AliEngineRecordVideoConfig videoConfig;
videoConfig.quality = AliEngineVideoQualityDefault;
// 現在のバージョンでは、配信時に使用するエンコーダーの再利用のみをサポート。
videoConfig.encodeMode = AliEngineRecordVideoReusingEncoderMode;  

AliEngineRecordType recordType = AliEngineRecordTypeVideo;

2. 録画の開始

構成済みの設定を引数として startRecord を呼び出して録画を開始します。成功すると、SDK が音声および映像ストリームの録画を開始します。

Android

mAliRtcEngine.startRecord(recordType, recordFormat, filePath, audioConfig, videoConfig, maxSize, maxDuration);

iOS

let result = withUnsafeMutablePointer(to: &audioConfig, { audioPtr in
    withUnsafeMutablePointer(to: &videoConfig, { videoPtr in
        engine.start(
            recordType,
            recordFormat: recordFormat,
            filePath: filePath,
            audioConfig: audioPtr,
            videoConfig: videoPtr
        )
    })
})

macOS

 BOOL ret = [self.engine startRecord:AliRtcRecordTypeVideo recordFormat:AliRtcRecordFormatMP4
                    filePath:view.recordFilePath audioConfig:&AudioConfig videoConfig:&VideoConfig isFragment:FALSE] ;

Windows

mAliRtcEngine->StartRecord(recordType, recordFormat, filePath.c_str(), audioConfig, videoConfig, false);

3. 録画の停止

手動で録画を停止するには、stopRecord メソッドを呼び出します。

Android

mAliRtcEngine.stopRecord();

iOS

rtcEngine?.stopRecord()

macOS

[self.engine stopRecord];

Windows

mAliRtcEngine->StopRecord();

4. 録画ファイルの取得

録画が完了すると、ファイルは指定されたパスに保存されます。その後、サーバーへのアップロード、再生、削除など、必要に応じてこのファイルを処理できます。

説明
  • アプリケーションが適切なストレージ権限(例:Android の WRITE_EXTERNAL_STORAGE)を有していることを確認してください。

  • 低性能デバイスでは、通話体験の滑らかさを維持するために録画品質を低下させることを検討してください。