2012-08-23 222 views
0

我相信我缺少一些基本的东西相关的ActionScript 3,但使用它实现与为ByteArray FIFO的从FIFO读而FIFO仍然被写入

的背景我没有太多的经验我的问题:

声音记录形成麦克风需要经由基于丙http协议(使用安全套接)到后端被发送。要做到这一点,声音字节被“陷害”(即某些帧字节记录的字节之前注入)每20ms(或80个字节,而在使用的编解码器),并通过开放式套接字连接推出。

因此,我认为最好的办法来获取打算是存储记录datasamples到ByteArray B中仍然被写入时,每80个字节我会

  • 的B读取最后记录80个字节
  • 前面加上成帧字节
  • 推所得的bytearray从插座

现在,如果我从字节组b中的操作中读取复位b的指针ytearrya并在新voicebyte进来,必将改写指针后的字节?

我怎样才能避免这样的事情发生?

感谢您的指点。

回答

0

注意的文档状态可以重置ByteArray的指针(position):

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

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

但我想用一个字节数组作为FIFO可能会出现问题:

  • 您想删除您刚刚从FIFO读取的字节数,我看不出有任何的API来做到这一点,其他比clear()它清除整个阵列。
  • 有可能从话筒的SampleDataEvents会在如此频繁,这会导致效率降低或问题

可能更容易只保留做出的FIFO(一个数组)你获得单独的ByteArray的的每个SampleDataEvent。

+0

谢谢您的回答。不错的IDE将数据打包到数组中。我会考虑是否可以使用这种方法。 – mic