Automatically play free or already purchased content #584

Closed
opened 2017-09-19 04:29:07 +02:00 by btzr-io · 12 comments
btzr-io commented 2017-09-19 04:29:07 +02:00 (Migrated from github.com)

The Issue

Steps to reproduce

  1. Open a claim video / music ( maybe images and gifs too ).
  2. Click on play / open.
  3. Wait for the content...

Expected behaviour

There should be an option in settings to toggle this feature:
I open a claim and then the video starts playing no need to wait or click to play,
same for images or gifs and music.
( content already downloaded / purchased, obviously ) ^^

Also if I left before a video ends, it should trigger autoplay but:

The video should pick up where it left off (e.g. starting at 03:55, instead of at 00:00

Actual behaviour

Nothing, there isn't an autoplay feature 😛

Anything Else

I think this is also needed in other issues ,
so I'm connecting: https://github.com/lbryio/lbry-app/issues/491 https://github.com/lbryio/lbry-app/issues/579

## The Issue ### Steps to reproduce 1. Open a claim video / music ( maybe images and gifs too ). 2. Click on play / open. 3. Wait for the content... ### Expected behaviour There should be an option in settings to toggle this feature: I open a claim and then the video starts playing no need to wait or click to play, same for images or gifs and music. ( content already downloaded / purchased, obviously ) ^^ Also if I left before a video ends, it should trigger autoplay but: > The video should pick up where it left off (e.g. starting at 03:55, instead of at 00:00 ### Actual behaviour Nothing, there isn't an `autoplay` feature :stuck_out_tongue: ## Anything Else I think this is also needed in other issues , so I'm connecting: https://github.com/lbryio/lbry-app/issues/491 https://github.com/lbryio/lbry-app/issues/579
tzarebczan commented 2017-09-19 04:32:37 +02:00 (Migrated from github.com)

What do we want to happen if the video costs money? Prompt the user automatically for purchase? Don't do anything?

I know there's also a recent change to allow content under a certain LBC/USD to skip the purchase confirmation screen... Also need to decide if those should autoplay, but my guess is no.

What do we want to happen if the video costs money? Prompt the user automatically for purchase? Don't do anything? I know there's also a recent change to allow content under a certain LBC/USD to skip the purchase confirmation screen... Also need to decide if those should autoplay, but my guess is no.
btzr-io commented 2017-09-19 04:35:05 +02:00 (Migrated from github.com)

This is my initial idea:

( content already downloaded / purchased, obviously ) ^^

This is my initial idea: > ( content already downloaded / purchased, obviously ) ^^
btzr-io commented 2017-09-19 04:40:49 +02:00 (Migrated from github.com)

What do we want to happen if the video costs money?

I guess this sounds right to me: Prompt the user automatically for purchase

I know there's also a recent change to allow content under a certain LBC/USD to skip the purchase confirmation screen

One solution could be to force the popup just in this case ( autoplay: on ),
but seems confusing, this needs more thinking ( UX ) ^

> What do we want to happen if the video costs money? I guess this sounds right to me: `Prompt the user automatically for purchase` > I know there's also a recent change to allow content under a certain LBC/USD to skip the purchase confirmation screen One solution could be to force the popup just in this case ( autoplay: on ), but seems confusing, this needs more thinking ( UX ) ^
btzr-io commented 2017-09-19 04:43:24 +02:00 (Migrated from github.com)

@tzarebczan I need it internally so right now the safe / simple way is only for downloaded content

@tzarebczan I need it internally so right now the safe / simple way is only for `downloaded` content
kauffj commented 2017-09-19 15:39:41 +02:00 (Migrated from github.com)

I don't think we need an option or settings for this. People expect content to play.

I'd propose that as a first step, content that is free or already purchased automatically play when rendered by FilePage.

Additionally, if we make this change, I'd like to modify the video loading component to give more of a visual indicator of the content (since you won't see the poster if you simply changed it to autoplay).

I don't think we need an option or settings for this. People expect content to play. I'd propose that as a first step, content that is free or already purchased automatically play when rendered by `FilePage`. Additionally, if we make this change, I'd like to modify the video loading component to give more of a visual indicator of the content (since you won't see the poster if you simply changed it to autoplay).
btzr-io commented 2017-09-19 18:21:18 +02:00 (Migrated from github.com)

I don't think we need an option or settings for this. People expect content to play.

Ok, but disagree with this ( it could be really annoying for some users ), so what if:

  • I click the wrong claim could be nsfw or have annoying music.
  • Volume is at a high level ( 75% - 100% ).
  • I just want to read the description.

