Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't get 720x1280 stream from webcam #6

Open
brootle opened this issue Feb 21, 2022 · 10 comments
Open

Can't get 720x1280 stream from webcam #6

brootle opened this issue Feb 21, 2022 · 10 comments

Comments

@brootle
Copy link

brootle commented Feb 21, 2022

Hi! I am trying to get 720x1280 stream, but it doesn't seem to work regardless of what settings I am passing as constraints on a client side. Inside OvenLiveKit-Web it's obvious that you set params in a way to get max possible resolution, but even when I set video: true to let the Kit take the resolution, oven media engine outputs 480x640 max. Maybe I am missing something obvious? I did try passing video: { deviceId: undefined, width: 1280, height: 720 } in constraints and a bunch of other settings without any luck. At some point I got 720 as oven media engine output while testing, but couldn't reproduce it.

// High resolution video constraints makes browser to get maximum resolution of video device.

  const constraints = {
      audio: { deviceId: undefined },
      video: { deviceId: undefined, width: 1920, height: 1080 }
  };

@SangwonOh
Copy link
Member

@brootle Hi. First, make sure your input device supports that resolution. You can test different values here.

And please note that the browser will get the ideal resolution from the input device if there is no matching constraint.
Please refer here.

In addition, please let us know which browser and OS you are testing.

Thanks.

@brootle
Copy link
Author

brootle commented Feb 22, 2022

@SangwonOh well, yes, I tested at https://ovenplayer.com/demo_input.html and on client side it takes 1280x720 no problem. I am on Google Chrome Version 98.0.4758.102 (Official Build) (64-bit) and Win10.

image

I tested at https://webrtc.github.io/samples/src/content/peerconnection/constraints/

{
    "audio": true,
    "video": {
        "width": {
            "min": "300",
            "max": "4096"
        },
        "height": {
            "min": "200",
            "max": "2160"
        }
    }
}

And got this result Video dimensions: 1280x720px So I am thinking maybe there could be something wrong on oven media engine side. I will doublecheck everything again and post if I find a solution

@SangwonOh
Copy link
Member

@brootle It's very difficult to select a value, but how is the Video dimensions with below settings at https://webrtc.github.io/samples/src/content/peerconnection/constraints/?

This is to determine if this is an OvenMediaEngine-side issue or something else..

{
    "audio": true,
    "video": {
        "width": {
            "min": "720",
            "max": "720"
        },
        "height": {
            "min": "1280",
            "max": "1280"
        }
    }
}

@brootle
Copy link
Author

brootle commented Feb 22, 2022

@SangwonOh

Yes, it gave me getUserMedia error: OverconstrainedError This may mean invalid constraints. error

image

and OvenLiveKit-Web also gave me same error when I tried to get media using minimal example needed to get client media, so what does it mean?

constraint: "height"
message: ""
name: "OverconstrainedError"

PS these settings below work fine to get 720x1280, I am logging getVideoTracks settings from stream on client side
image

@SangwonOh
Copy link
Member

@brootle Experientially, OverconstrainedError occurred when the webcam did not support the resolution.

Because the minimum and maximum values of the width and height were set to the same value, the browser requested media to the webcam with the exact values set, and it failed because the webcam did not support the resolution.

Looking at the HD attached to the webcam name, it looks like the webcam can go up to 1080.

And the last log screenshot you posted seems to have a height of 1080 :).

@brootle
Copy link
Author

brootle commented Feb 22, 2022

@SangwonOh yes, these settings worked on client side

{
    "audio": true,
    "video": {
        "width": {
            "min": "1280",
            "max": "1280"
        },
        "height": {
            "min": "720",
            "max": "720"
        }
    }
}

and it also works if I put exact parameters video: { width: 1280, height: 720 } so not sure what might go wrong when it hits media engine, all looks green in client logs for peer and socket connection

When I am testing at https://webrtc.github.io/samples/src/content/peerconnection/constraints/
The connected on the right starts with min resolution and eventually goes up.
image

@SangwonOh
Copy link
Member

@brootle

so not sure what might go wrong when it hits media engine, all looks green in client logs for peer and socket connection

What specifically is the problem? WebRTC input succeeded, but having problems playing through OvenMediaEngine?

Did you set up the WebRTC input properly?

@brootle
Copy link
Author

brootle commented Feb 23, 2022

@SangwonOh thanks! yeah, this was a problem with settings on engine side, something related to "prevent upscaling", I wasn't the guy setting up the engine, so had no idea about it 😀

@brootle
Copy link
Author

brootle commented Feb 23, 2022

@SangwonOh I have one more question, when peer connections is established and I am streaming, basically when ICE State [connected] event happened, how using client side ovenLivekit instance to view peer connection details, specifically the actual resolution of the stream that server is getting from my side?

@SangwonOh
Copy link
Member

@brootle Hi. The ovenLivekit instance has a peerConnection property. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants