全部产品
Search
文档中心

Object Storage Service:Transkoding Audio

更新时间:Jul 06, 2025

Transkoding audio memungkinkan Anda mengonversi file audio dari satu format ke format lain. Topik ini menjelaskan parameter untuk transkoding audio dan mencakup contoh penggunaannya.

Skenario

  • Konversi file audio: File audio yang diunduh mungkin dalam format yang tidak kompatibel dengan perangkat. Untuk memungkinkan pemutaran, file tersebut perlu dikonversi ke format yang kompatibel.

  • Optimasi penyimpanan: Format audio lossless dapat memakan banyak ruang penyimpanan. Dengan menggunakan transkoding audio, pengguna dapat mengonversi file mereka ke format lossy seperti MP3, yang menawarkan rasio kompresi lebih tinggi dan menghemat ruang penyimpanan berharga pada perangkat seluler.

  • Streaming media online: Platform online harus mengonversi file audio asli menjadi versi dengan berbagai bitrate untuk memberikan pengalaman mendengarkan yang lancar, bahkan dalam kondisi jaringan yang menantang.

  • Produksi video dan post-processing: Selama pengeditan video, file audio asli mungkin perlu dikonversi ke format terkompresi demi efisiensi transfer optimal.

Catatan Penggunaan

  • Transkoding audio hanya mendukung pemrosesan asinkron (x-oss-async-process).

  • Pastikan bahwa Bucket Object Storage Service (OSS) yang berisi file audio yang akan ditranskode terikat ke Proyek Intelligent Media Management (IMM). Untuk informasi tentang cara mengikat OSS bucket ke proyek IMM, lihat Memulai Cepat dan AttachOSSBucket.

  • Akses anonim akan ditolak.

  • Anda harus memiliki izin yang diperlukan untuk menggunakan fitur ini. Untuk informasi lebih lanjut, lihat izin.

  • Jika Anda menggunakan laju sampling default atau jumlah saluran suara, transkoding audio mungkin gagal karena ketidaksesuaian dengan format kontainer audio yang ditentukan.

  • Transkoding audio tidak memungkinkan penyesuaian kedalaman bit audio. Transkoding video memungkinkan penyesuaian kedalaman bit melalui parameter pixfmt berdasarkan x-oss-process. Untuk detailnya, lihat Transkoding Video.

Parameter

Tindakan: audio/convert

Tabel berikut menjelaskan parameter untuk transkoding audio.

Parameter

Tipe

Diperlukan

Deskripsi

ss

int

Tidak

Waktu dalam audio dari mana transkoding dimulai. Unit: milidetik. Nilai valid:

  • 0: Transkoding dimulai dari titik awal audio. Ini adalah nilai default.

  • Bilangan bulat lebih besar dari 0: Transkoding dimulai dari jumlah milidetik tertentu dalam audio.

t

int

Tidak

Durasi konten audio yang akan ditranskode setelah waktu mulai yang ditentukan. Unit: milidetik. Nilai valid:

  • 0: Transkoding berlangsung hingga akhir audio. Ini adalah nilai default.

  • Bilangan bulat lebih besar dari 0: Transkoding berlangsung hingga durasi yang ditentukan tercapai.

f

string

Ya

Format kontainer audio keluaran.

  • mp3

  • aac

  • flac

  • oga

  • ac3

  • opus

  • amr

ar

int

Tidak

Laju sampling audio keluaran. Secara default, audio keluaran memiliki laju sampling yang sama dengan audio sumber. Nilai valid:

  • 8000

  • 11025

  • 12000

  • 16000

  • 22050

  • 24000

  • 32000

  • 44100

  • 48000

  • 64000

  • 88200

  • 96000

Catatan

Laju sampling yang didukung bervariasi di antara format yang berbeda: 48 kHz dan lebih rendah untuk MP3, 8 kHz, 12 kHz, 16 kHz, 24 kHz, dan 48 kHz untuk Opus, 32 kHz, 44,1 kHz, dan 48 kHz untuk AC3, dan 8 kHz dan 16 kHz untuk AMR.

ac

int

Tidak

Jumlah saluran suara dalam audio keluaran. Secara default, audio keluaran memiliki jumlah saluran suara yang sama dengan audio sumber. Nilai valid: 1 hingga 8.

