ショートビデオ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;
// 左のトラックにビデオストリームを追加します。
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キャンセル];