Replay capture recorded without audio

Related app/team name (not a must if you want to keep it private): Trucky
Issue Description:
Replay capture recorded without audio

Can you reproduce it (exact steps to reproduce):

Enable the replay

var settings = {
    settings: {
        video: { buffer_length: 30000 },
        audio: {
            mic: {
                volume: 100,
                enabled: true,
            },
            game: {
                volume: 75,
                enabled: true,
            },
        },
    },
};

return new Promise((resolve, reject) => {
    overwolf.media.replays.turnOn(settings,
        (response) => {
            if (response.status == "success")
                resolve(response);
            else
                resolve(response);
        });
});

Start the replay capturing

function capture(replayType, pastDuration, futureDuration, captureFinishedCallback, callback) {
    overwolf.media.replays.capture(pastDuration, futureDuration, captureFinishedCallback, callback);
}

Reply has been corrected recorded but without audio.OverwolfLogs_2021-01-26_10-40-38.zip (841.8 KB)

Impact for my app: [e.g. x% of the users complained about it, it’s a show-stopper]: mid
Do you currently have a workaround?
No

Please reproduce and attach a zip package of your OW client logs
Logs attached

@dowmeister

  1. Is it reproducible on your machine in 100% of the cases?
  2. do you get any sound or no sound at all?
    3/is it worked before, or it’s a new feature?

Thanks

  1. tried a couple of replays, yes
  2. i have sound on my pc, not on the video (attached in Slack, completely mute)
  3. yes, it was working before

i think first reports arrived like 1-2 weeks ago max

@dowmeister, sorry, but I’m not familiar with your app too much… can you please tell me how to use the capturing feature in your app? the exact steps to reproduce it.

And another two questions:

  1. What is the percentage of your app’s users that sufferers from it? (~40% of the total users, etc.)
  2. Did you try to install another capture app to check if this other app capture correctly?

Start ETS2 or ATS, enable the capture from options. Open ALT+O to open the options, then “video and capture” tab, enable video capture and save. Wait for confirmation.

while driving ALT+C to capture the replay.

About your questions: 1

  1. i don’t kow, but got some reports latest day.
  2. no, i dont use other Overwolf apps other than mine

@dowmeister, I wanted to update you that I’m able to reproduce the issue.
Although I tried several things, including using manual capture and using different device_id’s, I couldn’t capture the sound. So I had to escalate it, so thanks for the patience.

Questions: is it ever worked? I mean, is it ever captured videos in your app WITH a sound?

I cannot be really really sure but i guess yes. I remember in the past replays with audio. And if users started to tell “why my replays havent audio anymore” means it was working.

@dowmeister, I want to clarify that although capturing with your app creates muted videos, using different capture apps like Outplayed with ETS\ATS is working fine as expected (capture with sound).

thanks @eransharv … so I’m messing with something in audio capturing settings or…?

I just noticed that your in-game window (named inGameIndex) has the mute flag set to true… if you remove it and reload your manifest, you will get sound in your app’s captures.

I haven’t a window named inGameIndex and all with mute flag is the ones with Ads.

I will get back to the laptop later today and i will be able to recheck and answer.

@dowmeister, it looks that the fact that it’s worked is not related to my changes in the manifest.
Using your latest version, I was able to capture videos with sound without any extra settings.
I just enabled capture on your app and hit your hotkey (alt +C).

Can you please recheck it on the latest OW + app version and let me know?

Just received some reports from a couple of users (not really a report, but a question about replays without audio).

So this is still happening

Are you able to reproduce it on your machine?

Yes. Video without audio.

OverwolfLogs_2021-03-14_16-15-15.zip (479.8 KB)

@dowmeister I think that we found the issue:

When you set the audio object, you must also specify the device_id. If you have specified it, it overrides it to null… So when you put it, the recording works as expected.

For example:

audio: {
            mic: {
                volume: 100,
                enabled: true,
                device_id:"{0.0.0.00000000}.{09d0b597-b16d-4301-98da-42ed9f291234}"
            },
            game: {
                volume: 75,
                enabled: true,
               device_id:"{0.0.0.00000000}.{09d0b597-b16d-4301-98da-42ed9f29dab6}"
            },
        }

We created a bug on this - to fix it. So if it no set, it will take the default playback and recording devices.
But meanwhile, I specified it, and it should work (worked on my tests). I will fix the docs as well.

Of course, to get the device ids, you can use overwolf.streaming.getAudioDevices().

Update me if that worked for you.

Thanks

Sorry Eran, not sure to understand correctly.

I have to define explicitly the default recording device from overwolf.streaming.getAudioDevices()?

This is how init the recording:

var settings = {
    settings: {
        video: { buffer_length: 30000 },
        audio: {
            mic: {
                volume: 100,
                enabled: true,
            },
            game: {
                volume: 75,
                enabled: true,
            },
        },
    },
};

return new Promise((resolve, reject) => {
    overwolf.media.replays.turnOn(settings,
        (response) => {
            if (response.status == "success")
                resolve(response);
            else
                resolve(response);
        });
});

Yes, you have to extract your audio device’s ids, using overwolf.streaming.getAudioDevices() as my example above.

The response will be something like this:

default_playback_device_id: "{0.0.0.00000000}.{51d93f5c-224f-4e12-9740-36901db3bf64}"
default_recording_device_id: "{0.0.1.00000000}.{0d263518-afd8-4e6c-8ff0-39f6d08a8591}"
devices: (2) [{…}, {…}]
status: "success"
success: true

So take the ids and forward them to your settings object, so eventually, this is the data that will be sent:

var settings = {
    settings: {
        video: { buffer_length: 30000 },
        audio: {
            mic: {
                volume: 100,
                enabled: true,
                device_id:"{0.0.0.00000000}.{51d93f5c-224f-4e12-9740-36901db3bf64}"
            },
            game: {
                volume: 75,
                enabled: true,
               device_id:"{0.0.0.00000000}.{0d263518-afd8-4e6c-8ff0-39f6d08a8591}"
            },
        },
    },
};

return new Promise((resolve, reject) => {
    overwolf.media.replays.turnOn(settings,
        (response) => {
            if (response.status == "success")
                resolve(response);
            else
                resolve(response);
        });
});

is correct you are passing the default recording device to “mic” and default playback device to “game”?
or is a typo?