Automattic / pocket-casts-ios

Pocket Casts iOS app šŸŽ§
Mozilla Public License 2.0
1.66k stars 133 forks source link

Playback: audio skipped #44

Open pocketcasts opened 2 years ago

pocketcasts commented 2 years ago

Initially reported p1650892587223279-slack-C02A333D8LQ

What the listener said:

I was just listening to a 2hour podcast and at about 1hr10min it just skipped back to the beginning. Yet the progress bar still showed that the episode was at 1:10!?

It happened when they played the Biblical Series: Genesis 1 - Chaos & Order episode.

What has been done so far

pocketcasts commented 2 years ago

I wanted to let you know that Iā€™ve been encountering this issue about random skips on my iPhone for quite some time. The suggested fix of disabling Intelligent Playback Resumption has fixed the issue for me.

p1633088949333200-slack-C02A333D8LQ

Has there been any progress on this particular bug? Iā€™m starting to encounter it now even with Intelligent Playback Resumption disabled and itā€™s making it hard to get through some podcasts as it randomly jumps back or forward

p1643133451260200-slack-C02A333D8LQ

4723649-zen

pocketcasts commented 2 years ago

From Chip:

Leaving notes as I investigate. I haven't been able to reproduce this error yet.

From the device logs in the ticket, I noticed an interesting pattern:

Pause 2022-01-21 08:25:24 Remote control: pauseCommand
2022-01-21 08:25:24 pausing playback
2022-01-21 08:25:24 saving played up to 2816.553585642 for episode The Man Who Built A Gun To Shoot Space
Audio Session Stop 2022-01-21 08:25:28 deactiveAudioSession succeeded
Pause 2022-01-21 08:25:28 pausing playback
2022-01-21 08:25:28 saving played up to 2816.581357628 for episode The Man Who Built A Gun To Shoot Space
Audio Session Stop
(The session didn't reactivate and was stopped twice)
2022-01-21 08:25:31 deactiveAudioSession succeeded
Play 2022-01-21 08:27:01 Remote control: playCommand, treating as playPause

I'm not sure if this is related to the issue but it stood out.

pocketcasts commented 2 years ago

Another similar report:

The pod will all of a sudden repeat itself sometimes 40 seconds worth, other times more or less. Or it will skip forward. Not a timing thing, almost like a bad edit or feed. Most of the time when this happens, the pod just ends a minute or two early. And like I said, in some cases, parts are just missing.

p1644502274803249-slack-C02A333D8LQ

pocketcasts commented 2 years ago

From GeoJunkie:

If it helps, I had another incidence of this yesterday and I happened to keep track of the timestamp within a two-minute window.

Here are the details:

Let me know if there's any other details I can share.

pocketcasts commented 2 years ago

Often the audio will skip back a minute or 30 seconds without me touching my phone at all. This happens regularly. Podcasts have clearly been cutting off before theyā€™re finished by at least a couple of minutes. There seems to be missing audio at the end.

4809432-zen

pocketcasts commented 2 years ago

4782154-zen

pocketcasts commented 2 years ago

Iā€™ve had issues with my podcast suddenly skipping backwards 30 seconds, sometimes 60 seconds randomly. If happens often enough that itā€™s become annoying. Is there something I can do to stop it? (Itā€™s definitely not me accidentally hitting a button, my phone is always locked when it happens).

4830581-zen

pocketcasts commented 2 years ago

Another report: 4793302-zen

pocketcasts commented 2 years ago

Often when Iā€™m listening to an episode, it will skip back and replay a part Iā€™ve already heard, but the episode timer will keep going forward, so the end of the episode gets cut off. Itā€™s super annoying to listen to the same part of an episode twice and then miss the end of the episode.

App Review

pocketcasts commented 2 years ago

From mattwondra:

Also likely related:

Complaints of this seem to go back over a year so not likely a recent regression. Through some spot-checking, it appears that all of these issues happen with podcasts that use dynamic ad insertion, and the user either has auto-downloads disabled or is away from wifi so the episode is streaming. I also see users pausing for a while and then resuming the episode. Users who download, or try on other apps, do not experience this issue.

My understanding is that because we're streaming, that means we're using the AVPlayer. I don't know how that framework buffers/streams content, but my best guess would be that at some point when the app requests content beyond the current buffer, the host starts serving audio with different dynamic content. So once the users gets to that part in the audio, there's a jump (either forward or back).

Since this happens on so many podcasts, and users don't experience this in other apps, it seems unlikely to me that this is an issue with the hosts, and more like something we should be able to fix on our end.

I've turned off Auto Downloads so that I'm always streaming episodes, and I've hit this bug myself several times, often on the Decoder Ring podcast. This podcast does have dynamic ads, and as suspected it happens most often when playing after a long paused period. It takes a while for the playback to catch up and the bug to hit (like 5-10m). I'm trying to find a good instance that I can capture more logs for, but since it comes up sporadically it's hard to pin down.

I also think this bug bit me in a different way recently ā€”Ā The episode stopped with 0:19 left on the clock, and would not play on to completion. The audio for the episode sounded like it was supposed to have ended. Pressing Play would just Pause it again. My guess is, the duration was cached when I first started playing, then later on new dynamic ads were inserted and the episode was 19 seconds shorter. So when I reached the end of playable audio, the player paused (and wouldn't play again), but it didn't advance to the next episode because the player thought I still had 19s of the episode remaining.

pocketcasts commented 2 years ago

5276011-zen

In the "video1" you can see that there is a skip around when the time on the podcast is at 1:28. Then, I archived the episode and played it back again. In "video2" you can see that the location of the original skip is now at 0:56, but the audio plays fine now, joining back to the forward skip at around 1:30. So in the original playback, about 30 seconds were skipped.

pocketcasts commented 2 years ago

5269038-zen

pocketcasts commented 2 years ago

From jgcaruso:

I haven't been able to reproduce this myself "in the wild" listening to podcasts, but I looked at https://github.com/Automattic/pocket-casts-ios/issues/44#issuecomment-1182414157 and watched "video 1" while comparing it to the podcast audio currently on my device.

The timestamp at the point where it seems to "skip ahead" actually matches the audio that plays on my device at that timestamp (1:28). The audio and intro music that is playing at the start of that video clip at 1:20 actually starts around 49 seconds for me. This seems to match what they reported in "video 2"

So I might argue that the audio isn't skipping ahead so much as it has "caught up" to where it should be. Why it is so far behind isn't exactly clear, but this theory about dynamic ad insertion might be a good explanation. Depending on how much time has passed between the initial pause and resume (it is a day or more?) it could have something to do with the podcast inserting different ads on release day vs after release day. If they insert an ad at the start of the podcast on release day, but not the days that follow (this podcast episode has been out for 10 days at this point).

@joashrajin Since the report seems to have been made on June 6 (or was that just when we got back to them?) I wonder if we can make any assumptions about when they actually listened to the podcast, and if they started it on release day (Friday, June 3) but didn't finish it and then continued on Monday June 6? If we could follow up with them, would they remember those details?

Short aside: I'm starting to like this theory because this is how I used to listen to a lot of podcasts on my commutes... I might listen to a few podcasts on friday on my way home and prematurely end one because I arrived home. Then pick it up on monday morning again when I left for work (no weekend listening). So if the podcast changed at all in those 3 days I can see this happening. But this is all anecdotal... I can't actually tell if "The Daily" does different dynamic ads at the start of a podcast on release day, at least not for Canada where I'm listening from since I just listened to today's episode and it doesn't start with an ad. But maybe its different for different cities/states/countries?

Possible Solution If I was to guess at possible solutions to this, if we're able to set a buffer expiration (or just clear the buffer if we know its old) that might solve the problem but the listener would still miss part of the podcast, they just wouldn't know (or probably wouldn't remember) since we start them fresh and they won't hear the jump happen.

@mattwondra You mentioned you've experienced this issue. How much time has passed between "a long paused period". Are we talking about a day, or just a few hours?

pocketcasts commented 2 years ago

From @mattwondra:

How much time has passed between "a long paused period". Are we talking about a day, or just a few hours?

Sometimes, just a few hours. I was binge listening through the back catalog of Decoder Ring and noticed it happen a few times ā€”Ā maybe I played an episode a bit in the morning, then I'd pick it back up that night. A couple minutes after I started playing I'd notice the "skip". (The most important note is this only happens when I've disabled all automatic episode downloading, to ensure that I'm just streaming episodes.)

That podcast definitely has dynamic ads and they must rotate pretty frequently. To verify this, I kept downloading one of their episodes to my computer every couple hours until the download changed. It took less than 24 hours until I downloaded a version of the same episode with a different duration and ads in different spots.

Reproducing this in a way that's easily testable is going to be the biggest challenge ā€”Ā you can't have hours of lag time between code changes to see if you're on to something. My first thought was to do something like:

If it's possible to shorten the amount of buffering the iOS audio player will do, that could help shorten the debug / fix cycle on this too.

If that's reproducible in our iOS app, I'd be curious if this happens in Android as well (I've only ever see iOS reports, even though we have twice as many Android users). I'm also curious if this happens on other apps (Apple Podcasts, Overcast, etc).

if we're able to set a buffer expiration (or just clear the buffer if we know its old) that might solve the problem but the listener would still miss part of the podcast, they just wouldn't know (or probably wouldn't remember) since we start them fresh and they won't hear the jump happen.

This seems like it's on the right track, but my fear is that we'd keep the same number of customer complaints, just for a different issue: Instead of "Your player is skipping parts of my episode" we'd get "Your player doesn't start where I left off".

That said, I don't really know what kind of solution there actually is. We can't control when the source media is changed mid-stream, so unless we develop magical tech to seamlessly stitch the two versions together, there's always the risk of skips while streaming.

The only thing that comes to mind, is silently downloading the whole file once the user starts playing it and keeping that cached until another espisode plays. I wonder if this is how other platforms may get around this issue? But it also feels a little deceptive to users who are on limited data, downloading more than they intended...

One thought I had that could help debug or could even help us explain to users ā€” is it possible to detect when the source media's duration has changed? That would be a clear indicator that the user might encounter this bug. I'd love to see a log of how often this happens. But also, we could show users a message if they open their app soon after we notice the duration discrepancy, informing them that the podcast host has updated the episode while they were listening, which could result in skips. (AKA redirect the user rage at the hosts so we don't take the fall šŸ˜‰ )

pocketcasts commented 2 years ago

+1 at #5293373-zen

Iā€™ve noticed a trend over the last week of podcasts skipping around during playback. Sometimes it replays a minute or two of the podcast and other times it plays some of the podcast, cuts to a different part for 10 seconds, comes back to the original point where it left off, and does it again. Iā€™m currently listening to an episode of the Brain Candy Podcast where it cut off one of the hosts talking and started playing the middle of an interview with a guest (interviews with guests are always saved for the last 20 minutes of the episode and I still have 35 minutes to go).

This has happened before, but not to the same degree. And itā€™s happened for more than one podcast. I can think of a few others Iā€™ve had this issue with in the past if you need more examples, but I know I also had an issue with Drama Queens yesterday. It feels like I only have this issue with podcasts that include ads, but I donā€™t know if thatā€™s correlation and not causation since they all seem to just be audio files, and most podcasts include ads.

I tend to listen to podcasts straight through (meaning I donā€™t skip around between podcasts before finishing one), though may need to pause multiple times depending on when Iā€™m listening and what Iā€™m doing. I listen almost exclusively via the Up Next queue, so it will play the episodes in order of release across multiple shows.

pocketcasts commented 2 years ago

+1 at #5310455-zen

Iā€™ve had a bug lately where many episodes will at random points, skip and jump around the audio track to random places. It will go 10 seconds back, then play through, then 10 seconds back again. Then it will randomly jump forward maybe 45 seconds or more. Itā€™s very disorienting and I just wanted to put it on your radar if it wasnā€™t there already. Iā€™m always using downloaded episodes or a solid internet connection - so itā€™s not the audio buffering or anything

pocketcasts commented 2 years ago

+1 at #5310455-zen

Iā€™ve had a bug lately where many episodes will at random points, skip and jump around the audio track to random places. It will go 10 seconds back, then play through, then 10 seconds back again. Then it will randomly jump forward maybe 45 seconds or more. Itā€™s very disorienting and I just wanted to put it on your radar if it wasnā€™t there already. Iā€™m always using downloaded episodes or a solid internet connection - so itā€™s not the audio buffering or anything

The user came back to say most podcasts they listen to have ads, and this happens after theyā€™ve been listening for a while, and not simply after resuming a paused episode.

pocketcasts commented 2 years ago

From GeoJunkie:

I think @mattwondra is on to something. I turned on automatic downloads and haven't run into the issue since, even after turning intelligent playback on.

pocketcasts commented 2 years ago

The user was asked and responded to the following:

Q: Do you recall when you first listened to the podcast in the video (the approx date)? A: Originally listened to on June 5.

Q: Did you listen to a little of it when the episode first came out and then resume it after a few days? A: Listened to the whole episode straight through.

Q: Does this happen for downloaded episodes? A: Not sure if it happens on downloaded episodes. I would guess that it happens much less or not at all on downloaded episodes.

5356954-zen

CameronMilliken commented 2 years ago

Hey all, I've been having an issue for the last year where audio will skip backwards 5, 15, 30 seconds while listening, often when I'm not touching the phone. Those time estimates are rough, but I can't seem to troubleshoot or figure out what is causing the issue.

App Version: 7.19.3 Device: iPhone12,3 OS: 15.5

5372396-zen

reginabally commented 2 years ago

I love Pocket Casts but Iā€™ve been forced to switch over to Apple Podcasts app because almost every episode of all my podcasts skip sections for no apparent reason.

App Version: 7.19.3 Device: iPhone11,6 OS: 15.5

5410044-zen

CameronMilliken commented 2 years ago

Hey, love the app, recently Iā€™ve noticed podcasts skipping to the next episode in the queue before the episode finishes. I thought these were just weird edits until I went back to an episode and rewound and was able to finish the podcast. I would say this happens about every 5 podcasts or so. The episode it just happened on was the recent episode of the ryen russillo podcast.

App Version: 7.19.3 Device: iPhone13,2 OS: 15.5

5435264-zen

CameronMilliken commented 2 years ago

I have been getting random skips in podcast episodes where it will go back around 30 seconds. It is not happening every episode but several times a week and it does not matter which podcast i am listening too.

App Version: 7.19.3 Device: iPhone14,5 OS: 15.5

5436617-zen

CameronMilliken commented 2 years ago

I have been noticing that a few podcasts that I listen to there will be a skip in the episodes, why is that?

App Version: 7.20.2 Device: iPhone14,2 OS: 15.6

5482774-zen

ezebecke commented 2 years ago

+1 5615494-zd

erricgunawan commented 2 years ago

Any news or status updates about upcoming patches for lost playback? Looking at the App Store reviews, I am not alone with Pocket Casts rewinding spontaneously in episodes during playback or resuming playback and losing all progress. Iā€™m running the latest version of Pocket Casts on the latest version of iOS on an iPhone 14 Pro Max.

App Version: 7.22 Device: iPhone15,3 OS: 16.0.2

5618817-zen

erricgunawan commented 2 years ago

I wanted to report an issue with playback. A strange thing happens where a chunk (like 10 seconds) of audio will be spontaneously skipped in an episode, but the time doesnā€™t skip ahead. At first I thought that it was an editing issue in the podcast episode itself, but then I started noticing it on many different podcasts. I thought maybe I was accidentally triggering a skip ahead somehow (e.g. a headphone malfunction?). But then, tonight, I was listening to a podcast and skipped back a few minutes to re-listen to a section, and as I re-listened, content I had heard a few minutes before was skipped over while I watched the time count down with no skips or gaps. I tried sliding back to the beginning of the episode, then back to the spot I was listening and the content reappeared (e.g., the playback timer was aligned differently with the content then it had been previously). Anyways, no need to reply but I wanted to let you know. It looks like some other users might have had a similar problem here: https://www.reddit.com/r/pocketcasts/comments/sxcdh0/app_skips_forward_in_episodes/

Iā€™m listening on an iPhone SE 2nd gen with an up to date OS.

5632722-zen

erricgunawan commented 2 years ago

after providing feedback that many of my podcast episodes skip back a few seconds or minutes, support suggested I reach out with episode title and the times that the skips happened. This happens regularly- most podcasts Iisten to have this issue.

App Version: 7.23 Device: iPhone14,2 OS: 15.6.1

Logs and sample podcasts provided in details below:

5645208-zen

ezebecke commented 2 years ago

Another case on 5634421-zen

rviljoen commented 2 years ago

Another case from Reddit:

iā€™ve been experiencing a problem for a while, the episode iā€™m listening to will skip forward 15-ish seconds randomly and then a few minutes later will skip back 15 seconds. i just got a new phone and itā€™s happened on both phones, and with various bluetooth devices. iā€™m streaming episodes rather than downloading.

https://www.reddit.com/r/pocketcasts/comments/yvpt3s/skipping_issue

rviljoen commented 2 years ago

If that's reproducible in our iOS app, I'd be curious if this happens in Android as well (I've only ever see iOS reports, even though we have twice as many Android users). I'm also curious if this happens on other apps (Apple Podcasts, Overcast, etc).

Overcast has been fixing streaming bugs related to DAI as well recently. I believe (one of) the fix was for streamed files to always fetch the full file in a single request. When you start streaming an episode, it starts playing immediately and then the status changes to downloaded a few seconds later.

The only thing that comes to mind, is silently downloading the whole file once the user starts playing it and keeping that cached until another espisode plays. I wonder if this is how other platforms may get around this issue? But it also feels a little deceptive to users who are on limited data, downloading more than they intended...

I think this is the cleanest solution. My only suggestion would be to keep the cached file longer, unless the episode is played to completion. I.e. delete cached file when episode is played to the end, but keep for x days if episode is stopped mid-way and something else is played. Else users jumping between unfinished episodes may end up consuming a lot of data (especially on capped mobile plans).

DAI is such a pain...

thabotswana commented 2 years ago

The bug appears to be in your caching of episodes being streamed when on 4g/5g. If I choose to stream an episode invariably at some point the audio will skip ahead during the stream. Rewinding has no effect, the skip repeats. It seems like it may be an issue where the network connection is momentarily dropped and somehow that data is just missed but the caching doesnā€™t realize it missed anything and so it just keeps going.

App Version: 7.26 Device: iPhone15,3 OS: 16.2

5734782-zen

rviljoen commented 2 years ago

@thabotswana If users are attaching the debug logs, can you please check for the presence of either "Using DefaultPlayer" or "Using EffectsPlayer" for the problematic episode? See if there is a pattern, i.e. does this issue happen with only one or both types of players, across user logs?

Looking through the code logic, it seems that when effects are enable, the episode is downloaded even when streaming on a mobile connection. It's a special downloadedForStreaming download state though, with special processing in various parts of the code:

https://github.com/Automattic/pocket-casts-ios/blob/c9a937af6f4d017e337fad91d22915edea4aac57/Modules/DataModel/Sources/PocketCastsDataModel/Public/Enums.swift#L11-L13

When no effects are enabled and users are streaming on mobile, then DefaultPlayer is used which uses the standard iOS AVPlayer, which streams directly from the URL. If we can narrow the problem down to either of these players, then it may be easier to track down the root cause.

joashrajin commented 1 year ago

+1 at 5751295-zd-woothemes

@rviljoen in this case, "Using EffectsPlayer" appears twice, while "Using DefaultPlayer" appears 14 times.

joashrajin commented 1 year ago

Regarding 5734782-zen shared by @thabotswana, that contains 4 instances of "Using DefaultPlayer" and 18 instances of "Using EffectsPlayer". This is for the 21st and 22nd of November

rviljoen commented 1 year ago

@joashrajin That is interesting. Did the users report the exact time of the issue? If so, can you look which player was used at that time, or if there was a change of player type from one to the other at the time of the issue occurring? Also, can you check if the users have any effects (speed, volume boost, trim) enabled for the problematic episodes?

joashrajin commented 1 year ago

@rviljoen We'll try to gather that feedback from them šŸ‘

erricgunawan commented 1 year ago

5749428-zen

for Apple iPhone: recently, while listening, podcast eps will randomly skip back to a previous part of the episode, then jump back to a point in the future. the timestamp in the player does not recognize the skips, thus it is skipping over part of the episode.

Will ask similar questions as the above and update here once more info provided

erricgunawan commented 1 year ago

5736700-zen:

This app jumps back and forth (tho I think mostly forward) thru apps during playback. Like every single time I listen. Itā€™s incredibly annoying. I most often it skipping back a few minutes when Iā€™m approaching the end of an episode.

App Version: 7.26 Device: iPhone14,2 OS: 15.5

Asked for logs and if they have any effects enabled

erricgunawan commented 1 year ago

5776319-zen:

I have been using Pocket casts for quite some time now and really enjoy a lot of the features that the default apple podcast app doesn't have. However, I am constantly having playback problems. For lack of a better way of putting it the podcasts skip. It will just skip back (usually) 15-45 seconds. And then at the end of the podcast it stops with about 30 seconds left and doesn't play the end of the episode. Even if I rewind and listen to the same section again it does the same thing. I have discovered that if I mark the episode as played and then unplayed and start it over and scrub to the same spot in the episode that it plays correctly.

App Version: 7.28.1 Device: iPhone15,2 OS: 16.2

Log provided in the above original report

azollafox commented 1 year ago

5860338-zen

recently my player has been skipping back about 30-45 seconds about every 10-15 minutes (sometimes as often as every 5 minutes) while listening to an episode - it's a pretty annoying bug.

App Version: 7.28.1 Device: iPhone14,2 OS: 16.0.3

Log ID 7E12209D-D3DD-4290-9B03-E668BC02AD30

azollafox commented 1 year ago

Love using this app but recently I have been experiencing the audio skipping during episodes. An example of this happening is during the most recent episode of The Ezra Klein Show with Dan Savage - the aduo skipped several times, cutting out entire chucks of the show - I verified this by listening to the episode on Apple podcasts. Just wanted you guys to be aware.

5858903-zen

App Version: 7.28.1 Device: iPhone15,2 OS: 16.0.3

Log ID B98FD524-E169-47C1-A80D-F04439E02831

twstokes commented 1 year ago

+1 that I'm experiencing this issue now and have in the past.

App Version: 7.29.0.2 Device: iPhone13,3 OS: 16.2

I was playing directly from my phone (no AirPlay) next to a WiFi access point (I doubt network connectivity was a problem).

mdrockwell commented 1 year ago

App Version: 7.28.1 Device: iPhone12,3 OS: 16.2

Iā€™ve been waiting to hear one that did it. Today, This American Life episode 788 did the skip during a commercial break.

I had another experience today. The ā€œShort History Ofā€ podcast, The Potato Famine episode, skipped backwards multiple times during the episode. Specifically between the 33 and 35 minute.

joashrajin commented 1 year ago

App Version: 7.28.1 Device: iPhone12,1 OS: 16.0

5882366-zd-woothemes

azollafox commented 1 year ago

App Version: 7.28.1 Device: iPhone15,2 OS: 16.1.1

Log ID 017711C4-3687-421D-A4DA-6AD284AAFD7D

Episodes affected: The Below Deck Episode w/ Captain Sandy Yawn and The Fake Bootsy Collins w/ Ian Lara

5860739-zd-woothemes

joashrajin commented 1 year ago

5858525-zd-woothemes

I have been using Stitcher for a while and I have discovered that this issue happens with the Dan Lebatard Show on Stitcher as well.

mdrockwell commented 1 year ago

Often when rewinding, it instead jumps forward. This only happens in my iPhone (not android or desktop). It especially often happens when the app is in the background and Iā€™m using the media buttons in the iPhone Lock Screen or in the control center. But it can also happen inside the app itself.

5935557-zd-woothemes

joashrajin commented 1 year ago

Episode where the issue happened was titled ā€œPart One: The Jordan Peterson Episodeā€, timecode at 1:28:46. Time the issues happened was 2/8/23 around 4:18PM CST.

5898671-zd-woothemes

CameronMilliken commented 1 year ago

I hope this message finds you in good spirits. Recently Iā€™ve been experiencing some playback issues. I was listening to a podcast and while enjoying it the episode kept skipping back 5-10mins but continued to play as if it never skipped. When I come across this issues the episode is severely shortened. ĀÆ_(惄)_/ĀÆ

App Version: 7.31 Device: iPhone12,3 OS: 15.5

5982641-zd-woothemes