Giter Club home page Giter Club logo

metastream's People

Contributors

airon90 avatar art-gur avatar austincarr avatar bissy avatar bodzy avatar cedws avatar ceifa avatar darknuju avatar dependabot[bot] avatar enmiri avatar ghj1214kr avatar hattshire avatar heyimnitho avatar ifelix18 avatar imhoppy avatar imloplop avatar inakeii avatar kabanfriends avatar kaicode2 avatar lavenderthegreat avatar mglbthirshe avatar mhamadmc avatar samuelmaddock avatar semro avatar sxigames avatar thomassth avatar turkishlator avatar willhh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

metastream's Issues

Improve browser security

Metastream is built using Muon, a fork of Electron for building secure browsers. Muon is being developed by Brave and will soon be abandoned in favor of their own Chromium fork.

While forking Chromium would be ideal for this project, I don't have the resources to do so. This leaves the option of switching back to using Electron.

Electron has recently made some good progress in keeping up-to-date with Chromium (electron/electron#13756) and improving sandboxing support (various). It will need to be evaluated if we can get the same level of security using Electron now, assuming they eventually catch up with Chromium.

One roadblock for using Electron is the lack of a Chrome Extensions API (electron/electron#1498). Metastream's media synchronization is built on top of Muon's extensions API, although it might be possible to implement using a preload script. This also means adding extensions like uBlock Origin would no longer be possible.


General

Update: https://blog.samuelmaddock.com/posts/google-widevine-blocked-my-browser/

Electron contributions roadmap

  • Fix Chrome extensions in sandboxed renderer. electron/electron#16218
  • Execute content scripts in isolated world. electron/electron#17032
  • Support all_frames content script option. electron/electron#17258
  • Disable window resize when using HTML5 Fullscreen API. electron/electron#17203
  • Use Chromium implementation of extensions in Electron. electron/electron#17440
  • Implement chrome.* APIs to support advanced extensions such as adblockers.
  • Add ipcRenderer API to content scripts to support Metastream media remote extension. Or figure out another way to pass messages between renderer and content scripts.

Setup CI

It'd be nice if Metastream had continuous integration setup to automatically create new builds.

I'm not yet sure how this would work with an Electron-based app and possibly with codesigning.

Chat UI suggestions

A configurable fade time for chat would be nice - it fades a little quickly. Maybe also allow the chat to always be displayed.

Also, being able to drag the edges and resize the chat would be useful (somewhat related to #18).

Add documentation

  • Describe core systems
    • Networking (Swarm P2P, WebSockets)
    • Redux RPC
  • Guide for supporting new streaming websites

Let me know what other documentation would be useful for people.

Consider supporting local video files

A lot of us use local files and it will be great to be able to watch them together. I don't think it should be that difficult, maybe check if all participants are using the same file and then play the files together?

Switch to using GitHub releases

Release binaries are currently available through a private Amazon S3 account I'm using. GitHub releases will be a better option going forward after open sourcing.

Bookmarks

ability to add local or even account based bookmarks (if you go that route) on the add selection page. (maybe next to the the recommended websites like youtube and etc.)

Audio only mode

Adding ability to just make the session audio only. for listening to music, podcasts and etc. together with other people.

Add Local Data support

How about a feature that lets you add local files?
So that you can watch series you own together with friends that are nor around

Allow Right Click Functions

The program doesn't allow copying or pasting with the right clicking. Both functions are allowed through the Control functions, but it would be easier to use if you could right click.

Internationalization

edit: Localization is now supported. See contribution guide for localizing.

I'd love to be able to support new languages for Metastream. I've started moving strings into their own location https://github.com/samuelmaddock/metastream/tree/master/app/locale

Still need to put some thought into how language changing would affect UX. Also need to implement a way for mixing in strings as in ${username} has added "${mediaTitle}" to the queue.

Anyone have recommendations for how to coordinate the community in adding translations? It probably wouldn't be great to force them to fork the Git repo.

Network Timed Out

Is there any way to fix this without doing the direct connection port forward thing?
I really dont want the port forward way.

Out of sync client playback indicator

When a client's local video stream falls out of sync with the session playback time, display an indicator that they're behind. If clicked, it will go away and attempt to resync the video.

Due to video buffering, it may not be possible to ever be 100% in sync depending on the video service. Some kind of buffering prediction could help mitigate this by seeking a little ahead of the session time to counteract buffering time.

Currently the only way to fix being out of sync is to use the Reload button in the playback bar's extra menu OR have the host seek/playpause.

Choose language

If someone is from Portugal for example, He/She will want to use Brazilian Portuguese, so it can use it.

Linux support

As far as I can tell, there's nothing native specific here right? Just needs to be built and packaged? I can help.

Ethereum Swarm

Hi.
Is it possible to use Ethereum Swarm in your app?
Do you support bzz:/ urls?

Playing episode on Netflix

  • Metastream Version: Beta 0.1.4
  • OS Version: Windows 10 Home 64-bit

After logging in to Netflix and selecting the series for example Big Mouth Metastream plays the trailer of the series instead of the episode. This error is in most series, but there are cases where the series is played normally for example Your lie in April.

netflix

Add website gate

Users should be protected from websites others have requested into the queue. It would be a good idea to prevent showing websites until the client explicitly approves showing them.

A default allowed list could be included with sites like youtube.com, twitch.tv, etc.

Request Timestamp change

Letting normal or any users request a timestamp change.

in concept normal users can hover over the media controls bar in the timestamp bar, they get a line where they can see exactly where they going to click on hover.
in addition on hovering over the timestamp with mouse you could see a image preview to know exactly where you want to request a timestamp change (similar to something like YouTube player).
After you find where you want to your timestamp change, you just click on the time u want and then you get a pop up confirmation menu/box where you can select "Request" or "Close". On Request, the host or DJ will see a small popup message bubble on top of the timestamp bar where the time change has been requested saying "User123 has requested timestamp change" . it does fade away after (selected seconds) and it will just be a small circle perhaps on top of the timestamp bar and not visible if idle. then if the host wants to do the change he can click on the circle and it will open a confirmation menu/box with options to "Change to 00:00" and "Ignore" or "Deny". and then it just changes to that specific time. this should also be a session option that can be turned off if the host gets annoyed or whatever.

Use cases would be if someone missed something they can always Request for going backwards or if someone for example wants to show something they can request to that point of the video to show it

Adult Swim plays ad then goes to next in queue

  • Metastream Version: 0.1.3
  • OS Version: Windows 10 Home

Steps to Reproduce:

  1. Go to a show on adult swim
  2. Select an episode
  3. Add to queue
  4. Ad plays, then video ends, and next in queue is played instead of the episode selected.

Stay on Page when adding videos

Something that would be convenient would be the ability to stay on a page after adding a video to the list. That way you don't need to keep reloading sites if you want to add multiple videos from the same playlist/series/channel.

Changing system clock breaks playback time

  • Metastream Version: 0.1.2
  • OS Version: Windows, macOS

Steps to Reproduce:

  1. Connect to session hosted on another machine.
  2. Change system clock.
  3. Request and play new media.

The media playback time will be off on the client as the server clock skew was never updated.

Completely unable to function

  • Metastream Version: (cant open main menu but I think it is 0.1.3)
  • OS Version: Windows 10

Steps to Reproduce:

1.Install metastream
2.
image

vrv.co and crunchyroll.com issues

A few issues to look into

  • Auto-fullscreen not always activating properly on vrv.co.
  • Queued episodes can result in playback stutter, requiring play/pause to fix.

VRV

VrV is completely nonfunctional. I cant watch anything with my buddy who already has an account, yet can see the scrubbing bar and everything

Dynamic UI Boxes

Adding a function/keybind to move the UI boxes on the session UI or even toggle them (only visible on hover maybe?) .
like lets say I could move the chat freely where I want it to be, like being it on the left side.

libsodium fails to load on older versions of macOS

  • Metastream Version: 0.1.2
  • OS Version: macOS 10.10.5 Yosemite

Steps to Reproduce:

  1. Open Metastream app.

Observe JavaScript error:

Uncaught Exception:
Error: dlopen(/Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/node-67.node, 1): Library not loaded: @loader_path/libsodium.dylib
  Referenced from: /Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/node-67.node
  Reason: no suitable image found.  Did find:
    /Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/libsodium.dylib: code signature invalid for '/Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/libsodium.dylib'

    /Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/libsodium.dylib: code signature invalid for '/Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/libsodium.dylib'

    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:168:20)
    at Object.Module._extensions..node (module.js:596:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:182:18)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at load (/Applications/Metastream.app/Contents/Resources/app.asar/node_modules/node-gyp-build/index.js:13:10)
    at /Applications/Metastream.app/Contents/Resources/app.asar/node_modules/sodium-native/index.js:1:186

Crash on join via Friendcode.

Error: stream.push() after EOF
    at readableAddChunk (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\node_modules\readable-stream\lib\_stream_readable.js:264:1)
    at Decoder.module.exports../node_modules/swarm-peer-server/node_modules/readable-stream/lib/_stream_readable.js.Readable.push (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\node_modules\readable-stream\lib\_stream_readable.js:238:1)
    at Decoder.module.exports../node_modules/swarm-peer-server/node_modules/readable-stream/lib/_stream_transform.js.Transform.push (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\node_modules\readable-stream\lib\_stream_transform.js:146:1)
    at Decoder.module.exports../node_modules/swarm-peer-server/node_modules/length-prefixed-stream/decode.js.Decoder._push (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\node_modules\length-prefixed-stream\decode.js:28:1)
    at Decoder.module.exports../node_modules/swarm-peer-server/node_modules/length-prefixed-stream/decode.js.Decoder._parseMessage (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\node_modules\length-prefixed-stream\decode.js:57:1)
    at Decoder.module.exports../node_modules/swarm-peer-server/lib/socket.js.Decoder._transform (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\lib\socket.js:22:1)
    at Decoder.module.exports../node_modules/swarm-peer-server/node_modules/readable-stream/lib/_stream_transform.js.Transform._read (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\node_modules\readable-stream\lib\_stream_transform.js:182:1)
    at Decoder.module.exports../node_modules/swarm-peer-server/node_modules/readable-stream/lib/_stream_transform.js.Transform._write (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\node_modules\readable-stream\lib\_stream_transform.js:170:1)
    at doWrite (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\node_modules\readable-stream\lib\_stream_writable.js:406:52)
    at writeOrBuffer (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\node_modules\readable-stream\lib\_stream_writable.js:395:1)
    at Decoder.module.exports../node_modules/swarm-peer-server/node_modules/readable-stream/lib/_stream_writable.js.Writable.write (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\webpack:\node_modules\swarm-peer-server\node_modules\readable-stream\lib\_stream_writable.js:322:1)
    at Connection.ondata (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\node_modules\readable-stream\lib\_stream_readable.js:619:20)
    at emitOne (events.js:96:13)
    at Connection.emit (events.js:191:7)
    at addChunk (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\node_modules\readable-stream\lib\_stream_readable.js:291:12)
    at readableAddChunk (C:\Users\Sorin\AppData\Local\Programs\metastream\resources\app.asar\node_modules\readable-stream\lib\_stream_readable.js:278:11)

Metastream errors on launch when missing VC++ dependency

If you're coming from Google, please see the FAQ for general questions.


  • Metastream Version: 0.1.2
  • OS Version: Windows 10

Steps to Reproduce:

  1. Open Metastream without Visual C++ dependencies.
Error: The specified module could not be found.

chrome_2018-09-16_03-14-16g3sv

To fix this, the user needs to install Visual C++ Redistributable for Visual Studio 2015
https://www.microsoft.com/en-us/download/details.aspx?id=48145

This error should be caught on startup and a dialog should instruct the user to download this.

Chat Coloring

Like changing text color, giving it shadow, adding a backdrop fade for better reading. (not only when using the chat).

Reactions

something similar to rabb.it's reacting emojis on the bottom that pops up on the whole screen.

Host migration

When a host has to disconnect from a session, everyone else has to disconnect as well. By implementing host migration, other users could continue the session uninterrupted.

A deterministic strategy for selecting a new host needs to be decided. That host will need to create a new lobby and retain the existing media from the session.

If host migration fails, perhaps users could iterate through the next candidate.

Disable back button keys

  • Metastream Version: 0.1.2

Steps to Reproduce:

  1. Create a new session
  2. Press forward/back buttons on mouse (mouse4/5)

The app will navigate back to the main menu. It would probably be a good idea to disable this since it might unexpected.

Interact mode hint

Users can double-click on a page to interact with it. This isn't intuitive and needs some better instructions.

Current thinking for a solution is to add a hint that follows the cursor when a user clicks on the screen.

Double-click to interact with the webpage.

Duplicate names are allowed in session

When a user joins a session with the same name as an existing user in the session, there's no way to differentiate them.

Users with the same name should have a duplicate count added to the end of their name. e.g. Sam (2)

Add session maximum user limit

Add an option to the session settings menu for changing the max user limit for the session. Should still allow limit to be turned off (maybe 0 is equivalent to infinite?).

Reflect this change in Discord RP invites.

Start up Session Page Option

At the moment when you make a new session its going to open the last url u added from the last session you made (Pick up where you left off way of doing it). Maybe a better solution would be something like the settings in google chrome where you can pick between:

  • New Tab
  • Pick up where you left off
  • Open a specific page or pages

In Metastream it could be something more like this:

  • No media on starting up session
  • Pick up where you left off (default)
  • A specific media on start up

Large list of queued media breaks networking

  • Metastream Version: 0.1.3
  • OS Version: Windows 10 64-bit

Steps to Reproduce:

  1. Add a lot of media to the queue (10-40), each with video descriptions.
  2. Skip to the next media in the list.

Observed: Client fails to parse update payload and doesn't display new media.

The delta update may be inefficiently networking the shift of items in the queue, resulting in a large payload size. The payload is likely broken up into fragments which aren't being accounted for.

feature request

I just find out this program and its amazing. I know u could do something similar with vlc player but only with actual video links and not whole web sync.
Anyway I wanted to ask if you could add a adblock feature. especially for muting video ads. (didnt know it supports chrome extensions)
Another thing is to have link invites instead of codes. And also for public rooms, make something similar to plugdj or rabbit. where you can see a lot of rooms and you can just join any public room to watch with anyone. Also could you please add a chat customization? like so you can move it somewhere else of the screen, toggle it off, add custom backdrop to make it more readable and etc.

Thanks for the work tho, its amazing thing for small or even big communities that want to watch things together.

Different key/Key bind for interaction mode

A lot of video players will go out of full screen if you press escape, yet you also need to press escape to cancel out of Interact mode, so maybe this key can be changed or you can rebind it?

Inefficient replicated array deltas

When a large media queue or user list has an item removed, the resulting delta replicated to clients is much larger than it needs to be. Often shifting multiple items in the array instead of simply removing one.

The data structure used for arrays of objects could be changed to an array of object IDs which then index into a map.

interface Item {
    id: string
}

interface State {
    items: string[]
    itemMap: { [key: string]: Item }
}

The resulting delta would still replicate multiple shifted entries, but they would be small strings instead of entire objects.

Other solutions

  • jsondiffpatch is a library which seems to implement this efficiently, but would require swapping out the current diffing library, deep-diff.
  • JSON Patch is a standard for JSON objects to describe changes. There doesn't seem to be an efficient implementation for the array shifting issue though.
  • Use Operational Transform networking model instead of JSON deltas. Redux actions can be sent directly.

App does not close when closing window on Mac

  • Metastream Version: Beta 0.2.2
  • OS Version: macOS Sierra 10.12.6

Steps to Reproduce:

  1. Open app
  2. Close window

Additional Observations:

Attempting to use view menu commands causes the following message:
image

Got a error after dowloading

  • Metastream Version: 0.1.4
  • OS Version: Mac

When I downloaded Metastream on my new mac then out of know where this error pops up after downloading it

Error:

dlopen(/Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/node-67.node, 1): Library not loaded: @loader_path/libsodium.dylib
Referenced from: /Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/node-67.node
Reason: no suitable image found. Did find:
/Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/libsodium.dylib: code signature invalid for '/Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/libsodium.dylib'

/Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/libsodium.dylib: code signature invalid for '/Applications/Metastream.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/prebuilds/darwin-x64/libsodium.dylib'

at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:168:20)
at Object.Module._extensions..node (module.js:596:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:182:18)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at load (/Applications/Metastream.app/Contents/Resources/app.asar/node_modules/node-gyp-build/index.js:13:10)
at /Applications/Metastream.app/Contents/Resources/app.asar/node_modules/sodium-native/index.js:1:186

Public session directory

Join Random to watch stuff together. give the public stream a title and people can search for it. with also temp thumbnails that auto generate every hour or so (similar to twitch).
Concept: (don't judge for using netflix covers cba to get good ones)
metastream_2018-09-16_17-31-20

Failure to fit screen size when using fullscreen

  • Metastream Version: Beta 0.1.2
  • OS Version: Windows 10 Pro, V 1803, Build 17134.228

Steps to Reproduce:

  1. Maximize Metastream
  2. Go fullscreen.
  3. Click the Maximize Window button twice.
  4. Exit fullscreen.
  5. Minimize window.
  6. Enter fullscreen.

Picture of issue: https://i.imgur.com/Ybo4xv6.png

Other notes: Despite going fullscreen, the taskbar does not disappear. It is also a 50/50 chance of replicating it perfectly every time, as it takes some playing around with fullscreen and minimizing/maximizing. It's a very strange bug, but others might wonder what is happening in the future.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.