1

你好呀。

我想使用 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);
}

那么你看到一个明显的错误还是只是方法是错误的?

先感谢您!

此致,

尼古拉·阿利皮耶夫

4

1 回答 1

0

使用 WInJS 的当前功能,这似乎是不可能的。为了能够获得音频实时信息,需要进行 C++。这是 Microsoft示例。你也可以在微软论坛看到我得到的答案

于 2013-11-15T14:56:30.420 回答