SKKbySSK / coast_audio

Real-Time audio processing library written in Dart.
MIT License
97 stars 12 forks source link

this lib can convert flac to wav format? #10

Closed zhushenwudi closed 8 months ago

zhushenwudi commented 1 year ago

hello, how can I convert flac to wav format using this library?

SKKbySSK commented 1 year ago

Yes. You can use coast_audio_miniaudio to decode flac and coast_audio to encode wav file. Try this code.


// Step1: init audio decoder
final flac = File(filePath);
final flacDataSource = AudioFileDataSource(file: flac, mode: FileMode.read);
final format = MabAudioDecoder.getInfo(filePath).toAudioFormat()!.copyWith(sampleFormat: SampleFormat.int16);
final decoder = MabAudioDecoder(dataSource: flacDataSource, outputFormat: format);

// Step2: init audio encoder
final output = File('converted.wav');
final outputDataSource = AudioFileDataSource(file: output, mode: FileMode.write);
final encoder = WavAudioEncoder(dataSource: outputDataSource, inputFormat: format);

// Step3: allocate temporary buffer
final frames = AllocatedAudioFrames(length: 2048, format: format);

// Step4: encode to wav file
encoder.start();
var isEnd = false;
while (!isEnd) {
  frames.acquireBuffer((buffer) {
    final result = decoder.decode(destination: buffer);
    encoder.encode(buffer.limit(result.frames));
    isEnd = result.isEnd;
  });
}
encoder.finalize();
zhushenwudi commented 1 year ago

great! it works. but i found the code limit the format to int16.

image

it seems to compress all those above int16 so, int32 can release out?

github-actions[bot] commented 8 months ago

This issue is stale because it has been open for 30 days with no activity.

github-actions[bot] commented 8 months ago

This issue was closed because it has been inactive for 7 days since being marked as stale.