首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何找出一个短数组的长度,用Xuggler来填充音频?

如何找出一个短数组的长度,用Xuggler来填充音频?
EN

Stack Overflow用户
提问于 2021-01-14 05:35:02
回答 1查看 22关注 0票数 1

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

代码语言:javascript
运行
复制
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()是视频的长度,单位为毫秒

计算尺度变量的公式是什么?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-14 05:48:58

scale是所谓的audio sampling rate,通常以赫兹(Hz)为单位测量,相当于“每秒采样数”。

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

例如,如果您的音频采样率为48,000 Hz:

代码语言:javascript
运行
复制
int audioSampleRate = 48000;
double samplesPerMillisecond = (double) audioSampleRate / 1000;
int estimatedArrayLength = (int) (animation.getLength() * samplesPerMillisecond);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65710123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档