Catatan

Jumlah saluran suara bervariasi dengan format audio: satu atau dua untuk MP3, hingga enam untuk AC3 5.1, dan satu untuk AMR.

aq

int

Tidak

Kualitas kompresi audio. Parameter ini dan parameter ab saling eksklusif. Nilai valid: 0 hingga 100.

ab

int

Tidak

Bitrate audio. Unit: bit/detik. Parameter ini dan parameter aq saling eksklusif. Nilai valid: 1000 hingga 10000000.

abopt

string

Tidak

Opsi bitrate audio. Nilai valid:

  • 0: selalu menggunakan target bitrate audio. Ini adalah nilai default.

  • 1: menggunakan bitrate audio sumber ketika bitrate audio sumber kurang dari target bitrate audio.

  • 2: mengembalikan kegagalan ketika bitrate audio sumber kurang dari target bitrate audio.

adepth

int

Tidak

Kedalaman bit sampling dari audio keluaran. Nilai valid: 16 dan 24.

Catatan

Parameter ini hanya berlaku jika Anda mengatur parameter f ke flac.

Catatan

Anda mungkin juga perlu menggunakan parameter sys/saveas dan notify saat mentranskode objek audio. Untuk informasi lebih lanjut, lihat sys/saveas dan Gunakan fitur notifikasi.

Gunakan RESTful API

Konversi MP3 menjadi AAC

Informasi Transkoding

  • Format audio: Konversi file MP3 menjadi file AAC

  • Nama file: example.mp3

  • Durasi audio yang akan ditranskode: 60.000 milidetik mulai dari milidetik ke-1.000 audio

  • Konfigurasi audio: laju sampling dan jumlah saluran suara yang sama dengan audio sumber, dengan bitrate disetel ke 96 Kbit/detik

  • Notifikasi penyelesaian transkoding: Gunakan Simple Message Queue (SMQ)

Contoh Permintaan

// Transkode file audio example.mp3.
POST /example.mp3?x-oss-async-process HTTP/1.1
Host: video-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e

x-oss-async-process=audio/convert,ss_10000,t_60000,f_aac,ab_96000|sys/saveas,b_b3V0YnVja2V0,o_b3V0b2JqcHJlZml4LnthdXRvZXh0fQo/notify,topic_QXVkaW9Db252ZXJ0

Konversi WAV menjadi Opus

Informasi Transkoding

  • Format audio: Konversi file WAV menjadi file Opus

  • Durasi audio yang akan ditranskode: seluruh video

  • Konfigurasi audio: laju sampling 48 kHz, dual channel, dengan bitrate disetel ke 96 Kbit/detik

  • Jalur penyimpanan file: oss://outbucket/outobject.opus

  • Notifikasi penyelesaian transkoding: Gunakan MNS

Contoh Permintaan

// Transkode file audio example.wav.
POST /example.wav?x-oss-async-process HTTP/1.1
Host: video-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e

x-oss-async-process=audio/convert,f_opus,ab_96000,ar_48000,ac_2|sys/saveas,b_b3V0YnVja2V0, o_b3V0b2JqLnthdXRvZXh0fQo/notify,topic_QXVkaW9Db252ZXJ0

Gunakan OSS SDK

Anda dapat menggunakan OSS SDK untuk Java, Python, atau Go untuk mentranskode file audio secara asinkron.

Java

OSS SDK for Java V3.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.AsyncProcessObjectRequest;
import com.aliyun.oss.model.AsyncProcessObjectResult;
import com.aliyuncs.exceptions.ClientException;

import java.util.Base64;

