Java 如何使用Xuggler查找短数组的长度,以便用音频填充视频?

Java 如何使用Xuggler查找短数组的长度,以便用音频填充视频?,java,audio,xuggler,Java,Audio,Xuggler,我正在尝试将音频添加到视频中,我需要一个表示音频的短数组。我不知道如何得到这个数组的长度。 我估计每毫秒有91个短路,但我不知道如何得到准确的值,而不是猜测和检查。 以下是相关代码: IMediaWriter writer = ToolFactory.makeWriter(file.getAbsolutePath()); writer.addVideoStream(0, 0, IRational.make(fps, 1), animation.getWidth(), animation.getH

我正在尝试将音频添加到视频中,我需要一个表示音频的短数组。我不知道如何得到这个数组的长度。 我估计每毫秒有91个短路,但我不知道如何得到准确的值,而不是猜测和检查。 以下是相关代码:

IMediaWriter writer = ToolFactory.makeWriter(file.getAbsolutePath());
writer.addVideoStream(0, 0, IRational.make(fps, 1), animation.getWidth(), animation.getHeight());
writer.addAudioStream(1, 0, 2, 44100);

...

int scale = 1000 / 11; // TODO
short[] audio = new short[animation.getLength() * scale];
animation.getLength()
是以毫秒为单位的视频长度

计算比例变量的公式是什么


之所以需要短片列表,是因为这是一个动画库,支持向输出的视频中添加大量声音。因此,我循环遍历所有请求的声音,将声音转换为短列表,然后将它们的值添加到主音频列表中的正确位置。不使用短列表会使我无法将多个声音叠加在一起,并使计时更加困难。

称为音阶的音阶,通常以赫兹(Hz)为单位,对应于“每秒采样数”

假设阵列中的每个元素都是单个音频采样,则可以通过将音频采样率乘以动画持续时间(以秒为单位)来估计阵列大小

例如,如果音频采样率为48000 Hz:

int audioSampleRate = 48000;
double samplesPerMillisecond = (double) audioSampleRate / 1000;
int estimatedArrayLength = (int) (animation.getLength() * samplesPerMillisecond);

这工作做得很好!我唯一要做的就是将数组长度增加一倍。我猜这是因为2个频道?@mega12345mega如果音频是立体声的,是的!