Как преобразовать аудиофайл из stereo в mono на android?

Пользователь

от urban_will , в категории: Другие , 7 месяцев назад

Как преобразовать аудиофайл из stereo в mono на android?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dayna , 7 месяцев назад

@urban_will 

Чтобы преобразовать аудиофайл из стерео в моно на устройствах Android, вы можете использовать библиотеку Android MediaCodec.


Вот пример кода, который демонстрирует, как это сделать:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import android.media.MediaCodec;
import android.media.MediaExtractor;
import android.media.MediaFormat;
import android.media.MediaMuxer;

import java.io.IOException;
import java.nio.ByteBuffer;

public class AudioConverter {

    public static void convertToMono(String inputPath, String outputPath) throws IOException {
        MediaExtractor extractor = new MediaExtractor();
        extractor.setDataSource(inputPath);

        int audioTrackIndex = getAudioTrackIndex(extractor);

        extractor.selectTrack(audioTrackIndex);
        MediaFormat format = extractor.getTrackFormat(audioTrackIndex);

        MediaMuxer muxer = new MediaMuxer(outputPath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4);

        int audioTrack = muxer.addTrack(format);
        muxer.start();

        ByteBuffer buffer = ByteBuffer.allocate(1024 * 256);
        MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
        int sampleSize;
        while ((sampleSize = extractor.readSampleData(buffer, 0)) != -1) {
            info.offset = 0;
            info.size = sampleSize;
            info.presentationTimeUs = extractor.getSampleTime();
            info.flags = extractor.getSampleFlags();
            muxer.writeSampleData(audioTrack, buffer, info);
            extractor.advance();
        }

        muxer.stop();
        muxer.release();
        extractor.release();
    }

    private static int getAudioTrackIndex(MediaExtractor extractor) {
        for (int index = 0; index < extractor.getTrackCount(); index++) {
            MediaFormat format = extractor.getTrackFormat(index);
            String mime = format.getString(MediaFormat.KEY_MIME);
            if (mime.startsWith("audio/")) {
                return index;
            }
        }
        return -1;
    }

}


Вы можете использовать этот код, вызвав метод convertToMono с указанием пути к исходному аудиофайлу и пути, по которому необходимо сохранить преобразованный файл.

1
2
3
4
5
6
7
8
String inputPath = "/path/to/input/file.wav";
String outputPath = "/path/to/output/file.wav";

try {
    AudioConverter.convertToMono(inputPath, outputPath);
} catch (IOException e) {
    e.printStackTrace();
}


Этот код будет читать аудиофайл, выбирать аудио-трек исходного файла, преобразовывать его в моно и сохранять преобразованный файл по указанному пути.

Пользователь

от marshall.cummings , 17 дней назад

@urban_will 

Как альтернативу использованию MediaCodec, можно воспользоваться сторонними приложениями или онлайн-сервисами для конвертации аудиофайла из stereo в mono на устройстве Android. Эти приложения обычно предлагают простые и удобные инструменты для редактирования аудиофайлов, включая изменение количества каналов.


Например, некоторые популярные мобильные приложения для редактирования аудиофайлов, такие как Adobe Audition, Audacity или Lexis Audio Editor, могут предлагать возможность конвертировать аудиофайл из stereo в mono. Просто загрузите свой аудиофайл в выбранное приложение, найдите опцию для изменения количества каналов на mono, и сохраните отредактированный файл.


Также у вас есть возможность воспользоваться онлайн-сервисами для конвертации аудиофайла из stereo в mono прямо на устройстве Android. Существует множество онлайн-инструментов, таких как Audioalter, Online Audio Converter, или другие, которые могут выполнять подобные задачи.


Выбор между использованием кода с MediaCodec, сторонними приложениями или онлайн-сервисами зависит от вашего уровня комфорта с техническими аспектами, предпочтений по функционалу и удобству использования.