问题标签 [24-bit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 使用 SND_PCM_FORMAT_S24_3LE 格式的 24 位文件的初始化 ALSA 失败
我正在尝试使用 ALSA ( libasound.so.2
) 播放具有 3 字节样本对齐的 24 位 wav 文件。并且 ALSA 在设置缓冲区大小时失败并Invalid argument
出现错误(并且 ALSA 不会将任何内容传递给驱动程序)
这是wav
文件头内容:
不幸的是无法提供适当的测试程序源,因为它是跨平台程序的一部分并且不会单独构建。缩短示例可能看起来像
ALSAsnd_pcm_hw_params_set_buffer_time_near()
呼叫失败并出现错误
(ALSA 甚至不尝试将任何数据传递给驱动程序,只是在设置缓冲区失败)该程序适用于 16 位音频。
我尝试了不同的缓冲区值(0.001 .. 1 秒),但它们都不起作用。假设我错过了 24 位 3LE 所需的 ALSA 配置的任何部分,也许是对先前初始化步骤结果的一些检查?
不幸的是,我找不到任何 24 位 ALSA 用法的示例,如果您建议任何指向示例/推荐/文档的链接,我将不胜感激。
已编辑
该文件的结果aplay
是:
c++ - 用零连接一个十六进制数
我编写了一个简单的代码来将小数转换为 24 位(3 个字节,6 个字符)十六进制数。
假设您输入 0.5,它提供的十六进制数为 0x400000。
虽然答案是正确的,但我想做的是保留 6 个字符表示,所以我希望 0.1 = 0x0ccccd 和
0.001 = 0x0020c5。
- 我认为一种可能的方法是将十六进制结果转换为字符串,然后使用 strlen 检查位数,然后将结果与适当的零连接。这种方法的问题是我不确定如何将十六进制结果存储在变量中。
- 我想即使我将十六进制数转换为字符串并找到要连接的零数,程序也会有点笨拙。可能有一种更简单的方法来实现我想做的事情。我只是不知道怎么做。希望有人能告诉我前进的方向。我写的程序如下。
c# - 如何使图像保存为 24 位图像?
如何让 C# 强制将保存的位图图像保存为 24 位图像,当您在 Windows 中获得图像的右键单击属性时可以看到。我保存的所有图像都设置为 32 位。我没有运气尝试了下面的代码。源图像也是 24 位的,但始终保存为 32 位图像
stream - naudio 32bit ieee 浮动到 24bit
在 NAudio 中,我需要使用仅接受 24 位音频的 ASIO 驱动程序播放 WAV 文件。波形流存储在 wav 文件中,但它是 32 位 ieee 浮点数。我需要将流从 32 位转换为 24 位。我尝试了所有 NAudio 转换功能,但没有一个适合我的目的。
ios - Swift 将 UIImage 转换为没有 alpha 通道的 24 位 RGB
我想将 UIImage 转换为 24 位 RGB,中间没有 32 位 RGBA 缓冲区。
我试过这个,但它不起作用(字节全为零):
python - 使用 Pydub 处理 24 位 96000Hz 文件
我对Pydub
音高功能印象深刻。尝试了很多推销程序,但从来没有得到好的结果。没有回声矿石听力样本丢失的意思 - 短暂的声音下降,矿石模糊的声音。
现在我发现Pydub
无法处理24bit/96000Hz HighRez wav
样品。而且我不愿意对我的文件进行下采样。
有没有办法获取Pydub
处理24b/96
文件?
matlab - Matlab 快速数据类型转换 4x1byte 到 1x32byte
我正在接收将音频样本编码为 24 位无符号整数的二进制数据包。这些需要转换为 32 位有符号(2 的补码)整数才能输出。
但是,由于数据被分块的方式,一个 24 位字可能会跨越数据包边界进行拆分。因此,我将每个字节缓冲为一个 8 位无符号整数,准备好在收到所有数据包后以 3 个一组(+ 1 个零填充字节)重铸。
我编写了以下函数来执行此操作,其中input
是一个 1x3 类型的数组uint8
:
可以使用以下代码段运行示例:
这个函数可以完成这项工作,但它是我处理过程中最慢的几个数量级。
有没有更有效的方法来达到同样的效果?还是可以处理更深奥的数据类型转换的内置 Matlab 函数?
谢谢
ruby - 转换三个字节、二进制补码、有符号整数
在SEG-D地震数据格式中,一些头参数被格式化为三字节、二进制补码、有符号二进制。所有值都是大端的。
使用String#unpack,Ruby 核心只能转换 16 位和 32 位值,但不能转换 24 位。
如何通过以下二进制补码方式将二进制值转换为整数:
numbers - 如何以小端顺序将 3 个字节转换为从 -1 到 +1 的浮点数
我有 3 个字节的小端序。它们是:顶部、中间和底部(从第 23 位到第 0 位) 如何将它们转换为从 -1 到 +1 的浮点数?
3 个字节是 little-endian,因为 wav 中有字符串 RIFF,所以最小值为 (0x7FFFFF),最大值为 (0x800000)
http://www.labbookpages.co.uk/audio/javaWavFiles.html
对于 16 位 wav:波形帧为 -32768 之间的 2s 互补二进制;0x8000 和 32767;0x7FFF)