All Products
Search
Document Center

Object Storage Service:Transkoding audio

Last Updated:May 07, 2026

Transkoding audio mengonversi file audio ke format yang diinginkan. Topik ini menjelaskan parameter transkoding audio dan memberikan contoh penggunaannya.

Kasus penggunaan

  • Mengonversi format file musik untuk memastikan kompatibilitas dengan berbagai perangkat pemutaran.

  • Mengoptimalkan ruang penyimpanan dengan mentranskode file audio lossless berukuran besar ke format lossy terkompresi tinggi seperti MP3.

  • Menyesuaikan kondisi jaringan yang beragam untuk layanan streaming online dengan mentranskode audio ke beberapa bitrate guna memastikan pemutaran lancar pada koneksi bandwidth rendah.

  • Menyiapkan aset audio untuk produksi dan pascaproduksi video dengan mentranskode agar sesuai dengan persyaratan proyek atau standar distribusi.

Catatan penggunaan

  • Transkoding audio hanya mendukung pemrosesan asinkron, yang dipanggil menggunakan metode x-oss-async-process.

  • Sebelum menggunakan transkoding audio, Anda harus mengaitkan proyek Intelligent Media Management (IMM) dengan bucket OSS. Untuk informasi selengkapnya, lihat Quick start dan AttachOSSBucket.

  • Akses anonim akan ditolak.

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

  • Transkoding dapat gagal jika laju pengambilan sampel default atau jumlah saluran audio tidak kompatibel dengan format kontainer target.

  • Untuk transkoding audio, Anda hanya dapat mengatur kedalaman bit pengambilan sampel untuk format flac. Untuk transkoding video, Anda dapat mengatur kedalaman bit menggunakan parameter pixfmt dari aksi OSS x-oss-process. Untuk informasi selengkapnya, lihat Video transcoding.

Parameter

Action: audio/convert

Tabel berikut menjelaskan parameter tersebut.

Parameter

Type

Required

Description

ss

int

No

Waktu mulai transkoding, dalam milidetik. Nilai yang valid:

  • 0 (default): Transkoding dimulai dari awal file audio.

  • Nilai lebih besar dari 0: Transcoding dimulai dari milidetik ss.

t

int

No

Durasi transkoding, dalam milidetik. Nilai yang valid:

  • 0 (default): Transkoding berlangsung hingga akhir file audio.

  • Nilai lebih besar dari 0: Transkoding berlangsung selama t milidetik.

f

string

Yes

Format kontainer output. Nilai yang valid:

  • mp3

  • aac

  • flac

  • oga

  • ac3

  • opus

  • amr

ar

int

No

Laju pengambilan sampel audio output. Secara default, laju pengambilan sampel audio sumber digunakan. Nilai yang valid:

  • 8000

  • 11025

  • 12000

  • 16000

  • 22050

  • 24000

  • 32000

  • 44100

  • 48000

  • 64000

  • 88200

  • 96000

Catatan

Laju pengambilan sampel yang didukung bervariasi tergantung format. MP3 mendukung laju pengambilan sampel hingga 48 kHz. Opus mendukung 8 kHz, 12 kHz, 16 kHz, 24 kHz, dan 48 kHz. AC3 mendukung 32 kHz, 44,1 kHz, dan 48 kHz. AMR hanya mendukung 8 kHz dan 16 kHz.

ac

int

No

Jumlah saluran audio output. Secara default, jumlah saluran pada audio sumber digunakan. Rentang nilai: 1 hingga 8.

Catatan

Jumlah saluran audio yang didukung bervariasi tergantung format. MP3 hanya mendukung mono dan stereo. AC3 mendukung hingga 6 saluran (5.1). AMR hanya mendukung mono.

aq

int

No

Kualitas audio. Parameter ini saling eksklusif dengan parameter ab. Rentang nilai: 0 hingga 100.

ab

int

No

Bitrate audio, dalam bit per detik (bps). Parameter ini saling eksklusif dengan parameter aq. Rentang nilai: 1.000 hingga 10.000.000.

abopt

string

No

Opsi bitrate audio. Nilai yang valid:

  • 0 (default): Bitrate audio target selalu digunakan.

  • 1: Bitrate audio sumber digunakan jika lebih rendah daripada bitrate target yang ditentukan oleh ab.

  • 2: Pekerjaan transkoding gagal jika bitrate audio sumber lebih rendah daripada bitrate target yang ditentukan oleh ab.

