全部产品
Search
文档中心

Object Storage Service:Ekstrak informasi audio

更新时间:Jul 06, 2025

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.

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.

Catatan

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=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e

Contoh 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))
}