繁体   English   中英

将连续的 stream 写入文件 flutter/dart

[英]Write continuous stream to file flutter/dart

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

我能够使用 java 成功地做到这一点,方法是将数据作为字节数组读取并编写一个简单的 while 循环,声明只要数据不是 null 就将字节写入数组,当它是 null 时,然后将字节数组写入一个文件。 下面我可以提供我在 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();
}

但是,我不知道如何在飞镖/扑动中做到这一点,并且找不到任何类型的例子。 所以我的问题是我如何将上面的 Java 代码转换成我可以在 Flutter 中使用的代码。我假设我会使用 Future 但是你如何在记录点击事件期间停止未来? 任何帮助,将不胜感激。 先感谢您!

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!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM