Bug 240336
Summary: | The quality of the video transmitted by WebRTC is very low on iOS Safari 15.4(only Offerer situation) | ||
---|---|---|---|
Product: | WebKit | Reporter: | yuki uchida <rantarn0326> |
Component: | WebRTC | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED CONFIGURATION CHANGED | ||
Severity: | Normal | CC: | kyle, webkit-bug-importer, youennf |
Priority: | P2 | Keywords: | InRadar |
Version: | Safari 15 | ||
Hardware: | iPhone / iPad | ||
OS: | iOS 15 | ||
See Also: | https://bugs.webkit.org/show_bug.cgi?id=238366 |
yuki uchida
# Overview
The quality of the video transmitted by WebRTC is very low on iOS Safari 15.4.
And, changing MediaStreamTrack.enabled eliminate this problem.
## steps to reproduce
device A: iOS Safari
device B: Any(ChromeM101 on Mac and iPadOS(unknown version) was tested)
1. (device A&B) visit https://yasubaba.github.io/prodSkyWay/room_videoMute/
2. (device A&B) Accept permissions for camera and microphone.
3. (device A&B) join Room and start WebRTC Connection.
4. (device B) received Video is very low quality. (However, the image quality seems to be normal on webrtc internals.)
5. (device A) click `Video Mute/Unmute`
6. (device B) received Video is good quality. (However, But on webrtc internals it looks no different than step 4)
The mute procedure is very simple as follows
```
document.getElementById('js-videoEnabled').addEventListener('click', () => {
localStream.getVideoTracks().forEach( track => {
track.enabled = !track.enabled;
});
})
```
## Actual Results
iOS Safari always send low quality video at first, but changing track.enabled is workaround.
## Expected Results
device B receive good quality Video.
## Hardware
iPhone11 iOS15.4
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
yuki uchida
(In reply to yuki uchida from comment #0)
> # Overview
> The quality of the video transmitted by WebRTC is very low on iOS Safari
> 15.4.
> And, changing MediaStreamTrack.enabled eliminate this problem.
>
>
> ## steps to reproduce
> device A: iOS Safari
> device B: Any(ChromeM101 on Mac and iPadOS(unknown version) was tested)
>
> 1. (device A&B) visit https://yasubaba.github.io/prodSkyWay/room_videoMute/
> 2. (device A&B) Accept permissions for camera and microphone.
> 3. (device A&B) join Room and start WebRTC Connection.
> 4. (device B) received Video is very low quality. (However, the image
> quality seems to be normal on webrtc internals.)
> 5. (device A) click `Video Mute/Unmute`
> 6. (device B) received Video is good quality. (However, But on webrtc
> internals it looks no different than step 4)
>
>
> The mute procedure is very simple as follows
> ```
> document.getElementById('js-videoEnabled').addEventListener('click', () => {
> localStream.getVideoTracks().forEach( track => {
> track.enabled = !track.enabled;
> });
> })
> ```
>
>
> ## Actual Results
> iOS Safari always send low quality video at first, but changing
> track.enabled is workaround.
>
> ## Expected Results
> device B receive good quality Video.
>
> ## Hardware
> iPhone11 iOS15.4
Postscript.
This problem seems to occur only when iOS Safari is the Offerer. iOS Safari is the Answerer, Chrome receives a clean image from the beginning.
## steps to reproduce
device A: iOS Safari
device B: Any(ChromeM101 on Mac and iPadOS(unknown version) was tested)
1. (device A&B) visit https://yasubaba.github.io/prodSkyWay/room_videoMute/
2. (device A&B) Accept permissions for camera and microphone.
3. (device B) join Room and start WebRTC Connection.
4. (device A) join Room and start WebRTC Connection.(createOffer)
5. (device A&B) WebRTC Connection start.
6. (device B) received Video is very low quality. (However, the image quality seems to be normal on webrtc-internals.)
7. (device A) click `Video Mute/Unmute`
8 (device B) received Video is good quality. (However, But on webrtc-internals it looks no different than step 6)
youenn fablet
Can you try on latest iOS 15.5 beta to see whether that fixes your issue?
Radar WebKit Bug Importer
<rdar://problem/93171146>
Kyle Foley
15.5 beta fixes the Safari issue for me
youenn fablet
Marking as configuration changed