ショートビデオSDKにはトリミングモジュールがあり、ビデオをデュレーションとアスペクト比でトリミングしたり、オーディオをデュレーションでトリミングしたり、画像をアスペクト比でトリミングしたりできます。 このトピックでは、iOS用のショートビデオSDKを使用してビデオをトリミングする方法について説明します。
サポートされているエディション
| エディション | 対応 |
| Professional | 必須 |
| 標準モード | 必須 |
| 基本 | 必須 |
関連クラス
| 分類 | 説明 |
| AliyunCrop | ビデオとオーディオのトリミング、トリミングパラメーター設定、コールバック設定など、オーディオとビデオのトリミング機能を定義するコアクラス。 |
| AliyunImageCrop | 画像のトリミング、トリミングパラメーター設定、コールバック設定など、画像のトリミング機能を定義するコアクラス。 |
重要 オーディオとビデオは非同期でトリミングされます。 AliyunCropインスタンスのオブジェクトは、ローカル変数ではなくメンバー変数である必要があります。 トリミング中に背景に切り替えると、トリミングは失敗します。
ビデオのトリミング-定期的なトリミング
ビデオは、通常のクロッピング中に再び符号化および復号される。 出力解像度、ビットレート、フレームレート、キーフレーム間隔、エンコード形式、ビデオ品質など、出力ビデオのパラメーターを設定できます。
AliyunCrop操作パラメーターの詳細については、。
初期化の実行
// 初期化メソッドを呼び出して、トリミングオブジェクトを作成します。
self.crop = [[AliyunCrop alloc] initWithDelegate:self];入力パス、出力パス、およびトリミング期間の設定
// ビデオの入力パスと出力パスを指定します。
self.crop.inputPath = [self.class resourcePath:@ "input.mp4"];
self.crop.outputPath = [self.class resourcePath:@ "output.mp4"];
// トリミングの開始と終了の時点を指定します。 (単位:秒)
self.crop.startTime = 0.0;
self.crop.endTime = 5.0;説明 出力ファイルのパスがマルチレベルディレクトリの場合は, 必ずディレクトリを作成してください。
トリミングパラメーターの設定
// 出力ビデオの解像度を指定します。
self.crop.outputSize = CGSizeMake(720、720);
// トリミングエリアを指定します。
self.crop.rect = CGRectMake(0, (1280-720) / 2, 720, 720);
// トリミングモードを指定します。
self.crop.cropMode = AliyunCropModeScaleAspectCut;
// ビットレートを指定します。 単位:bit/s。
self.crop.bitrate = 1000*1000;
// フレームレートを指定します。
self.cropl.fps = 30;
// キーフレーム間隔を指定します。
self.crop.gop = 90;
// ビデオ品質を指定します。
self.crop.videoQuality = AliyunVideoQualityHight;
// エンコードモードをハードウェアエンコードに設定します。
self.crop.encodeMode = 1;トリミングを開始
[self.crop startCrop]; トリミングコールバックの設定
// トリミング中にエラーが発生した場合に返されるコールバック。
- (void)cropOnError :( int)error {
}
// トリミングの進行状況のコールバック。
- (void)cropTaskOnProgress :( float)progress {
}
// トリミングが完了したときに返されるコールバック。
- (void)cropTaskOnComplete {
}
// トリミングがキャンセルされたときに返されるコールバック。
- (void)cropTaskOnCancel {
}ビデオトリミング-高速トリミング
ビデオは、高速クロッピング中に再び符号化および復号されない。 ビデオを指定した期間にトリミングできますが、他のパラメーターは設定できません。
AliyunCrop操作パラメーターの詳細については、。
初期化の実行
// 初期化メソッドを呼び出して、トリミングオブジェクトを作成します。
self.crop = [[AliyunCrop alloc] initWithDelegate:self];高速トリミングの有効化
// クロッピングの最適化を有効にして、高速クロッピングを可能にします。
self.crop.shouldOptimize = YES;入力パス、出力パス、およびトリミング期間の設定
// ビデオの入力パスと出力パスを指定します。
self.crop.inputPath = [self.class resourcePath:@ "input.mp4"];
self.crop.outputPath = [self.class resourcePath:@ "output.mp4"];
// トリミングの開始と終了の時点を指定します。
self.crop.startTime = 0.0;
self.crop.endTime = 5.0;説明 出力ファイルのパスがマルチレベルディレクトリの場合は, 必ずディレクトリを作成してください。
トリミングを開始
[self.crop startCrop]; トリミングコールバックの設定
// トリミング中にエラーが発生した場合に返されるコールバック。
- (void)cropOnError :( int)error {
}
// トリミングの進行状況のコールバック。
- (void)cropTaskOnProgress :( float)progress {
}
// トリミングが完了したときに返されるコールバック。
- (void)cropTaskOnComplete {
}
// トリミングがキャンセルされたときに返されるコールバック。
- (void)cropTaskOnCancel {
}オーディオトリミング
AliyunCrop操作パラメーターの詳細については、。
初期化の実行
// 初期化メソッドを呼び出して、トリミングオブジェクトを作成します。
self.crop = [[AliyunCrop alloc] initWithDelegate:self];入力パス、出力パス、およびトリミング期間の設定
// オーディオファイルの入力パスと出力パスを指定します。
self.crop.inputPath = [self.class resourcePath:@ "input.mp3"];
self.crop.outputPath = [self.class resourcePath:@ "output.mp3"];
// トリミングの開始と終了の時点を指定します。 (単位:秒)
self.crop.startTime = 0.0;
self.crop.endTime = 5.0;説明 出力ファイルのパスがマルチレベルディレクトリの場合は, 必ずディレクトリを作成してください。
トリミングを開始
[self.crop startCrop]; トリミングコールバックの設定
// トリミング中にエラーが発生した場合に返されるコールバック。
- (void)cropOnError :( int)error {
}
// トリミングの進行状況のコールバック。
- (void)cropTaskOnProgress :( float)progress {
}
// トリミングが完了したときに返されるコールバック。
- (void)cropTaskOnComplete {
}
// トリミングがキャンセルされたときに返されるコールバック。
- (void)cropTaskOnCancel {
}画像のトリミング
AliyunImageCrop操作パラメーターの詳細については、。
初期化の実行
// 初期化メソッドを呼び出して、トリミングオブジェクトを作成します。
AliyunImageCrop * imageCrop = [[AliyunImageCrop alloc] init];入力イメージの指定
imageCrop.originImage=イメージ;トリミングパラメーターの設定
// 出力画像の解像度を指定します。
imageCrop.outputSize = CGSizeMake(200、200);
// (オプション) トリミングエリアを指定します。 単位: ピクセル。
imageCrop.cropRect = CGRectMake(50、0、200、200);
// (オプション) 画像のトリミングモードを指定します。
imageCrop.cropMode = AliyunImageCropModeAspectCut;トリミングを開始してトリミング画像を生成する
UIImage * outputImage = [imageCrop generateImage];