gpt4 book ai didi

java - 如果我每秒需要 44000 字节,那么每 1/10 秒需要多少条短裤

转载 作者:行者123 更新时间:2023-11-29 03:39:03 27 4
gpt4 key购买 nike

我有一个线程使用 java.awt.Robot 截屏,然后循环使用 Xuggler 将它们编码成视频。
循环对图像进行编码,然后根据帧速率使线程 hibernate 一段时间。
到目前为止一切都很好。当我尝试编码音频时出现问题。

具体来说,保持采样率和大小

我正在使用 TargetDataLine 将数据读入 byte[]。此数据已采用 BigEndian 格式。
神奇之处在于在适当的时间提供适当数量的数据。
我的 AudioFormat 如下所示:

  • 采样率:44000Hz
  • 样本大小(以位为单位):16
  • 签名:真实
  • BigEndian: true

  • 假设 10fps 和 44000Hz 采样率,我需要提供
  • byte[] 的大小应该是多少?
  • 多少数据? (以 short 衡量,因为这是 Xuggler 想要的)
  • 什么时候调用 encodeAudio() 方法?我的意思是经过 10 次循环或 5 次循环等。
  • 杂项:

    社区成员 Alex 我给了我这个公式:

    shortArray.length == ((timeStamp - lastTimeStamp) / 1e+9) * sampleRate * channels;  

    我粗略算了一下,一秒钟得到了4782条短裤的答案。
    我知道当你传递要编码的音频时它必须是一整秒
    所以我必须每遍捕获 480 条短裤,然后在第 10 遍之后对其进行最终编码。
    请告诉我这个推论是否正确?

    最佳答案

    如果您有 16 位(两个字节),采样率为 44,000 Hz,即每秒 88,000 字节。如果你有立体声,那就是它的两倍。在 1/10 秒内,您需要其中的 1/10。即每分之一秒(1/10 秒)8,800 字节

    How do i retrieve short[] from ByteBuffer that has a byte[] as backing array

    byte[] bytes = { };
    ByteBuffer bb = ByteBuffer.wrap(bytes);

    short[] shorts = new short[bb.remaining()/2];
    bb.order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(shorts);

    如果顺序是 BigEndian,则无需更改它。

    关于java - 如果我每秒需要 44000 字节,那么每 1/10 秒需要多少条短裤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040885/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com