Tous les produits
Search
Centre de documentation

Object Storage Service:Fusion audio

Dernière mise à jour :Aug 18, 2026

Fusionnez plusieurs fichiers audio en un seul et convertissez-le au format souhaité. Cette rubrique décrit les paramètres et fournit des exemples de fusion audio.

Cas d'utilisation

  • Création et production musicale : les musiciens et producteurs fusionnent souvent les pistes instrumentales et vocales enregistrées séparément pour créer une chanson complète.

  • Création de livres audio et de contenu vocal : dans la production de livres audio, les narrations sont souvent fusionnées par chapitre afin d'assurer la continuité du récit.

  • Post-production cinématographique et télévisuelle : lors de la post-production, les monteurs audio fusionnent les dialogues, la narration, les effets sonores d'ambiance et la musique de fond pour les synchroniser avec l'image.

  • Création de contenu pour les réseaux sociaux : les utilisateurs des plateformes de vidéos courtes fusionnent souvent des effets sonores, des voix off et de la musique de fond pour rendre leur contenu plus expressif.

Remarques sur l'utilisation

  • La fusion audio prend uniquement en charge le traitement asynchrone (via la méthode x-oss-async-process).

  • Avant de fusionner des fichiers audio, liez un projet IMM. Pour savoir comment lier un projet dans la console ou via une API, consultez les rubriques Démarrage rapide et Lier un compartiment OSS.

  • L'accès anonyme est refusé.

  • Vous devez disposer des autorisations nécessaires pour utiliser cette fonctionnalité. Pour plus d'informations, consultez la rubrique Autorisations.

  • L'utilisation du taux d'échantillonnage ou du nombre de canaux audio par défaut peut entraîner l'échec de la fusion en raison de problèmes de compatibilité avec le format de conteneur audio cible.

  • Vous pouvez fusionner jusqu'à 11 fichiers audio simultanément.

Paramètres

Action : audio/concat

Les tableaux suivants décrivent les paramètres.

Paramètres de fusion

L'ordre des paramètres pre et sur dans la chaîne de requête détermine l'ordre de fusion pour audio/concat :

  • /pre : le fichier audio à ajouter au début.

  • /sur : le fichier audio à ajouter à la fin.

Paramètre

Type

Obligatoire

Description

ss

int

Non

Heure de début de l'extrait audio à fusionner, en millisecondes. Valeurs valides :

  • 0 (par défaut) : la fusion commence au début de l'extrait.

  • Valeur supérieure à 0 : la fusion commence à la ss-ième milliseconde.

t

int

Non

Durée de l'extrait audio ajouté au début ou à la fin à fusionner, en millisecondes. Valeurs valides :

  • 0 (par défaut) : la fusion se poursuit jusqu'à la fin de l'extrait.

  • Valeur supérieure à 0 : la fusion dure t millisecondes.

o

string

Oui

Un objet OSS dans le compartiment actuel. Le nom de l'objet doit être encodé en Base64 URL-safe.

Paramètres de transcodage

Paramètre

Type

Obligatoire

Description

ss

int

Non

Heure de début du transcodage du fichier audio principal, en millisecondes. Valeurs valides :

  • 0 (par défaut) : le transcodage commence au début de l'audio.

  • Valeur supérieure à 0 : le transcodage commence à la ss-ième milliseconde.

t

int

Non

Durée du transcodage du fichier audio principal, en millisecondes. Valeurs valides :

  • 0 (par défaut) : le transcodage se poursuit jusqu'à la fin de l'audio.

  • Valeur supérieure à 0 : le transcodage dure t millisecondes.

f

string

Oui

Format de conteneur audio :

  • mp3

  • aac

  • flac

  • oga

  • ac3

  • opus

  • amr

ar

int

Non

Taux d'échantillonnage audio. Par défaut, il correspond au taux du fichier audio source spécifié par align. Valeurs valides :

  • 8000

  • 11025

  • 12000

  • 16000

  • 22050

  • 24000

  • 32000

  • 44100

  • 48000

  • 64000

  • 88200

  • 96000

Remarque

Les taux d'échantillonnage pris en charge varient selon le format. mp3 prend en charge 48 kHz et moins ; opus prend en charge 8 kHz, 12 kHz, 16 kHz, 24 kHz et 48 kHz ; ac3 prend en charge 32 kHz, 44,1 kHz et 48 kHz ; amr prend uniquement en charge 8 kHz et 16 kHz.

ac

int

Non

Nombre de canaux audio. Par défaut, il correspond au nombre de canaux du fichier audio source spécifié par le paramètre align. Valeurs valides : 1 à 8.

Remarque

Le nombre de canaux pris en charge varie selon le format. mp3 prend en charge mono et stéréo ; ac3 prend en charge jusqu'à 6 canaux (5,1) ; amr prend uniquement en charge mono.

aq

int

Non

Qualité de compression audio. Valeurs valides : 0 à 100.

Remarque

Ce paramètre est mutuellement exclusif avec ab. Si aucun n'est défini, l'encodeur utilise son débit binaire par défaut.

ab

int

Non

Débit binaire audio, en bit/s (bps). Valeurs valides : 1000 à 10000000.

abopt

string

Non

Option de débit binaire audio. Valeurs valides :

  • 0 (par défaut) : toujours utiliser le débit binaire audio cible.

  • 1 : si le débit binaire d'un fichier source est inférieur à la valeur ab, le débit binaire le plus bas parmi les fichiers sources est utilisé.

  • 2 : si le débit binaire d'un fichier source est inférieur à la valeur ab, l'opération échoue.

Remarque

Ce paramètre doit être utilisé conjointement avec le paramètre ab.

align

int

Non

Index du fichier audio principal dans la liste de fusion. Les paramètres de transcodage par défaut proviennent de ce fichier. La valeur par défaut est 0, ce qui indique le premier fichier audio de la liste de fusion.

adepth

int

Non

Profondeur d'échantillonnage audio. Valeurs valides : 16 et 24.

Remarque

Ce paramètre prend effet uniquement lorsque f est défini sur flac.

Remarque

La fusion audio utilise également les paramètres sys/saveas et notify. Pour plus d'informations, consultez les rubriques Enregistrer sous et Notification de message.

API REST

Fusionner l'audio au format AAC

  • Fichiers audio : pre1.mp3, pre2.wav, example.oga, sur1.aac, sur2.wma

  • Durée et ordre de fusion :

    Nom de l'audio

    Ordre

    Durée

    pre1.mp3

    1

    Audio entier

    pre2.wav

    2

    2 premières secondes

    example.oga

    3

    Audio entier

    sur1.aac

    4

    De 4 s à 10 s

    sur2.wma

    5

    De 10 s à la fin

  • Notification de fin de transcodage : envoi d'un message Message Service (MNS).

  • Spécifications de l'audio de sortie

    • Format audio : aac

    • Profil audio : taux d'échantillonnage de 44,1 kHz, mono

    • Débit binaire audio : 96 kbps

    • Chemin de stockage de l'objet

      • Fichier AAC : oss://outbucket/outobj.aac

Exemple de requête

// Perform audio merging on the example.oga object.
POST /example.oga?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/concat,f_aac,ac_1,ar_44100,ab_96000,align_2/pre,o_cHJlMS5tcDMK/pre,o_cHJlMi53YXYK,t_2000/sur,o_c3VyMS5hYWMK,ss_4000,t_10000/sur,o_c3VyMi53bWEK,ss_10000|sys/saveas,b_b3V0YnVja2V0,o_b3V0b2JqLnthdXRvZXh0fQo/notify,topic_QXVkaW9Db252ZXJ0

SDK OSS

Effectuez une fusion audio en utilisant le traitement asynchrone avec le SDK OSS pour Java, Python ou Go.

Prérequis

  1. Assurez-vous que les variables d'environnement OSS_ACCESS_KEY_ID et OSS_ACCESS_KEY_SECRET sont configurées.

  2. Spécifiez le nom du compartiment, par exemple examplebucket.

  3. Spécifiez le nom du fichier audio de sortie, par exemple dest.aac.

  4. Spécifiez les noms des fichiers audio source à fusionner, par exemple src1.mp3 et src2.mp3.

Java

Le SDK OSS pour Java version 3.17.4 ou ultérieure est requis.

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.nio.charset.StandardCharsets;
import java.util.Base64;

public class Demo {

