你好呀。
我想使用 HTML 和 JavaScript 创建 Windows 8 应用程序,并想录制声音并用图形实时表示声音变化。我关注了这篇文章并能够将声音录制到 mp3 文件中。此外,我想要实现的是附加到某个事件,它可以为我提供有关录音机声音的实时信息。然后使用我想要分析的数据,获取声音表示的全部或部分离散点,将它们转换为 JSON(例如),然后可视化该信息。我拥有所有可用资源,除非我无法获得实时表示。我调查了“oMediaCapture”对象(见下面的代码),但无法获得这样的功能。然后我尝试使用流并希望它会提出这样的功能。但是当我按照 MSDN文章尝试创建“RandomAccessStream”时出现异常
var stream = new Windows.Storage.Streams.RandomAccessStream();
这是我的完整代码:
(function InitSound() {
var settings = initCaptureSettings();
initMediaCapture(settings);
})();
function initCaptureSettings() {
var captureInitSettings = null;
captureInitSettings = new Windows.Media.Capture.MediaCaptureInitializationSettings();
captureInitSettings.audioDeviceId = "";
captureInitSettings.streamingCaptureMode = Windows.Media.Capture.StreamingCaptureMode.audio;
captureInitSettings.realTimeModeEnabled = true;
return captureInitSettings;
}
function initMediaCapture(captureInitSettings) {
oMediaCapture = null;
oMediaCapture = new Windows.Media.Capture.MediaCapture();
oMediaCapture.initializeAsync(captureInitSettings).then(function (result) {
createProfile();
}, errorHandler);
}
function createProfile() {
profile = Windows.Media.MediaProperties.MediaEncodingProfile.createMp3(Windows.Media.MediaProperties.AudioEncodingQuality.high);
}
function errorHandler(e) {
}
function recordSound() {
var stream = new Windows.Storage.Streams.RandomAccessStream();
oMediaCapture.startRecordToStreamAsync(profile, stream).then(function (result) {
}, errorHandler);
/*Windows.Storage.KnownFolders.videosLibrary.createFileAsync("checkMic.mp3", Windows.Storage.CreationCollisionOption.generateUniqueName).then(function (newFile) {
storageFile = newFile;
oMediaCapture.startRecordToStorageFileAsync(profile, storageFile).then(function (result) {
}, errorHandler);
});*/
}
function stopRecord() {
//oMediaCapture.stopRecordAsync().then(function (result) {
// storageFile.openAsync(Windows.Storage.FileAccessMode.read).then(function (stream) {
// oMediaCapture.startRecordToStreamAsync(profile, stream).then(function (result) {
// }, errorHandler);
// });
//}, errorHandler);
}
那么你看到一个明显的错误还是只是方法是错误的?
先感谢您!
此致,
尼古拉·阿利皮耶夫