我们正在使用PortAudio在电子应用程序中记录音频。作为节点包装,我们使用naudiodon。
该应用程序需要录制音频和视频,但使用不同的来源。如前所述,音频是通过Port Audio录制的,顶部还有其他应用程序逻辑。另一方面,视频是使用标准MediaRecorder API录制的,具有自己的格式,属性和编解码器。
我们使用事件“ onstart”来跟踪实际的视频开始,并且为了同步音频和视频,我们还必须知道确切的音频开始时间。
问题是:我们无法检测到音频启动的确切时间戳。正确的做法应该是什么?
这是我们尝试的方法:
1.第一种选择是侦听portaudio.AudioIO事件,例如“数据”和“可读”事件。PortAudio拥有新的数据块后将立即调用它们,因此,跟踪第一个块减去其长度(以毫秒为单位)将导致近似的音频启动。
2.第二个选项是将可写管道添加到AudioIO,并执行与事件几乎相同的操作。
问题是,通过执行这些选项中的任何一个,计算出的开始并不总是会导致音频开始的实际时间戳。众所周知,在播放端口音频时,计算出的时间戳比应该的要高,好像有些块在实际释放之前就已经被缓冲了。
实际的音频开始和第一个块释放可能会有所不同,范围大约为50-500 ms,块长度约为50ms。因此,块有时可能缓冲,有时却不缓冲。有什么办法可以跟踪第一个块的实际开始时间?在检查端口音频文档时,我找不到任何相关信息。
也许还有其他方法可以继续使用PortAudio并单独录制视频,但是最终实现了将它们同步在一起的相同期望功能?
PortAudio 19.5,Naudiodon 2.1.0,Electron 6.0.9,Node.js 12.4.0
我们想为数据库添加额外的安全层,并且我们希望确保即使DB文件泄漏给公众-任何人都无法访问其中的实际数据。
另外,我们希望确保即使加密密钥泄漏,它也只允许解密一行或几行,而其他行仍然无法访问。
最佳做法是什么?
如果很重要-我们正在使用rails(5.1)+ postgres(9.6),并且我们的数据库正在AWS RDS中运行。
我在我的电子应用程序中使用电子构建器 (20.44.4) 来实现安装程序/更新程序功能。
它有一个问题,它不允许自定义保存更新的文件夹 - 它只有一种不支持任何自定义的方法。
为了解决这个问题,我尝试对库进行分叉,在内部进行一个小的修复并将其作为分叉重新使用。为此,我将此行添加到我的 package.json 中:
"electron-builder": "https://github.com/MY_ORGANIZATION/electron-builder/tarball/COMMIT_HASH",
不幸的是,我无法使用分叉版本构建应用程序 - 它给了我一个错误(“电子生成器无法识别”)。
我还尝试进行某种“猴子修补”(我真的需要为此快速而肮脏的解决方案),但是我找不到在节点中执行此类技巧的方法-甚至可能吗?