public class Demo {
    public static void main(String[] args) throws ClientException {
        // Tentukan endpoint wilayah tempat bucket berada.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: cn-hangzhou.
        String region = "cn-hangzhou";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket.
        String bucketName = "examplebucket";
        // Tentukan nama audio keluaran.
        String targetKey = "dest.aac";
        // Tentukan nama audio sumber.
        String sourceKey = "src.mp3";

        // Buat instance OSSClient.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Buat variabel gaya bertipe string untuk menyimpan parameter transkoding audio.
            String style = String.format("audio/convert,ss_10000,t_60000,f_aac,ab_96000");
            // Buat instruksi pemrosesan asinkron.
            String bucketEncoded = Base64.getUrlEncoder().withoutPadding().encodeToString(bucketName.getBytes());
            String targetEncoded = Base64.getUrlEncoder().withoutPadding().encodeToString(targetKey.getBytes());
            String process = String.format("%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0", style, bucketEncoded, targetEncoded);
            // Buat objek AsyncProcessObjectRequest.
            AsyncProcessObjectRequest request = new AsyncProcessObjectRequest(bucketName, sourceKey, process);
            // Jalankan tugas pemrosesan asinkron.
            AsyncProcessObjectResult response = ossClient.asyncProcessObject(request);
            System.out.println("EventId: " + response.getEventId());
            System.out.println("RequestId: " + response.getRequestId());
            System.out.println("TaskId: " + response.getTaskId());

        } finally {
            // Matikan instance OSSClient.
            ossClient.shutdown();
        }
    }
}

Python

OSS SDK for Python V2.18.4 atau lebih baru diperlukan.

# -*- coding: utf-8 -*-
import base64
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan telah dikonfigurasi.
    auth = oss2.Auth(EnvironmentVariableCredentialsProvider())
    # Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
    endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'

    # Tentukan nama bucket. Contoh: examplebucket.
    bucket = oss2.Bucket(auth, endpoint, 'examplebucket')

    # Tentukan nama audio sumber.
    source_key = 'src.mp3'

    # Tentukan nama audio keluaran.
    target_key = 'dest.aac'

    # Buat variabel gaya bertipe string untuk menyimpan parameter transkoding audio.
    animation_style = 'audio/convert,ss_10000,t_60000,f_aac,ab_96000'

    # Buat instruksi pemrosesan, di mana nama bucket dan nama objek keluaran dienkripsi Base64.
    bucket_name_encoded = base64.urlsafe_b64encode('examplebucket'.encode()).decode().rstrip('=')
    target_key_encoded = base64.urlsafe_b64encode(target_key.encode()).decode().rstrip('=')
    process = f"{animation_style}|sys/saveas,b_{bucket_name_encoded},o_{target_key_encoded}/notify,topic_QXVkaW9Db252ZXJ0"

    try:
        # Jalankan tugas pemrosesan asinkron.
        result = bucket.async_process_object(source_key, process)
        print(f"EventId: {result.event_id}")
        print(f"RequestId: {result.request_id}")
        print(f"TaskId: {result.task_id}")
    except Exception as e:
        print(f"Error: {e}")


if __name__ == "__main__":
    main()

Go

OSS SDK for Go V3.0.2 atau lebih baru diperlukan.

package main

import (
	"encoding/base64"
	"fmt"
	"log"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Dapatkan kredensial akses sementara dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, dan OSS_SESSION_TOKEN telah dikonfigurasi.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Buat instance OSSClient.
	// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint 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("Error:", err)
		os.Exit(-1)
	}
	// Tentukan nama bucket. Contoh: examplebucket.
	bucketName := "examplebucket"

	bucket, err := client.Bucket(bucketName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Tentukan nama audio sumber.
	sourceKey := "src.mp3"
	// Tentukan nama audio keluaran.
	targetKey := "dest.aac"

	// Buat variabel gaya bertipe string untuk menyimpan parameter transkoding audio.
	animationStyle := "audio/convert,ss_10000,t_60000,f_aac,ab_96000"

	// Buat instruksi pemrosesan, di mana nama bucket dan nama objek keluaran dienkripsi Base64.
	bucketNameEncoded := base64.URLEncoding.EncodeToString([]byte(bucketName))
	targetKeyEncoded := base64.URLEncoding.EncodeToString([]byte(targetKey))
	process := fmt.Sprintf("%s|sys/saveas,b_%v,o_%v/notify,topic_QXVkaW9Db252ZXJ0", animationStyle, bucketNameEncoded, targetKeyEncoded)

	// Jalankan tugas pemrosesan asinkron.
	result, err := bucket.AsyncProcessObject(sourceKey, process)
	if err != nil {
		log.Fatalf("Gagal memproses objek secara asinkron: %s", err)
	}

	fmt.Printf("EventId: %s\n", result.EventId)
	fmt.Printf("RequestId: %s\n", result.RequestId)
	fmt.Printf("TaskId: %s\n", result.TaskId)
}