Chocobozzz / PeerTube

ActivityPub-federated video streaming platform using P2P directly in your web browser
https://joinpeertube.org/
GNU Affero General Public License v3.0
13.07k stars 1.5k forks source link

Synchronized video playback among other users #357

Closed fredsif closed 4 years ago

fredsif commented 6 years ago

Hi,

I was wondering if it could be possible to add a feature into Peertube so that users can watch a determinate curated playlist in synchronization with others, making it something like "live stream"-esque

rigelk commented 6 years ago

You don't need a playlist to synchronise video playback with other users.

If you really need to do it accross a playlist, then we should wait for #14 to be implemented.

fredsif commented 6 years ago

Alright, will wait until the playlist option is working

Chocobozzz commented 6 years ago

@fredsif could you explain your use case? I don't really understand why you want to sync a playlist between users.

fredsif commented 6 years ago

It's more or less like a TV channel. Simultaneous viewers can watch the same content.

My goal is to have something like Youtube live/Youtube gaming/Twitch, with a chatbox on the side to make it social so people can discuss the videos while they are being played.

But since Webtorrent live streaming isn't ready, that could be a nice compromise for the moment.

Chocobozzz commented 6 years ago

Okay, so I think you want live streaming: https://github.com/Chocobozzz/PeerTube/issues/151

kevATin commented 5 years ago

@Chocobozzz I believe this feature request differs from live streaming or playlists, in that what @fredsif appears to want is synchronised watching with other people. I think the easiest way to do this would be to let users share a video with an URL that contains an optional key specific to this share, and every viewer who watches with the key has their video timestamp synchronised with the "master" user. Maybe you could specify during URL sharing whether you want your user to act as a master and others as slaves, or whether everyone should be equal and if anyone in the group pauses/changes timestamp, it changes for everyone.

Currently the only way to do something like this (apart from sharing a video link with your friends and tediously counting down in a chat window to when you click start and hoping you are somewhat in sync) is to set up a live stream (or video chat on another platform) with the existing video that you want to watch together. Which uses a much bigger amount of resources in total than simply having multiple users watch one existing video together and simply sending their current timestamp and play/pause actions back and forth. Plus users might not have the license rights to upload/distribute the video themselves, making synchronised watching the only way to legally view the content over a distance with someone else.

From what I know this currently isn't possible to do in PeerTube nor in most other video platforms. There are some browser extensions and websites that offer this feature but they rely on centralized third party servers to connect users: https://togethr.tv/ https://togethertube.com/ https://www.watch2gether.com/

It might make sense to use a live-streaming-esque interface for this, with chat, and possibly advanced features such as voting as to which video should come next in the synchronised playlist or which timestamp to jump to, or whether the group should have a five minute pause, etc. This feature could be implemented as simple as a URL with a key and a video player whos timestamp moves by itself, or as complex as a full live stream room where the only difference is that instead of the backend part being live streamed all the content already exists on the server beforehand, and can therefor be cached by users.

Nutomic commented 5 years ago

This would also be a great way to take advantage of the p2p sharing of videos. Right now that feature is almost unused because there arent enough users watching the same video.

rigelk commented 4 years ago

I stumbled upon https://github.com/brandonocasey/videojs-group-play, which does just this, at the videojs level.

Adds a button that must be clicked to start group play. Clicking add a hash to the url and then that link can be shared. There is already a hash in the url that will be used and everything be automatically setup.

While fairly recent and up-to-date with videojs, it seems like a POC, and marks as TODO the following:

Chocobozzz commented 4 years ago

Closing this issue (see my comment on https://github.com/Chocobozzz/PeerTube/issues/2806#issuecomment-679996873). This feature can be implemented using PeerTube plugins.