I'd propose that as a first step, content that is free or already purchased automatically play when rendered by FilePage.

I think the user should have control of this,
we could set autoplay default to true, but add an option to toggle it ^^

> I don't think we need an option or settings for this. People expect content to play. Ok, but disagree with this ( it could be really annoying for some users ), so what if: - I click the wrong claim could be `nsfw` or have annoying music. - Volume is at a high level ( 75% - 100% ). - I just want to read the description. > I'd propose that as a first step, content that is free or already purchased automatically play when rendered by FilePage. I think the user should have control of this, we could set `autoplay` default to true, but add an option to toggle it ^^
btzr-io commented 2017-09-19 18:31:13 +02:00 (Migrated from github.com)

Allow autoplay disable

Allow the user to disable autoplay in a menu or settings screen.

https://developers.google.com/cast/downloads/GoogleCastAutoplayUXGuidelines.pdf

> #### Allow autoplay disable > Allow the user to disable autoplay in a menu or settings screen. https://developers.google.com/cast/downloads/GoogleCastAutoplayUXGuidelines.pdf
btzr-io commented 2017-09-19 18:40:42 +02:00 (Migrated from github.com)

modify the video loading component to give more of a visual indicator of the content

I don't get this one, care to explain ?
Not sure what else is to show besides the video playing...

> modify the video loading component to give more of a visual indicator of the content I don't get this one, care to explain ? Not sure what else is to show besides the video playing...
kauffj commented 2017-09-19 21:00:54 +02:00 (Migrated from github.com)

I'm fine with an option to disable, but autoplay should be the default behavior. And I'd be fine releasing this without an option.

Regarding the loading component, I'd like the loading display for a video to give more feedback about the content itself, especially if autoplay is added. Currently the loading message is white text on a black background. If content autoplays, it will go immediately to this screen, with no display of the poster (the image for the video).

I think we want to probably still display the poster when content is loading if we add autoplay functionality. Additionally, we should make it possible to cancel/pause a video while it is still loading (pretty sure you can't do this).

I'm fine with an option to disable, but autoplay should be the default behavior. And I'd be fine releasing this without an option. Regarding the loading component, I'd like the loading display for a video to give more feedback about the content itself, especially if autoplay is added. Currently the loading message is white text on a black background. If content autoplays, it will go immediately to this screen, with no display of the poster (the image for the video). I think we want to probably still display the poster when content is loading if we add autoplay functionality. Additionally, we should make it possible to cancel/pause a video while it is still loading (pretty sure you can't do this).
tzarebczan commented 2018-04-04 04:20:26 +02:00 (Migrated from github.com)

Discussed @daovist's PR for this issue recently and these are the scenarios he mentioned:
free, not downloaded: play
free, downloaded: play
costs, downloaded: play
costs, not downloaded: do nothing, let them click for purchase modal

Can we first clear up these questions/comments?

  1. We only want to autoplay image and video content types, correct?
  2. Do we really want the default setting to be on? Autoplay is intrusive on other apps I've used. Maybe we auto play the first time around and then alert the user to the setting? btzr has some good examples when autoplay is not wanted in his comment above. The other concern here is disk space - with each download you get the content + blobs (so 2x the file size) which can add up pretty quickly if just browsing videos in the app without intending to play them.
  3. We need the better indication that content is starting to download while leaving the thumbnail on the screen, correct? Then we'd probably want to start playing after a few MB (what's the threshold?) are written to the file for content that supports streaming (i.e. is web optimized), but for content that isn't we'd want to keep the thumbnail up until fully downloaded (normally this would be the "waiting for metadata" state). Also, each blob is 2MB - I've run into issues where larger files has less data in each blob, so the player would start, but then stop because it played quicker than it could get the blobs.
  4. While 3) notifies the user the download started, allow user to click cancel by calling the file_delete API - https://lbryio.github.io/lbry/cli/#file_delete (tested - working as expected). The claim page would need to be "refreshed" to reflect that the file stopped (right now it just shows the percentage at which it stopped).

In terms of content that costs money, even if its less than the Purchase Confirmations threshold, I think autoplay should be disabled and not alert the user to purchase the content upon entering the file page.

