繁体   English   中英

Java-Wav文件-空字节?

[英]Java - Wav File - Null Byte?

我有一个奇怪的问题。 现在,我能够读取wav文件样本,并在对其进行处理后将其再次保存到文件中。 但是对于我的项目,我必须更改一些值为空的字节。 我的意思是,如果我将一些整数放入wav文件中(例如:25的二进制形式),这意味着声卡会给我们提供25功率的电信号(我可能会对声卡和wav文件的概念有所误解)。

但是在我的项目中,我需要将null值放入wav文件。 就像声卡读取25的二进制形式时一样,它将发出信号,但此后将为空字节,并且声卡将不发出任何电信号,因为另一个值来了。

我知道,我无法正确表达我的问题。 使它更易于理解;

假设有一个这样存储的文件

data[] = {10,12,13,14,15,14,13,12,11,10};

我想做

data[]= {10,12,13,14,null,null,null,12,11,10}

当声卡读取此数据时,例如

10 voltage,12 voltage,13 voltage,14 voltage,no any signal,no any signal,no any signal,12 voltage, 11 voltage, 10 voltage}

我怀疑WAV文件是否具有在波形中间表示“无信号”的特定方式。 (粗读此描述似乎可以确认这一点。)

我认为最好的选择是在没有信号的地方简单地使用零。 (显然,零将需要使用您选择的编解码器进行编码。)


顺便说一句,即使WAV文件确实具有表示“无信号”的方式,也不会涉及将null值放入Java字节数组中。 Java字节数组不能包含null Java语言规范禁止这样做。

处理字节时,不能将null放入文件中-每个字节必须是256个位组合之一。

当声卡不返回no any signal时,您到底是什么意思? 那不是等于零电压(即在文件中使用整数值0 )吗? 还是您使用null作为占位符来表示“未知”?

您可能仍然没有完全表达您的问题-听起来好像您已决定需要在文件中放入null,并且似乎没有理由。 实际上是想达到什么目的(而不是“将WAV中的空值放入”)?这可以和零一起工作吗?

没有“空信号”。 如果您表示不希望输出,则发送0(如果您使用带符号的值)。 如果您使用无符号值(Java不支持),则对于8位样本发送128,对于16位样本发送32768。

所以就说

data[]= {10,12,13,14,0,0,0,12,11,10};

然后是类似的东西

yourSoundCardObject.write(data); //The method write is hypothetical

您的采样率是多少?

暂无
暂无

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

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