    public static void main(String[] args) throws ClientException {
        // Set endpoint to the endpoint of the region where the bucket is located.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Specify the Alibaba Cloud region ID, for example, cn-hangzhou.
        String region = "cn-hangzhou";
        // Obtain access credentials from environment variables. Before running this sample code, make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the bucket name.
        String bucketName = "examplebucket";
        // Specify the name of the output audio file.
        String targetAudio = "dest.aac";
        // Specify the names of the audio files to be merged.
        String audio1 = "src1.mp3";
        String audio2 = "src2.mp3";

        // Create an OSSClient instance.
        // When you are finished, shut down the OSSClient to release resources.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Build the style string for audio processing and the audio merging parameters.
            String audio1Encoded = Base64.getUrlEncoder().encodeToString(audio1.getBytes(StandardCharsets.UTF_8)).replace("=", "");
            String audio2Encoded = Base64.getUrlEncoder().encodeToString(audio2.getBytes(StandardCharsets.UTF_8)).replace("=", "");
            String style = String.format("audio/concat,f_aac,ac_1,ar_44100,ab_96000,align_2/pre,o_%s/pre,o_%s,t_0", audio1Encoded, audio2Encoded);

            // Build the asynchronous processing instruction.
            String bucketEncoded = Base64.getUrlEncoder().encodeToString(bucketName.getBytes(StandardCharsets.UTF_8)).replace("=", "");
            String targetEncoded = Base64.getUrlEncoder().encodeToString(targetAudio.getBytes(StandardCharsets.UTF_8)).replace("=", "");
            String process = String.format("%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0", style, bucketEncoded, targetEncoded);

            // Create an AsyncProcessObjectRequest object.
            AsyncProcessObjectRequest request = new AsyncProcessObjectRequest(bucketName, audio1, process);
            // Execute the asynchronous processing task.
            AsyncProcessObjectResult response = ossClient.asyncProcessObject(request);
            System.out.println("EventId: " + response.getEventId());
            System.out.println("RequestId: " + response.getRequestId());
            System.out.println("TaskId: " + response.getTaskId());

        } finally {
            // Shut down the OSSClient.
            ossClient.shutdown();
        }
    }
}

Python

Le SDK OSS pour Python version 2.18.4 ou ultérieure est requis.

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

def main():
    # Obtain access credentials from environment variables. Before running this sample code, make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

    # Set endpoint to the endpoint of the region where the bucket is located. For example, for China (Hangzhou), set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
    endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'

    # Specify the Alibaba Cloud region ID, for example, cn-hangzhou.
    region = 'cn-hangzhou'

    # Specify the bucket name, for example, examplebucket.
    bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)

    # Specify the name of the output audio file.
    target_audio = 'dest.aac'

    # Specify the names of the audio files to merge.
    audio1 = 'src1.mp3'
    audio2 = 'src2.mp3'

    # Build the style string for audio processing and the audio merging parameters.
    audio1_encoded = base64.urlsafe_b64encode(audio1.encode()).decode().rstrip('=')
    audio2_encoded = base64.urlsafe_b64encode(audio2.encode()).decode().rstrip('=')
    style = f"audio/concat,f_aac,ac_1,ar_44100,ab_96000,align_2/pre,o_{audio1_encoded}/pre,o_{audio2_encoded},t_0"

    # Build the asynchronous processing instruction.
    bucket_encoded = base64.urlsafe_b64encode(bucket.bucket_name.encode()).decode().rstrip('=')
    target_encoded = base64.urlsafe_b64encode(target_audio.encode()).decode().rstrip('=')
    process = f"{style}|sys/saveas,b_{bucket_encoded},o_{target_encoded}/notify,topic_QXVkaW9Db252ZXJ0"

    print(process)

    # Execute the asynchronous processing task.
    try:
        result = bucket.async_process_object(audio1, 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

Le SDK OSS pour Go version 3.0.2 ou ultérieure est requis.

package main

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

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
	// Obtain access credentials from environment variables. Before running this sample code, make sure the OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, and OSS_SESSION_TOKEN environment variables are set.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Create an OSSClient instance.
	// Set endpoint to the endpoint of the region where your bucket is located. For example, for China (Hangzhou), set it to https://oss-cn-hangzhou.aliyuncs.com.
	// Set region to the Alibaba Cloud region ID, for example, 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)
	}
	// Specify the bucket name, for example, examplebucket.
	bucketName := "examplebucket"

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

	// Specify the names of the audio files to be merged.
	audio1 := "src1.mp3"
	audio2 := "src2.mp3"
	// Specify the name of the output audio file.
	targetAudio := "dest.aac"

	// Build the style string for audio processing and the audio merging parameters.
	audio1Encoded := base64.URLEncoding.EncodeToString([]byte(audio1))
	audio2Encoded := base64.URLEncoding.EncodeToString([]byte(audio2))
	style := fmt.Sprintf("audio/concat,f_aac,ac_1,ar_44100,ab_96000,align_2/pre,o_%s/pre,o_%s,t_0", audio1Encoded, audio2Encoded)

	// Build the asynchronous processing instruction.
	bucketEncoded := base64.URLEncoding.EncodeToString([]byte(bucketName))
	targetEncoded := base64.URLEncoding.EncodeToString([]byte(targetAudio))
	process := fmt.Sprintf("%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0", style, bucketEncoded, targetEncoded)

	// Execute the asynchronous processing task.
	result, err := bucket.AsyncProcessObject(audio1, process)
	if err != nil {
		log.Fatalf("Failed to async process object: %s", err)
	}

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