- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 JUCE 开发应用程序可以录制音频或打开音频文件的库。音频文件将被传递到 openSMILE程序以提取其特征值。所有音频文件均为 wave 格式,最终将针对 iPhone 平台构建应用程序。
我开发了应用程序的一部分,允许应用程序录制音频并从文件目录打开音频文件。我能够将一些音频文件传递到 openSMILE 中以提取其特征值,但不能将其他音频文件传递给 openSMILE。所有从JUCE应用本身记录的都不能传入。
传递那些不能传递的音频文件时产生的错误如下:
smilePcm: Riff: 46464952
Format: 45564157
Subchunk1ID: 4b4e554a
Subchunk2ID: 0
AudioFormat: 0
Subchunk1Size: 34smilePcm: bogus wave/riff header or file in wrong format ('Audio/Audio Recording.wav')! (maybe you are trying to read a 32-bit wave file which is not yet supported (new header type...)?)(ERROR) [1] in cWaveSource: failed reading wave header from file 'Audio/Audio Recording.wav'! Maybe this is not a WAVE file?
为了找出错误的原因,我随后使用 Riffpad 提取了有关可通过和不可通过的音频文件的波形 header 的信息。
在可以传入openSMILE程序的音频文件中,wave文件头信息如下:
音频 1
RIFF-WAVE - (len= 180260, off= 12)
fmt - (len=16, off=20)
data - (len=180224, off=44)
音频 2
RIFF-WAVE - (len= 19236, off= 12)
fmt - (len=16, off=20)
data - (len=19200, off=44)
不可通过的如下:
音频 3 <---从我的 JUCE 应用程序中录制
RIFF-WAVE - (len= 128096, off= 12)
JUNK - (len=52, off=20)
fmt - (len=16, off=80)
data - (len=128000, off=104)
Audio 4 <---同样不能传入openSMILE的随机音频文件
RIFF-WAVE - (len= 21289308, off= 12)
fmt - (len=40, off=20)
fact - (len = 4, off=68)
data - (len=21289248, off=80)
我猜测(如果我错了请纠正我)如果我可以从录制的 wave 文件(即音频 3)中删除垃圾子 block ,那么错误将被删除,这样标题将与可通过的音频中的标题相似文件。
我想到了可能能够解决此问题的 2 种可能性:
使用类似于可通过的音频文件 header 的 header 格式录制 Juce Audio(最直接和首选的方法,如果可行的话)
录制后转换音频文件,使标题相似(我读过使用 libsndfile 和音频压缩管理器 (ACM) 可能有效,但我不确定它们是否适用于跨平台JUCE 可以构建到,例如 iPhone)
对于第一种方式,有没有什么方法可以像使用可通过的音频文件一样以“正确”的格式录制音频?
对于第二种方式,我可以使用可以为跨平台构建的库,或者以某种方式取出录制音频的数据 block ,并向其添加具有“正确”格式的 header 吗? (我从我读到的内容中收集到的是,JUNK 允许包含信息,如果不需要,可以跳过。我认为删除它不会有问题,只要我编辑总长度来自 RIFF-WAVE 子 block 。)
上面的方法是否可行,如果可行,应该如何实现?
谢谢!
最佳答案
已解决:显然在 wavAudioFormat.cpp 中有评论关于启用 JUCE_WAV_DO_NOT_PAD_HEADER_SIZE
以删除垃圾填充。
将这些步骤留给任何想要以 wavAudioFormat 格式录制音频但拥有无法读取填充录制音频的“蹩脚 wav 播放器”的人:
JUCE_WAV_DO_NOT_PAD_HEADER_SIZE
添加到列表中。关于c++ - 我如何在 JUCE 中录制标题没有 'JUNK' 子 block 的音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266391/
所以我把这个 union 称为垃圾。它保存一个 int 或一个 char[4] 数组...您可能知道我正在尝试做什么。我将字母 J、u、n 和 k 的 ASCII 值放入 int 中,其中 J 放入第
我正在处理一些动态分配的数组,我知道这一定是数组的某种范围问题,但我不知道它是什么。当迭代器到达最终的相关数据点时,取消引用指向该元素的指针每次都只会打印垃圾。 m_data 是保存数据的数组,类型为
我想获取给定url的html源代码。我曾尝试过使用这个 import urllib2 url = 'http://mp3.zing.vn' # write the url here usock = u
我尝试从数据库创建 XML,但在 WampServer 中运行 PHP 代码时遇到错误: XML Parsing Error: junk after document element Line Num
我真的不知道,问题是什么?我收到以下错误: File "C:\Python27\lib\xml\dom\expatbuilder.py", line 223, in parseString parse
我用 JUNG 程序在 Java 中制作了一个 PluggableGraphMouse 和 2 个 EditingGraphMousePluggings。如果我将修饰符设置为左键单击和右键单击,则效果
我试图编写一个简单的 c 程序来处理导数,但这不是问题的重点:当我运行程序时,它要求我输入一堆浮点值,但不管我输入什么,scanf 函数总是会为变量分配“垃圾”值,代码如下: double a, b,
我使用 python sax 来解析 xml 文件。xml文件其实就是多个xml文件的组合。看起来像这样: 我的 python 代码如下。它显示“文档元素后的垃圾”错误。解决这个问题的任何好主意。
当我尝试查看动态生成的 (PHP) XML 文档时出现此错误: XML 解析错误:文档元素后出现垃圾地址:http://dev.leisurepublishing.com/vtc/master.xml
由于XML方面的专家远远不够,我一直在学习基础教程。 xpath上有this one。幸运的是,我的Linux安装程序具有一个“xpath”命令,该命令可以正常工作,直到获得属性为止。 xpath -
我正在使用 i686-elf-as gcc 交叉编译器,但它无法编译汇编文件。 该文件与 grub 一起使用来启动我自己的操作系统,但是当我尝试定义任何全局变量或输入 _irq 部分时,它会吐出大量错
我正在开发一个 RESTful Web 服务,它将返回某人添加到我之前实现的提要列表中的 RSS 提要列表。 现在,如果我返回 TEXT_PLAIN 回复,则在浏览器中显示得很好,但当我尝试返回 AP
我正在工作中学习Python。我有一个大型 XML 文件,其中的数据与此类似: testData3.xml 文件 something1something1something1something1som
尝试将 XML 文件解析为 ElementTree: >>> import xml.etree.cElementTree as ET >>> tree = ET.ElementTree(file='D
GCC 内联汇编错误:错误:表达式后出现垃圾 `(%esp)' 我正在研究 gcc 内联汇编。我的环境是Win 7 32bit,mingw-gcc 4.6.1。 我对“m”约束有疑问。这是我的 C 函
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我只是想用这个简单的代码获取最后一个错误的文本: #include #include #include int main(){ char err[256]; memset(err
当我在 Firefox 上使用 console.log 测试我的 index.html 时,它读到一个奇怪的错误,上面写着。我无法在 Google Chrome 或 IE 上运行 oage。 junk
我试图理解这里发生的事情的这种表示法 Example also below .我正在寻找是否有人可以提供额外的代码来帮助我理解这一点。我如何使用 T 扩展垃圾?这意味着什么? public class
我正在尝试编译在 MSVC 中工作的内联汇编(使用 -fasm-blocks),但是 GCC 给了我 junk `(%ebp)+4' after expression 错误...为什么它不接受语法,我
我是一名优秀的程序员,十分优秀!