ビデオをObject Storage Service (OSS) バケットにアップロードし、ビデオスナップショット機能を使用して、ビデオからビデオサムネイル、キーフレーム、または特定のフレームを抽出できます。
使用上の注意
ビデオからスナップショットをキャプチャすると、キャプチャされたスナップショットの数に基づいて課金されます。 詳細については、「データ処理料金」をご参照ください。
OSSは、H.264およびH.265形式のビデオからのみスナップショットをキャプチャできます。
デフォルトでは、キャプチャしたスナップショットは自動的に保存されません。 キャプチャしたスナップショットをローカルストレージデバイスに手動でダウンロードする必要があります。
パラメーター
カテゴリ: ビデオ
処置: snapshot
パラメーター | 説明 | 有効値 |
t | スナップショットをキャプチャする時刻。 値がビデオの長さを超える場合、最後のフレームが返されます。 説明 ビデオのサムネイルをキャプチャする場合は、tを0に設定します。 | [0, ビデオ再生時間] 単位: ミリ秒 |
w | キャプチャするスナップショットの幅。 このパラメーターを0に設定すると、キャプチャされたスナップショットの幅は、キャプチャされたスナップショットの高さとビデオの高さの比率に基づいて計算されます。 | [0、ビデオ幅] 単位: ピクセル |
h | キャプチャするスナップショットの高さ。 このパラメーターを0に設定すると、キャプチャされたスナップショットの高さは、キャプチャされたスナップショットの幅とビデオの幅の比率に基づいて計算されます。 wとhの両方が0に設定されている場合、スナップショットの幅と高さはビデオの幅と高さと同じになります。 | [0、ビデオの高さ] 単位: ピクセル |
m | スナップショットのキャプチャに使用されるモード。 このパラメーターを指定しない場合、スナップショットはデフォルトモードでキャプチャされます。 つまり、動画の指定された時点のスナップショットがキャプチャされます。 このパラメーターがfastに設定されている場合、指定された時点より前の最新のキーフレームがキャプチャされます。 | 速い |
f | 返されるスナップショットの形式。 | jpgとpng |
ar | キャプチャされたスナップショットを自動的に回転するために使用するモード。 |
|
例
このセクションでは、中国 (杭州) リージョンのoss-console-img-demo-cn-hangzhouバケットに保存されているビデオからスナップショットをキャプチャする方法の例を示します。 ビデオは次のURLでホストされます。
https://oss-console-img-demo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/video.mp4
高速モードを使用して、ビデオの7秒目のスナップショットをキャプチャします。 キャプチャしたスナップショットを、幅が800ピクセル、高さが600ピクセルのJPGイメージとしてエクスポートします。
上記のパラメーターを適用するために使用されるURLはhttps://oss-console-img-demo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/video.mp4?x-oss-process=video/snapshot,t_7000,f_jpg,w_800,h_600,m_fastです。
ビデオの17秒目にスナップショットをキャプチャします。 キャプチャしたスナップショットを、幅が800ピクセル、高さが600ピクセルのJPGイメージとしてエクスポートします。
上記のパラメーターを適用するために使用されるURLはhttps://oss-console-img-demo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/video.mp4?x-oss-process=video/snapshot,t_17000,f_jpg,w_800,h_600です。
署名付きURLを生成してビデオスナップショットをキャプチャする
OSS SDKを使用して署名付きURLを生成し、ビデオスナップショットをキャプチャできます。 次のサンプルコードは、OSS SDK for Javaを使用して署名付きURLを生成し、ビデオスナップショットをキャプチャする方法の例を示しています。
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// セキュリティ上の理由から、プロジェクトコードにアクセス資格情報を保存しないことをお勧めします。 この例では、アクセス資格情報は環境変数から取得されます。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// ビデオオブジェクトが保存されているバケットの名前を指定します。 例: examplebucket.
String bucketName = "examplebucket";
// ビデオオブジェクトのフルパスを指定します。 ビデオオブジェクトがバケットのルートディレクトリに保存されていない場合は、オブジェクトへのフルパスを指定する必要があります。 例: examplefolder/videotest.mp4.
文字列objectName = "examplefolder/videotest.mp4";
// OSSClientインスタンスを作成します。
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
// ビデオの17秒目にスナップショットをキャプチャします。 キャプチャしたスナップショットを、幅が800ピクセル、高さが600ピクセルのJPGイメージとしてエクスポートします。
String style = "video/snapshot,t_17000,f_jpg,w_800,h_600";
// URLの有効期間を10分に設定します。
日付の有効期限=新しい日付 (新しい日付 ().getTime() + 1000*60*10 );
GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
req.setExpiration (有効期限);
req.setProcess (スタイル);
URL signedUrl = ossClient.generatePresignedUrl(req);
System.out.println(signedUrl);
// OSSClientインスタンスをシャットダウンします。
ossClient.shutdown();
スナップショットをキャプチャするための署名付きURLの生成方法は、Image Processing (IMG) を使用して画像を処理するための署名付きURLの生成方法と同様です。 次のOSS SDKを使用して署名付きURLを生成し、スナップショットをキャプチャするには、コード内のIMG操作をスナップショット操作に置き換えます。
よくある質問
オブジェクトのURLにパラメータを直接追加して、ACLがプライベートなビデオオブジェクトを処理できますか?
いいえ、できません。 処理するビデオオブジェクトのACLが非公開の場合、OSS SDKを使用して、オブジェクトの署名付きURLにビデオ処理操作を追加できます。 オブジェクトのURLにパラメーターを直接追加して、ACLが非公開のビデオオブジェクトを処理することはできません。
OSSに保存されているビデオオブジェクトの幅と高さを確認するにはどうすればよいですか?
ビデオ情報抽出機能を使用して、ビデオの幅と高さを取得できます。
キャプチャされたビデオスナップショットが歪んでいるのはなぜですか?
スナップショットをキャプチャするビデオは、BT.2020色域を使用します。 ビデオスナップショット機能は、BT.2020色域を使用するビデオをサポートしていません。