Discussed @daovist's PR for this issue recently and these are the scenarios he mentioned: free, not downloaded: play free, downloaded: play costs, downloaded: play costs, not downloaded: do nothing, let them click for purchase modal Can we first clear up these questions/comments? 1) We only want to autoplay image and video content types, correct? 2) Do we really want the default setting to be on? Autoplay is intrusive on other apps I've used. Maybe we auto play the first time around and then alert the user to the setting? btzr has some good examples when autoplay is not wanted in his [comment above](https://github.com/lbryio/lbry-app/issues/584#issuecomment-330593690). The other concern here is disk space - with each download you get the content + blobs (so 2x the file size) which can add up pretty quickly if just browsing videos in the app without intending to play them. 3) We need the better indication that content is starting to download while leaving the thumbnail on the screen, correct? Then we'd probably want to start playing after a few MB (what's the threshold?) are written to the file for content that supports streaming (i.e. is web optimized), but for content that isn't we'd want to keep the thumbnail up until fully downloaded (normally this would be the "waiting for metadata" state). Also, each blob is 2MB - I've run into issues where larger files has less data in each blob, so the player would start, but then stop because it played quicker than it could get the blobs. 4) While 3) notifies the user the download started, allow user to click cancel by calling the file_delete API - https://lbryio.github.io/lbry/cli/#file_delete (tested - working as expected). The claim page would need to be "refreshed" to reflect that the file stopped (right now it just shows the percentage at which it stopped). In terms of content that costs money, even if its less than the Purchase Confirmations threshold, I think autoplay should be disabled and not alert the user to purchase the content upon entering the file page.
daovist commented 2018-04-04 17:35:29 +02:00 (Migrated from github.com)

Here is a rough plan for implementing this feature @liamcardenas

This was if (autoplay) play(uri); in my first PR for this issue but when we factor in downloaded files, cost paid/unpaid, starting downloads before playing, waiting until enough data has been downloaded to start playing, etc. this is much more complex.

  1. Get all the selector data (and constants) together for a FilePage component method to be called by DidMount and ReceiveProps. This includes the autoplay setting, fileType, cost, nsfw, isPlaying, downloadProgress, paid, startPlayingThreshold, etc.

  2. Get all the actions together in said method, including play, startDownload, and something like setBufferingInfo to be displayed in step #4.

  3. Write the component method to check conditions (to be determined in this thread). When a condition is met it calls the proper actions (and possibly returns). With #1 and #2 setup, this method will be simple to adjust based on decisions made here, so I can move forward before this is fully ironed out.

  4. Make FilePage and its child components to display information about the download situation to the user along with buttons for pauseDownload and maybe disable Autoplay.

Here is a rough plan for implementing this feature @liamcardenas This was `if (autoplay) play(uri);` in my first PR for this issue but when we factor in downloaded files, cost paid/unpaid, starting downloads before playing, waiting until enough data has been downloaded to start playing, etc. this is much more complex. 1) Get all the selector data (and constants) together for a `FilePage` component method to be called by DidMount and ReceiveProps. This includes the `autoplay` setting, `fileType`, `cost`, `nsfw`, `isPlaying`, `downloadProgress`, `paid`, `startPlayingThreshold`, etc. 2) Get all the actions together in said method, including `play`, `startDownload`, and something like `setBufferingInfo` to be displayed in step #4. 3) Write the component method to check conditions (to be determined in this thread). When a condition is met it calls the proper actions (and possibly returns). With #1 and #2 setup, this method will be simple to adjust based on decisions made here, so I can move forward before this is fully ironed out. 4) Make `FilePage` and its child components to display information about the download situation to the user along with buttons for `pauseDownload` and maybe `disable Autoplay`.
kauffj commented 2018-04-04 18:50:25 +02:00 (Migrated from github.com)

I think there are enough reasonable concerns in this thread that we should just default to autoplay off. Thank you for your thoughtfulness @btzr-io @daovist @tzarebczan

I do support other changes to make it more obvious to the users that this feature exists (e.g. a notification that asks whether they want to turn it on the first time they play a video), as well as giving users more feedback that autoplay can use a lot of disk space.

But let's not get this blocked from shipping over scope creep. Safest thing to do is to just add the feature but have the setting start off.

And it does seem like disk space management should be climbing up the daemon todo, but it's not going to trump performance concerns.

I think there are enough reasonable concerns in this thread that we should just default to autoplay off. Thank you for your thoughtfulness @btzr-io @daovist @tzarebczan I do support other changes to make it more obvious to the users that this feature exists (e.g. a notification that asks whether they want to turn it on the first time they play a video), as well as giving users more feedback that autoplay can use a lot of disk space. But let's not get this blocked from shipping over scope creep. Safest thing to do is to just add the feature but have the setting start off. And it does seem like disk space management should be climbing up the daemon todo, but it's not going to trump performance concerns.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
LBRYCommunity/lbry-desktop#584
No description provided.