Actionscript 3 用字节数组实现FIFO,在FIFO仍在写入时读取FIFO

Actionscript 3 用字节数组实现FIFO,在FIFO仍在写入时读取FIFO,actionscript-3,Actionscript 3,我确信我遗漏了一些与ActionScript3相关的基本内容,但我没有太多使用它的经验 我问题的背景是: 从麦克风录制的声音需要通过基于http的协议(使用安全套接字)发送到后端。为此,每隔20毫秒(或使用编解码器时为80字节)对语音字节进行“帧化”(即,在记录的字节之前插入一些帧化字节),并通过开放式套接字连接推出 因此,我认为最好的方法是将记录的数据样本存储到bytearray B中,当我希望每80个字节写入一个bytearray B时,bytearray B仍在写入 从B中读取最后记录的

我确信我遗漏了一些与ActionScript3相关的基本内容,但我没有太多使用它的经验

我问题的背景是:

从麦克风录制的声音需要通过基于http的协议(使用安全套接字)发送到后端。为此,每隔20毫秒(或使用编解码器时为80字节)对语音字节进行“帧化”(即,在记录的字节之前插入一些帧化字节),并通过开放式套接字连接推出

因此,我认为最好的方法是将记录的数据样本存储到bytearray B中,当我希望每80个字节写入一个bytearray B时,bytearray B仍在写入

  • 从B中读取最后记录的80字节
  • 预加帧字节
  • 将生成的bytearray从插座中推出
现在,如果我从bytearray B读取,操作会重置bytearrya的指针,当一个新的voicebyte进入时,它肯定会覆盖指针后面的字节

我怎样才能避免这种情况发生


感谢您提供的所有指针。

请注意文档状态,您可以重置
ByteArray的指针()

将文件指针的当前位置(以字节为单位)移动或返回到ByteArray对象中。这是对读取方法的下一次调用开始读取或写入方法开始写入的点

因此,您可以在执行读取操作之前重置
位置
,并以这种方式管理FIFO

但我认为使用字节数组作为FIFO可能会有问题:

  • 如果您想删除刚刚从FIFO读取的字节,我看不到任何API可以这样做,除了清除整个数组的
    clear()
  • 麦克风中的
    SampleDataEvents
    可能会频繁出现,导致效率降低或出现问题

对于从每个SampleDataEvent中获得的各个ByteArray,保持FIFO(使用数组)可能更容易。

谢谢您的回答。很好的ide,可以将样本打包到阵列中。我将研究是否可以使用这种方法。