# How to get the microphone raw data

**URL:** <https://forum.webosose.org/t/how-to-get-the-microphone-raw-data/1154>\
**Category:** App Development\
**Created:** [July 23, 2020, 5:32am UTC](https://forum.webosose.org/t/how-to-get-the-microphone-raw-data/1154 "2020-07-23T05:32:33Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![youngyun](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.webosose.org/youngyun/32/377_2.png) [@youngyun](https://forum.webosose.org/u/youngyun)\
**Post date:** [July 23, 2020, 5:32am UTC](https://forum.webosose.org/t/how-to-get-the-microphone-raw-data/1154/1 "2020-07-23T05:32:33Z")

</div>

Hi, There.

I'm planning to develop a voice record web app.

However I can't find webos API to get audio steam data via microphone.

And then, I refer to below URL.

> **[Capturing an Image from the User  |  Web Fundamentals](https://html5rocks.com/en/tutorials/getusermedia/intro/)**
>
> Most browsers can get access to the user's camera.

Below is my test code.

```
    function hasGetUserMedia() {
        return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
            navigator.mozGetUserMedia || navigator.msGetUserMedia);
    }

    if (hasGetUserMedia()) {
        console.log('getUserMedia() is supported in your browser');
        navigator.mediaDevices.getUserMedia({ audio: true, video: false })
            .then(function(stream) {
                console.log('successCallback');
            })
            .catch(function(err) {
                console.log('failureCallback');
            });

    } else {
        console.log('getUserMedia() is not supported in your browser');
    }

    navigator.permissions.query({ name: 'microphone' }).then(function(result) {
        if (result.state == 'granted') {
            console.log('permissions granted');
        } else if (result.state == 'prompt') {
            console.log('permissions prompt');
        } else if (result.state == 'denied') {
            console.log('permissions denied');
        }
        result.onchange = function() {

        };
    });

```

When I launched test app, I got console log as below.

```auto
getUserMedia() is supported in your browser
permissions denied
failureCallback

```

I guess getUserMedia() API can't run on webOS OSE and I need to add microphone permission.

Could you help me?

---

<div class="post-metadata">

**Author:** ![NERGI](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.webosose.org/nergi/32/364_2.png) [@NERGI](https://forum.webosose.org/u/NERGI)\
**Post date:** [July 24, 2020, 6:20am UTC](https://forum.webosose.org/t/how-to-get-the-microphone-raw-data/1154/2 "2020-07-24T06:20:07Z")

</div>

Hi @youngyun,

We don't have any API to record audio data via mic.  
Instead, you can use below pulseaudio utility to record audio data through mic.

`parecord /tmp/rec_file.wav --device=precord`

Thanks!

---

<div class="post-metadata">

**Author:** ![jikjoo](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.webosose.org/jikjoo/32/404_2.png) [@jikjoo](https://forum.webosose.org/u/jikjoo)\
**Post date:** [August 13, 2020, 4:49pm UTC](https://forum.webosose.org/t/how-to-get-the-microphone-raw-data/1154/3 "2020-08-13T16:49:22Z")

</div>

Hi, @youngyun  
You can get audio stream via microphone by update **webOS 2.6.**  
since webOS 2.6 supports webRTC, you can use getUserMedia() API.  
Also, you need to **update ares-cli 1.2.**  
And change **appinfo.json**

```auto
{
  "id": "com.example.app",
  "version": "1.0.0",
  "vendor": "LGE-SVL",
....

  "allowAudioCapture": true,
  "allowVideoCapture": true
}
```

---

<div class="post-metadata">

**Author:** ![youngyun](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.webosose.org/youngyun/32/377_2.png) [@youngyun](https://forum.webosose.org/u/youngyun)\
**Post date:** [August 13, 2020, 11:41pm UTC](https://forum.webosose.org/t/how-to-get-the-microphone-raw-data/1154/4 "2020-08-13T23:41:39Z")

</div>

Hi, @jikjoo

Thank you for your reply.  
I change appinfo.json like your comment.

appinfo.json

```auto
{
    "id": "com.rec.app",
    "version": "1.0.0",
    "vendor": "My Company",
    "type": "web",
    "main": "index.html",
    "title": "rec app",
    "icon": "icon.png",
    "resolution": "1280x720",
    "allowAudioCapture": true,
    "allowVideoCapture": true,
    "requiredPermissions": [
        "time",
        "settings.read",
        "activities.manage"
    ]
}

```

However, there is still **a permission problem of microphone on the webOS OSE2.6.**

- on the Chrome Browser  
 ![image](https://canada1.discourse-cdn.com/flex031/uploads/developer1/original/1X/19582af80f81b913d096f0e3a1b2cf47a6609e0c.png)

- on the webOS OSE 2.6.0  
 ![image](https://canada1.discourse-cdn.com/flex031/uploads/developer1/original/1X/50299116788efc6662d5dbe7e5097cbcb44949f5.png)

Thank you.

---

<div class="post-metadata">

**Author:** ![jikjoo](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.webosose.org/jikjoo/32/404_2.png) [@jikjoo](https://forum.webosose.org/u/jikjoo)\
**Post date:** [August 14, 2020, 5:53am UTC](https://forum.webosose.org/t/how-to-get-the-microphone-raw-data/1154/5 "2020-08-14T05:53:48Z")

</div>

I think it's a problem in using  
`navigator.permissions.query({ name: 'microphone' }).then(function(result) `

this is my code, and I used below sites for references.

```auto

          const { navigator } = window;

          /* navigator.getUserMedia = navigator.getUserMedia =

            navigator.getUserMedia ||

            navigator.webkitGetUserMedia ||

            navigator.mozGetUserMedia; */

          const op = {

            video: false,

            audio: true

          };

          navigator.mediaDevices.getUserMedia(op)

            .catch(function (error) {

              if (error.name !== 'NotFoundError') {

                throw error;

              }

              return navigator.mediaDevices.enumerateDevices()

                .then(function (devices) {

                  var mic = devices.find(function (device) {

                    return device.kind === 'audioinput';

                  });

                  var constraints = {

                    video: false,

                    audio: mic && op.audio

                  };

                  console.log("enumerateDevices", { audio: constraints.audio, error })

                  navigator.mediaDevices.getUserMedia(constraints)

                    .then(stream => {

                      this.setState({ streamUrl: stream, localStream: stream });

                      this.localVideo.srcObject = stream;

                      console.log('return enumerate getUserMedia')

                      resolve();

                    })

                });

            })

            .then(

              stream => {

                this.setState({ streamUrl: stream, localStream: stream });

                this.localVideo.srcObject = stream;

                console.log('return getUserMedia')

                resolve();

              },

              () => { }

            );

        });

```

> **[diegogurgel/react-webrtc](https://github.com/diegogurgel/react-webrtc)**
>
> Video chat using webRTC and react. Contribute to diegogurgel/react-webrtc development by creating an account on GitHub.

  

> **[webrtc/apprtc](https://github.com/webrtc/apprtc)**
>
> The video chat demo app based on WebRTC. This project is currently on HOLD with minimal maintenance. - webrtc/apprtc

  

> **[webosose/test-apps](https://github.com/webosose/test-apps/tree/master/com.webos.app.test.webrtc)**
>
> Test applications. Contribute to webosose/test-apps development by creating an account on GitHub.

so how about testing microphone by completing successCallback function?  
instead of using navigator.permissions.query
