ショートビデオSDKは、ビデオマージクラスAliyunIMixComposerを提供します。 このクラスを呼び出して、複数のビデオを1つのオフラインにマージできます。 マージされたビデオは、ピクチャインピクチャ、9平方グリッド、左右分割画面、または上下分割画面などの指定されたレイアウトで配置できます。 ビデオマージ用に複数のビデオトラックを追加できます。 このトピックでは、iOS用のショートビデオSDKを使用してビデオをマージする方法について説明します。 このトピックでは、ビデオマージのサンプルコードも提供します。

サポートされているエディション

エディション 対応
Professional 必須
標準モード 必須
基本 必須

関連クラス

分類 説明
AliyunMixComposer マージのコアクラス。The core class for merging. このクラスを実装すると、同じ画面上の複数のビデオを、左右の分割画面、ピクチャーインピクチャー、9平方グリッドなどの異なるレイアウトでマージできます。 このクラスを実装して、同じ画面で2つの関連するビデオの再生に参加することもできます。
AliyunMixTrack ビデオマージ用のトラックを定義するクラス。 A video track for video merging can be created by using the AliyunMixComposer class. ビデオストリームをビデオトラックに追加できます。
AliyunMixStream The class that is used to merge video streams and add the output to the video track.
AliyunPureColorBorderInfo トラックストリームの境界情報を定義するクラス。

マージプロセス

設定 手順 説明 サンプルコード
基本 1 マージインスタンスを作成し、コールバックを設定します。 初期化
2 複数のトラックとビデオストリームを作成し、ビデオストリームを別々にトラックに追加します。 トラックの作成
3 出力パス、マージされたビデオの幅と高さなどのパラメーターを設定します。 出力パラメーターの設定
4 コールバックを設定し、マージを開始します。 マージを開始
上級 5 必要に応じて、キャンセル、一時停止、継続機能を設定します。 ビデオマージの制御

初期化

Create a merging instance and configure callbacks. コードで使用されるパラメーターの詳細については、「関連クラス」をご参照ください。

// AliyunMixComposerオブジェクトを作成します。
AliyunMixComposer * mixComposer = [[AliyunMixComposer alloc] init];

// コールバックを設定します。
mixComposer.de legate = self;

トラックの作成

複数のトラックとビデオストリームを作成し、ビデオストリームを別々にトラックに追加します。 コードで使用されるパラメーターの詳細については、「関連クラス」をご参照ください。

トラックを追加
// 左側にトラックを追加します。
AliyunMixTrack *recordTrack = [mixComposer createTrack:CGRectMake(0,0,360,720)];

// Add a track on the right.
AliyunMixTrack * playerTrack = [mixComposer createTrack:CGRectMake(360,0、360,720)];

// トラックパラメータを設定します。
// オーディオ出力のトラックを指定します。
recordTrack.outputAudioReferenceTrack = YES;
// オーディオ出力の割合を指定します。
recordTrack.outputAudioWeight = 100;

// トラックのデュレーションを出力ビデオとして指定します。
recordTrack.outputDurationReferenceTrack = YES;

// トラックの境界線を設定します。
AliyunPureColorBorderInfo * info = [[AliyunPureColorBorderInfo alloc] init];
info.width = 10.f;
info.cornerRadius = 10.f;
info.color = [UIColor redColor];
recordTrack.borderInfo = info;
                
各トラックにoutputAudioReferenceTrackとoutputAudioWeightを設定することで、出力ビデオに追加されるオーディオを指定できます。 outputDurationReferenceTrackがすべてのトラックでYESに設定されている場合、後で作成されたトラックは以前に作成されたトラックを上書きします。
ビデオストリームをトラックに追加する
// 左のトラックにビデオストリームを追加します。
AliyunMixStream * recordStream = [[AliyunMixStream alloc] init];
recordStream.filePath = videoPath;
recordStream.mo de = AlivcContentModeScaleAspectFit;
[recordTrack addStream:recordStream];

// ビデオストリームを正しいトラックに追加します。
AliyunMixStream * playerStream = [[AliyunMixStream alloc] init];
playerStream.filePath = mixVideoFilePath;
playerStream.mo de = AlivcContentModeScaleAspectFit;
[playerTrack addStream:playerStream];

出力パラメーターの設定

出力パス、マージされたビデオの幅と高さなどのパラメーターを設定します。 コードで使用されるパラメーターの詳細については、「関連クラス」をご参照ください。

// 出力パスを指定します。
mixComposer.outputPath = self.outputPath;

// 出力解像度を指定します。
mixComposer.outputSize = CGSizeMake(720,720);

// 出力フレームレートを指定します。
mixComposer.fps = 30;

// キーフレーム間隔を指定します。
mixComposer.gop = 90;

// ビデオ品質を指定します。
mixComposer.videoQuality = AliyunVideoQualityHight;

マージを開始

ビデオのマージを開始し、コールバックを設定します。 コードで使用されるパラメーターの詳細については、「関連クラス」をご参照ください。

// マージを開始します。
[mixComposer start];


// Configure callbacks.
// 進捗のマージ
- (void)mixComposerOnProgress :( float)progress {
}

// マージは完了です。
- (void)mixComposerDidComplete {
}

// マージ中にエラーが発生しました。
- (void)mixComposerDidError :( int)error {
}

ビデオマージの制御

必要に応じて、キャンセル、一時停止、継続機能を設定します。 コードで使用されるパラメーターの詳細については、「関連クラス」をご参照ください。

// マージを一時停止します。
[mixComposerの一時停止];

// マージを続行します。
[mixComposerの履歴書];

// マージをキャンセルします。
[mixComposerキャンセル];