adepth

int

No

Kedalaman bit pengambilan sampel audio output. Nilai yang valid: 16 dan 24.

Catatan

Parameter ini hanya berlaku ketika f diatur ke flac.

Catatan

Parameter sys/saveas dan notify juga digunakan untuk transkoding audio. Untuk informasi selengkapnya, lihat sys/saveas dan Notifications.

Gunakan REST API

Konversi MP3 ke AAC

Konfigurasi pekerjaan

  • Format kontainer: mp3 ke aac

  • File sumber: example.mp3

  • Durasi transkoding: 60.000 milidetik, dimulai dari milidetik ke-10.000.

  • Pengaturan audio: Pertahankan laju pengambilan sampel dan jumlah saluran audio asli, serta atur bitrate audio ke 96 Kbps.

  • Notifikasi penyelesaian: Kirim pesan menggunakan MNS.

Contoh permintaan

// Transkode file audio bernama 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 ke Opus

Konfigurasi pekerjaan

  • Format kontainer: wav ke opus

  • Durasi transkoding: Seluruh file audio.

  • Pengaturan audio: Laju pengambilan sampel 48 kHz, dua saluran, dan bitrate audio 96 Kbps.

  • Jalur output: oss://outbucket/outobject.opus

  • Notifikasi penyelesaian: Kirim pesan menggunakan MNS.

Contoh permintaan

// Transkode file audio bernama 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 SDK

Anda dapat menggunakan SDK Java, Python, dan Go untuk melakukan transkoding audio asinkron.

Java

Memerlukan SDK for Java 3.17.4 atau yang lebih baru.

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 {
        // yourEndpoint: Titik akhir wilayah tempat bucket Anda berada.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // ID wilayah untuk titik akhir, misalnya, cn-hangzhou.
        String region = "cn-hangzhou";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, 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 file audio hasil transkoding.
        String targetKey = "dest.aac";
        // Tentukan file audio sumber.
        String sourceKey = "src.mp3";

        // Buat instance OSSClient.
        // Saat instance OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Bangun string gaya pemrosesan audio dan parameter transkoding audio.
            String style = String.format("audio/convert,ss_10000,t_60000,f_aac,ab_96000");
            // Bangun 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 OSSClient.
            ossClient.shutdown();
        }
    }
}

Python

Memerlukan SDK for Python 2.18.4 atau yang lebih baru.

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

def main():
    # Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan telah dikonfigurasi.
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # Titik akhir wilayah tempat bucket berada. Misalnya, untuk Tiongkok (Hangzhou), gunakan https://oss-cn-hangzhou.aliyuncs.com.
    endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'

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

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

    # Tentukan nama file audio hasil transkoding.
    target_key = 'dest.aac'

    # Bangun string gaya pemrosesan audio dan parameter transkoding audio.
    audio_style = 'audio/convert,ss_10000,t_60000,f_aac,ab_96000'

    # Bangun instruksi pemrosesan, termasuk jalur penyimpanan dan nama bucket serta nama objek target yang diencode Base64.
    bucket_name_encoded = base64.urlsafe_b64encode('examplebucket'.encode()).decode().rstrip('=')
    target_key_encoded = base64.urlsafe_b64encode(target_key.encode()).decode().rstrip('=')
    process = f"{audio_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

Memerlukan SDK for Go 3.0.2 atau yang lebih baru.

package main

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

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

func main() {
	// Dapatkan kredensial akses temporary dari variabel lingkungan. Sebelum menjalankan kode contoh ini, 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.
	// yourEndpoint: Titik akhir wilayah tempat bucket Anda berada. Misalnya, untuk Tiongkok (Hangzhou), gunakan https://oss-cn-hangzhou.aliyuncs.com. Atur parameter ini berdasarkan wilayah aktual.
	// yourRegion: ID wilayah, misalnya, 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, misalnya, examplebucket.
	bucketName := "examplebucket"

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

	// Tentukan nama file audio sumber.
	sourceKey := "src.mp3"
	// Tentukan nama file audio hasil transkoding.
	targetKey := "dest.aac"

	// Bangun string gaya pemrosesan audio dan parameter transkoding audio.
	audioStyle := "audio/convert,ss_10000,t_60000,f_aac,ab_96000"

	// Bangun instruksi pemrosesan, termasuk jalur penyimpanan dan nama bucket serta nama objek target yang diencode 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", audioStyle, 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)
}