GithubHelp home page GithubHelp logo

mafintosh / playback Goto Github PK

View Code? Open in Web Editor NEW
2.0K 82.0 237.0 1.28 MB

Video player built using electron and node.js

Home Page: https://mafintosh.github.io/playback/

License: MIT License

CSS 15.42% JavaScript 78.58% HTML 6.00%

playback's Introduction

Playback

Video player built using electron and node.js

Features

  • Plays .MP4 and .WebM videos
  • Streaming to Chromecast
  • Streaming from http links, torrent magnet links, and IPFS links
  • WebTorrent support โ€“ can torrent from/to WebRTC peers ("web peers")

Installation

To install it download the latest release for your platform.

Currently supported releases:

  • OS X
  • Windows
  • Linux (not supported yet)

Pull requests are welcome that adds builds for other platforms.

If you think it is missing a feature or you've found a bug feel free to open an issue, or even better sending a PR that fixes that.

Development

Simply clone this repo and run npm install and then npm run rebuild. Afterwards you can run npm start to run the app.

License

MIT

playback's People

Contributors

balupton avatar bmathews avatar cesine avatar daisuke-nomura avatar deliciousfudge avatar fbaiodias avatar feross avatar freeall avatar gesslerpd avatar jbenet avatar jlord avatar kapetan avatar mafintosh avatar max-mapper avatar mikkkee avatar phated avatar tsvetilian-ty avatar vorot93 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

playback's Issues

Subtitles when casting

When you have subtitles on a playing movie, they are not sent to the chromecast together with the video.

magnet link protocol handler

would be cool if playback could register it self as a magnet: protocol handler so it would autoplay magnet links when you press them

Torrent-stream/jPlayer esque API

Something which I really like about Torrent-Stream, Webtorrent, and jPlayer is its simple to use API. The ability to easily programmatically add/play content and download/seed torrents would allow for easy client customization.

i.e:

player.addToPlayList({ URL: 'http://xxx.xxx/aaa.torrent', autoPlay: true, cacheLocation: 'file://${__dirname}/torrentCache' })

and

player.play('URL')

transcoding using ffmpeg/libav

it should be possible to embed a ffmpeg/libav binary and do automatic transcoding

this should be done as a third party module (or set of modules) to keep the amount of code in this repo as low as possible

if you are interested in helping out with this, leave a comment below

Auto-play next file in series

MPlayerX has this feature:

No play-list? Not really necessary.
As long as the file names are numbered in any guessable pattern, MPlayerX could find the next episode in the same folder for you.

http://mplayerx.org/

  • Find next episode in same folder (MPlayerX has this)
  • Support episodes that are nested in folders (move in and out of folders to find next episodes)

Tiny pause between tracks on a playlist

If you're listening to a musical or something where all the tracks flow into each other, it would be nice to not have to hear that slight pause when going to the next track on a playlist. It's a very short pause and it's not that jarring, but it is noticeable. Maybe there's something that could be done with preloading the next track on a playlist??

Running code on Ubuntu 14.04 gives lodash error

Node/JS newbie here, so this might not be a playback-specific error.

I cloned the playback source code to my desktop and ran npm install, which seemed to go okay. But npm run returns me this:

> [email protected] start /home/deliciousfudge/playback
> electron app.js

