ບັນຫາທີ່ມັກເຈິລະຫວ່າງໃຊ້ plugin: record , just_audio ສຳລັບເຮັດ voice record [Flutter-app]


ໝາຍເຫດ: ອັນນີ້ແມ່ນຜູ້ຂຽນ ໄດ້ຂຽນໄວ້ກັນລືມໃນກໍລະນີເທື່ອຕໍ່ໆໄປທີ່ເຈິບັນຫາແບບນີ້ອີກ, ໃນນີ້ເນື້ອຫາຈະກ່ຽວກັບບັນຫາທີ່ເຈິມາເອງລະຫວ່າງ Dev ແອັບກ່ຽວກັບການບັນທຶກສຽງ ລະຫວ່າງ platform Android & iOS ດ້ວຍ plugin Record ແລ້ວຫຼິ້ນສຽງດ້ວຍ just_audio

https://pub.dev/packages/record

https://pub.dev/packages/just_audio

ບັນຫາທີ່ເຈີ: ເວລາ record ຈາກ Android ແລ້ວສົ່ງຫາ iOS ອຸປະກອນ iOS ບໍ່ສາມາດຟັງໄຟລ໌ສຽງໄດ້ ແຕ່ iOS ສົ່ງຫາ iOS ໄດ້ປົກກະຕິ ແລະ iOS ສົ່ງຫາ Android ເຄື່ອງ Android ກໍ່ສາມາດຟັງໄດ້ປົກກະຕິ

ສາເຫດ: (ທີ່ຄິດວ່າແມ່ນ ຫະຫະ)

  • ໂຕ default Encoder ຂອງ plugin Record ນີ້ຕັ້ງຄ່າໃຫ້ເປັນ AudioEncoder.aacLc, Android ບາງລຸ້ນ encode aac ໄປແລ້ວ iOS ບໍ່ສາມາດອ່ານ File ໂດຍໃຊ້ກັບ Plugin just_audio
/// Audio recorder API
class Record implements RecordPlatform {
  StreamController<Amplitude>? _amplitudeStreamCtrl;
  Timer? _amplitudeTimer;

  @override
  Future<void> start({
    String? path,
    AudioEncoder encoder = AudioEncoder.aacLc,
    int bitRate = 128000,
    int samplingRate = 44100,
    int numChannels = 2,
    InputDevice? device,
  }) {
    _log('Start recording');
    return RecordPlatform.instance.start(
      path: path,
      encoder: encoder,
      bitRate: bitRate,
      samplingRate: samplingRate,
      numChannels: numChannels,
      device: device,
    );
  }
...

ທີ່ໄດ້ແກ້ໄຂໄປ: ໃສ່ AudioEncoder.wav ຕອນ start record ໄປເລີຍ (ເນື່ອງຈາກຈຳເປັນແກ້ຂັດໄປກ່ອນ)

...
await audioRecorder.start(
          path: audioPath,
          encoder: AudioEncoder.wav,
        );
...

ສະຫຼຸບ: ບັນຫານີ້ຈະຄ້າຍໆກໍລະນີດຽວກັນກັບ plugin audio_waveforms issue #113

https://github.com/SimformSolutionsPvtLtd/audio_waveforms/issues/113

ຂຽນໂດຍ: Noy Sengxayya