我有一个线程java.awt.Robot
使用 Xuggler 进行屏幕截图,然后将它们编码为视频。
循环对图像进行编码,然后根据帧速率使线程休眠一段时间。
到目前为止一切都很好。当我尝试对音频进行编码时,就会出现问题。
具体来说,保持采样率和大小
我正在使用TargetDataLine
将数据读入byte[]
. 此数据已采用BigEndian格式。
神奇之处在于在适当的时间提供适当数量的数据。
我的AudioFormat
样子是这样的:
假设 10fps 和 44000Hz 采样率,我需要提供
byte[]
多少?
short
因为那是 Xuggler 想要的)encodeAudio()
方法?我的意思是经过 10 次循环或 5 次循环后,等等。杂项:
社区成员 Alex 我给了我这个公式:
shortArray.length == ((timeStamp - lastTimeStamp) / 1e+9) * sampleRate * channels;
粗略的计算让我得到了 4782 短裤一秒钟的答案。
我知道当你传递要编码的音频时,它必须持续一整秒
所以我必须每次通过捕获 480 条短裤,然后在第 10 遍之后最终对其进行编码。
请告诉我这个扣除是否正确?