首页 > 解决方案 > 将连续流写入文件颤振/飞镖

问题描述

我有一个广播直播链接,当用户单击开始按钮时我需要记录它。然后,一旦用户单击停止,我需要将流保存到文件中。

我能够通过将数据读取为字节数组并编写一个简单的while循环来使用java成功地做到这一点,只要数据不为空,就将字节写入数组,当它为空时,将字节数组写入一个文件。下面我可以提供一段我在 Java 中使用过的代码片段。

URL url = new URL(radioStream);
inputStreamRecording = url.openStream();

fileOutputStreamRecording = new FileOutputStream(OutputSourceStream + "/temp.mp3");
recordingBuffer = inputStreamRecording.read();

while (recordingBuffer > -1) {
   fileOutputStreamRecording.write(recordingBuffer);
   recordingBuffer = inputStreamRecording.read();
}

但是,我不知道如何在 dart/flutter 中做到这一点,并且找不到任何关于此的示例。所以我的问题是如何将上面的 Java 代码转换成可以在 Flutter 中使用的代码。我假设我会使用 Future 但在单击事件的录制过程中如何停止未来?任何帮助,将不胜感激。先感谢您!

标签: javaflutterdart

解决方案


var out = File('out.dat').openWrite();
var ss = Stream.periodic(3.seconds, (i) {
  print('generating event #$i');
  return 'line $i\n'.codeUnits;
})
.listen(out.add);
Future.delayed(15.seconds, () {
  print('calling ss.cancel');
  ss.cancel();
});

这个答案非常接近我正在寻找的东西,以防其他人试图找到这个答案。所有功劳归@pskink!


推荐阅读