| Summary: | iOS 8 prevents audio playback outside of user gesture even after Web Audio unmutes | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Ashley Gullen <ashley> |
| Component: | Media | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED INVALID | ||
| Severity: | Normal | CC: | ap, eric.carlson, jer.noble |
| Priority: | P2 | ||
| Version: | 528+ (Nightly build) | ||
| Hardware: | iPhone / iPad | ||
| OS: | Other | ||
|
Description
Ashley Gullen
2014-07-15 07:36:48 PDT
Is this a change from iOS 7 behavior? The title implies that it is, but the description doesn't appear to support that. play() or load() must be called ONCE from a user gesture handler for each <video> and <audio> element. This is to prevent pages from loading potentially large media files which the user never plays, which is especially important in markets with expensive metered bandwidth. iOS does treat <audio>/Audio() like WebAudio - a user gesture is only required for the first load/play. The restriction is removed after that point, so you can load/play one file and then change 'src' and load and play another without a user gesture. What is the rationale for applying the restriction per-element rather than per-page? Our engine happens to create different Audio objects for different music tracks. Why should a second Audio object created after the first one is unmuted still require a user gesture, when setting a different source on the first one does not? |