Gunakan fitur ekstraksi informasi audio untuk mengekstrak metadata media dari file audio, seperti laju pengambilan sampel audio, jumlah saluran audio, dan apakah gambar sampul digunakan.
Prasyarat
Sebuah Bucket OSS harus terhubung dengan Proyek Intelligent Media Management (IMM). Anda dapat menghubungkan Bucket OSS dengan proyek IMM melalui konsol OSS atau menggunakan API OSS.
Untuk panduan tentang cara menghubungkan proyek IMM dengan Bucket OSS di konsol OSS, lihat bagian Langkah 1: Hubungkan Bucket OSS dengan Proyek IMM dalam topik Memulai.
Untuk informasi lebih lanjut tentang cara menghubungkan proyek IMM dengan Bucket OSS menggunakan API, lihat AttachOSSBucket.
Catatan penggunaan
Ekstraksi informasi audio hanya mendukung pemrosesan sinkron (x-oss-process).
Akses anonim tidak didukung.
Anda harus memiliki Izin yang diperlukan pada IMM.
Parameter
Action: audio/info
Informasi audio dikembalikan dalam format JSON.
Untuk informasi lebih lanjut tentang parameter respons, lihat DetectMediaMeta.
Gunakan API RESTful
Kueri informasi video tentang file FLAC
Contoh permintaan
// Ekstrak informasi audio dari file FLAC contoh.
GET /exmaple.flac?x-oss-process=audio/info HTTP/1.1
Host: video-demo.oss-cn-hangzhou.aliyuncs.com
Date: Jumat, 28 Oktober 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218eContoh respons
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Rabu, 25 Mei 2022 12:43:57 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 161
Connection: keep-alive
x-oss-request-id: 628E2481184E20F26C000009
x-oss-transfer-acc-type: acc-none
x-oss-data-location: oss-cn-hangzhou-a
ETag: "D0F162350DA037F4DC2A142B2E116BD0"
Last-Modified: Rabu,
25 Mei 2022 12:20:34 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 2040549661341440100
x-oss-storage-class: Standard
x-oss-server-time: 12437
{
"RequestId":"E63E1EFB-6D65-59DE-A11D-B0B761FDB301",
"Album":"Album",
"AlbumArtist":"Penyanyi",
"Bitrate":973219,
"Duration":303.76,
"FormatLongName":"raw FLAC",
"FormatName":"flac",
"StreamCount":3,
"Title":"Nama lagu"
"AudioStreams":
[
{
"ChannelLayout":"stereo",
"Channels":2,
"CodecLongName":"FLAC (Free Lossless Audio Codec)",
"CodecName":"flac","CodecTag":"0x0000",
"CodecTagString":"[0][0][0][0]",
"Duration":303.76,
"SampleFormat":"s16",
"SampleRate":"44100",
"TimeBase":"1/44100"
}
],
"VideoStreams":
[
{
"AverageFrameRate":"0/0",
"BitDepth":8,
"CodecLongName":"Motion JPEG",
"CodecName":"mjpeg",
"CodecTag":"0x0000",
"CodecTagString":"[0][0][0][0]",
"ColorRange":"pc",
"ColorSpace":"bt470bg",
"Duration":303.76,
"FrameRate":"90000/1",
"Height":800,
"Index":1,
"Level":-99,
"PixelFormat":"yuvj444p",
"Profile":"Progressive",
"Refs":1,
"TimeBase":"1/90000",
"Width":800
},
{
"AverageFrameRate":"0/0",
"BitDepth":8,
"CodecLongName":"Motion JPEG",
"CodecName":"mjpeg",
"CodecTag":"0x0000",
"CodecTagString":"[0][0][0][0]",
"ColorRange":"pc",
"ColorSpace":"bt470bg",
"Duration":303.76,
"FrameRate":"90000/1",
"Height":800,
"Index":2,
"Level":-99,
"PixelFormat":"yuvj444p",
"Profile":"Progressive",
"Refs":1,
"TimeBase":"1/90000",
"Width":800
}
]
}Gunakan SDK OSS
Berikut ini adalah contoh kode untuk mengekstrak informasi audio menggunakan SDK OSS dalam berbagai bahasa pemrograman umum. Jika Anda ingin menggunakan SDK untuk bahasa lain, modifikasi parameter berdasarkan contoh berikut.
Java
OSS SDK for Java versi 3.17.4 atau lebih baru diperlukan.
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyuncs.exceptions.ClientException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
public class Demo {
public static void main(String[] args) throws ClientException, ClientException {
// Tentukan endpoint wilayah tempat bucket berada.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan ID wilayah tempat bucket disimpan. Contoh: cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket.
String bucketName = "examplebucket";
// Jika file audio disimpan di direktori root bucket, tentukan nama file audio. Jika file audio tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap file audio. Contoh: exampledir/example.mp3.
String key = "example.mp3";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya ketika OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Buat instruksi ekstraksi informasi audio.
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
getObjectRequest.setProcess("audio/info");
// Gunakan parameter process metode getObject untuk meneruskan instruksi pemrosesan.
OSSObject ossObject = ossClient.getObject(getObjectRequest);
// Baca dan tampilkan informasi audio.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = ossObject.getObjectContent().read(buffer)) != -1) {
baos.write(buffer, 0, bytesRead);
}
String audioInfo = baos.toString("UTF-8");
System.out.println("Informasi Audio:");
System.out.println(audioInfo);
} catch (IOException e) {
System.out.println("Kesalahan: " + e.getMessage());
} finally {
// Hentikan instance OSSClient.
ossClient.shutdown();
}
}
}
PHP
OSS SDK for PHP versi 2.7.0 atau lebih baru diperlukan.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
try {
// Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';
// Tentukan nama bucket. Contoh: examplebucket.
$bucket = 'examplebucket';
// Jika file audio disimpan di direktori root bucket, tentukan nama file audio. Jika file audio tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap file audio. Contoh: exampledir/example.mp3.
$key = 'example.mp3';
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
"region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Buat instruksi ekstraksi informasi audio.
$options[$ossClient::OSS_PROCESS] = "audio/info";
$result = $ossClient->getObject($bucket,$key,$options);
var_dump($result);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}Python
OSS SDK for Python versi 2.18.4 atau lebih baru diperlukan.
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Jika file audio disimpan di direktori root bucket, tentukan nama file audio. Jika file audio tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap file audio. Contoh: exampledir/example.mp3.
key = 'example.mp3'
# Buat instruksi ekstraksi informasi audio.
process = 'audio/info'
try:
# Gunakan metode get_object dan teruskan instruksi pemrosesan dengan menggunakan parameter proses.
result = bucket.get_object(key, process=process)
# Baca dan tampilkan informasi audio.
audio_info = result.read().decode('utf-8')
print("Informasi Audio:")
print(audio_info)
except oss2.exceptions.OssError as e:
print("Kesalahan:", e)Go
OSS SDK for Go versi 3.0.2 atau lebih baru diperlukan.
package main
import (
"fmt"
"io"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Dapatkan kredensial sementara dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Kesalahan:", err)
os.Exit(-1)
}
// Buat instance OSSClient.
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan titik akhir aktual Anda.
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: cn-hangzhou.
client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
if err != nil {
fmt.Println("Kesalahan:", err)
os.Exit(-1)
}
// Tentukan nama bucket. Contoh: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Kesalahan:", err)
os.Exit(-1)
}
// Jika file audio disimpan di direktori root bucket, tentukan nama file audio. Jika file audio tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap file audio. Contoh: exampledir/example.mp3.
// Buat instruksi ekstraksi informasi audio dengan menggunakan metode oss.Process.
body, err := bucket.GetObject("example.mp3", oss.Process("audio/info"))
if err != nil {
fmt.Println("Kesalahan:", err)
os.Exit(-1)
}
defer body.Close()
data, err := io.ReadAll(body)
if err != nil {
fmt.Println("Kesalahan:", err)
os.Exit(-1)
}
fmt.Println("data:", string(data))
}