我使用getUserMedia()做了录音机.并使用Recorder.js保存文件
但是输出文件比我想象的要重得多.
4分钟的录音记录有40mb.我无法将其发送到我的服务器.如果是这样,它会崩溃.
所以,我搜索了如何降低录制kbps.但我一无所获.只是一些Flash解决方案.但这些不适合我的项目.
所以,我的问题是,是否可以使用getUserMedia()降低音频记录的kbps?
我正在使用ReactiveX/RxJS版本.
假设我有一个Rx.ReplaySubject,它每2秒发出一个包含id的对象和一个包含值的数组.我想减少这个值数组并得到它们的总和.
问题是ReplaySubject是一个热的可观察对象并且它永远不会完成,至少我不希望它完成,因为我想要每2秒对该对象的值求和.但是为了使用reduce运算符,应该完成observable.那么,我该怎么办?
EG不工作代码:
var subject = new Rx.ReplaySubject();
subject.
map(x => x.transactions).
// Reduce never concludes because ReplaySubject instance is not completed
reduce((v1, v2) => v1+v2, 0).
subscribe(function (value) {
console.log(value)
});
setInterval(injectData, 2000);
function injectData () {
subject.next({id: Date.now(), transactions: [
{value: Math.round(Math.random() * 5000)},
{value: Math.round(Math.random() * 5000)},
{value: Math.round(Math.random() * 5000)},
{value: Math.round(Math.random() * 5000)},
{value: Math.round(Math.random() * 5000)}
]});
}
Run Code Online (Sandbox Code Playgroud)