[28571:0516/175956:ERROR:browser_main_loop.cc(171)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
[28601:0516/175957:INFO:renderer_main.cc(200)] Renderer process started
[28571:0516/175957:WARNING:cache_util.cc(86)] Unable to delete cache folder.
[28571:0516/175958:INFO:CONSOLE(326)] "Uncaught Error: Cannot find module 'lodash/object/assign'", source: module.js (326)

My google-fu is failing me, as I can't find any info on the error. Does anyone have any suggestions?

UI feedback when dropping a subtitle

Brilliant work gents. You just made my Chromecast worth its price.

A tiny improvement would be to give feedback in the UI when one drops a subtitle on the cat. Currently, you don't know if it registered or not.

"playback://" protocol support for Windows

I've been looking to get 'playback://' support for windows running.
I tried compiling the project to a win32 package and adding the protocol to Windows using the following registry key:

REGEDIT4

[HKEY_CLASSES_ROOT\playback]
@="URL:playback Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\playback\shell]

[HKEY_CLASSES_ROOT\playback\shell\open]

[HKEY_CLASSES_ROOT\playback\shell\open\command]
@="\"D:\\Node\\Projects\\playback-win32\\playback.exe" \"%1\"" 

This doesn't appear to work.
Clicking a magnet or playback:// link and trying to run it with the generated executable doesn't seem to be working on Windows. In both cases it just launches the splash screen, as where on OSX it would start streaming the related magnet link (or other media linked in playback://).

Edit:
I also tried adding the protocol manually to Firefox. When I select the .exe to launch the protocol with, it also simply starts the app without streaming.

Mobile Remote Web UI

It'd be great to have a mobile UI in the form of a web app that mobile devices could load in a web browser and control Playback with.

play queue

Play Queue is not good enough to let you find the files you want. files are mixed up, no folders.
you got to build a library on it so it makes the searching easier, and the app nicer. Thanks

Playback.app have .git folder packaged

Just look at Playback.app in Content/Resources/app/.git

IMHO, this folder is not needed in packaged app.

Did not examine build process yet, but maybe some script for packaging can be tuned just to remove this folder.

Offline Download Option Like Youtube

You know youtube's app for the phone has this offline download option where the video is buffered and kept for offline use? I think this software also needs something like that.

Also I think the queue should be saved so that ever time you restart the program you dont have to re - stream the video.

icon

we need a custom icon for the .app file

Loading screen

Show a loading screen when waiting to play from bittorrent

Atom menus and Open option

๐Ÿ‘‹ @mafintosh!

I will try and poke around on this this weekend, but for the sake of documenting:

  • When opening from CLI:
    • App is called Atom
    • Has "Quit Atom", "About Atom" options
    • Open is not available
  • When launching from Mac search
    • App is called Playback
    • Has "Quit Atom" option
    • Open is not available

From CLI:

๐Ÿ• ๐Ÿ•

From launch:

๐Ÿฐ ๐Ÿฐ

youtube playlist + offline support

the killer feature for me (that isnt implemented yet) is youtube playlist support with offline

use case: open a youtube playlist url in playback. it should add all videos to the playlist. then it should immediately download all videos in the playlist so I can watch them offline

this would require a sort of 'downloads' folder I think for downloaded videos to go in to

Support for seeding previously downloaded items

A growing problem with streaming apps is that there's a decreasing amount of long term seeders.

A solution would be the option to specify a download/stream folder that doesn't automatically clear on close. When the player opens, it automatically starts seeding the files inside. This way every time you stream content or have the player running you'll give back to the community by seeding your streamed content. This could be an optional feature which people can choose to turn on.

Prevent Sleep

I'm opening this and pledging to do it!

Currently your computer can fall asleep and ruin your viewing experience. There is an Electron API for this! I've known this and been thinking about doing this and am holding myself more accountable with this issue ๐Ÿ”œ

Feature Request: Specify Temp Download Location

Hi,

Would be nice to have a few options in the app.

First I would like to be able to specify the Temp download path.

That is, the location of where data is stored (downloaded files and torrent files).

Current all data is stored @ %Temp%\webtorrent

Not good. OS is installed on a small SSD. Will fill up quickly.

So I need to be able to tell it to store files somewhere else (be it another hard disk, network path, ftp, etc.).

Thank you,

Will

Stream audio to mobile device

Problem

I have always wanted to watch something on my computer with my larger monitors and listen from afar via my mobile device (iOS devices: iPhone, iPad). It looks like Airfoil is the solution, however there is an audio delay and for video content this can ruin the experience.

Solution: Playback + Mobile companion app

Now that we have Playback, we can create a proper solution. It would allow for us to stream audio content ahead of the video and allow the mobile device to buffer and sync up with the video stream! While something like Airfoil has to receive the audio and process it immediately, Playback knows what audio is coming next and can buffer this on the mobile device ahead of time.

Implementation: Mobile companion app

The mobile app could be implemented in a web app and Playback would simply start an Express server that would serve the audio to buffer. By making it a simple web app we could have more support for devices (not just iOS, etc).

This all, of course, is easier said than done. I think this is something that Playback could achieve, and it is within scope of Playback and Playback has a very unique opportunity to solve this problem. However, I may be the only user with such a scenario.

Please let me know what you think! Including potential recommendations for implementation. I would love to contribute and help submit a pull request for this feature!
Thank you! ๐Ÿ˜ƒ

No Package for Windows

How to install it on windows
There is a .app.zip in releases which won't run on windows
Any instructions on installing this on windows??

Use builder

Use electron-builder
electron-packager for build correct versions for OSX, Linux, Windows

Volume?

Hey, really cool app, thanks! Is there a plan to put in volume control? Or maybe I don't see it?
It could potentially replace my VLC for listening to music, too - it's so much prettier :)
I would just miss flac support.

Cheers

Drag the Video Widget On Fullscreen Behaviour

if you drag the video player widget on regular sized window it will drag the whole window or the app.
But if you drag it on fullscreen mode (on Mac) it will treat the video player widget as a floating widget on the mainwindow!

graphical ui

playback is a minimalistic video player build on top of atom-shell. it supports playing normal video files, video files shared using bittorrent, (and in the future, videos from youtube). it also has support for broadcasting what you're currently watching over the local network so that multiple people can watch the same video at the same time.

basic functionality is pretty much done but it needs a graphical ui. i'm thinking it should be as minimal as possible (think quicktime on osx) where there isn't any ui until you mouse over the player.

components wise we probably need

  • top menubar with the osx close/minimize buttons and buttons for broadcasting what you are watching or subscribing to what someone else on the same network is watching
  • a playlist that shows what is currently queued
  • an info panel that shows how fast you are downloading if the thing you are watching is a torrent and how many peers you are connected to
  • controls (play/pause, a timeline that shows how far you've watched, and a timer)

any help with the design aspect of this would be greatly appreciated :) am happy to implement from mockups, or whatever else works. leave ideas in the thread below

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.