GithubHelp home page GithubHelp logo

owenray / remote-mediaserver Goto Github PK

View Code? Open in Web Editor NEW
95.0 14.0 20.0 5.53 MB

A NodeJS based media server: Manage, watch and share your movies and tv series.

License: GNU General Public License v3.0

JavaScript 87.93% HTML 0.64% Dockerfile 0.29% Shell 3.44% SCSS 7.70%
mediaserver nodejs browser chromecast mediaplayer movies tv p2p

remote-mediaserver's People

Contributors

danielsauve avatar dependabot[bot] avatar dougmolineux avatar gijsgoudzwaard avatar leopere avatar nathhorrigan avatar owenray 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

Watchers

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

remote-mediaserver's Issues

Crash on ffprobe error

when a corrupt movie file gets scanned ffprobe will throw an unhandled error

events.js:160
throw er; // Unhandled 'error' event
^

Error: spawn ffprobe ENOENT
at exports._errnoException (util.js:1022:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:359:16)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)

Mpeg4PlayHandler: Multiple Errors [ERR_STREAM_WRITE_AFTER_END]: write after end

When playing in Chrome (Mpeg4PlayHandler) I get quite a few errors like this:

  Error [ERR_STREAM_WRITE_AFTER_END]: write after end
      at writeAfterEnd (_stream_writable.js:250:14)
      at PassThrough.Writable.write (_stream_writable.js:298:5)
      at Mpeg4PlayHandler.onData (/private/tmp/node_modules/remote-mediaserver/backend/modules/ffmpeg/Mpeg4PlayHandler.js:78:36)
      at Socket.emit (events.js:200:13)
      at Socket.Readable.read (_stream_readable.js:508:10)
      at flow (_stream_readable.js:977:34)
      at resume_ (_stream_readable.js:958:3)
      at processTicksAndRejections (internal/process/task_queues.js:84:9)

After a few seconds AND when seeking.... res.onClose is trying to write?

Fatal Node Crash on Setup

When running 'node setup.js', I get following error:
`
Fatal error in ../deps/v8/src/api.cc, line 1062
Check failed: !value_obj->IsJSReceiver() || value_obj->IsTemplateInfo().
==== C stack trace ===============================

0   node                                0x0000000100bfad23 v8::base::debug::StackTrace::StackTrace() + 19
1   node                                0x0000000100bf7ea9 V8_Fatal + 233
2   node                                0x000000010014730a v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute) + 330
3   binding.node                        0x00000001058c43f2 SassTypes::Boolean::get_constructor() + 352
4   binding.node                        0x00000001058c630b SassTypes::Factory::initExports(v8::Local<v8::Object>) + 407
5   node                                0x00000001009f5380 node::DLOpen(v8::FunctionCallbackInfo<v8::Value> const&) + 859
6   node                                0x00000001001797d1 v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&)) + 369
7   node                                0x00000001001e75ac v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) + 924
8   node                                0x00000001001e6a09 v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) + 281
9   ???                                 0x000039268c7843a7 0x0 + 62837728232359
10  ???                                 0x000039268cb76146 0x0 + 62837732368710

`

Never come across this before, Have you experienced this problem?

throw error with binary

Hi

I am getting the error below on Debian Buster x64


./remote-mediaserver-linux                                                                                                 ⏎
running on platform: linux
downloading ffmpeg
chdir /home/USER/.remote/
2018-12-08T00:13:15.082Z 'starting http server'
koa deprecated Support for generators will be removed in v3. See the documentation for examples of how to convert old middleware https://github.com/koajs/koa/blob/master/docs/migration.md ../../../snapshot/Remote-MediaServer/backend/HttpServer.js:0:0
pkg/prelude/bootstrap.js:1176
      throw error;
      ^

Error: Cannot find module '/snapshot/Remote-MediaServer/node_modules/ed25519-supercop/prebuilds/linux-x64/node-57.node'
1) If you want to compile the package/file into executable, please pay attention to compilation warnings and specify a literal in 'require' call. 2) If you don't want to compile the package/file into executable and want to 'require' it from filesystem (likely plugin), specify an absolute path in 'require' call using process.cwd() or process.execPath.
    at Function.Module._resolveFilename (module.js:545:15)
    at Function.Module._resolveFilename (pkg/prelude/bootstrap.js:1278:46)
    at Function.Module._load (module.js:472:25)
    at Module.require (module.js:594:17)
    at Module.require (pkg/prelude/bootstrap.js:1157:31)
    at require (internal/module.js:11:18)
    at load (/snapshot/Remote-MediaServer/node_modules/node-gyp-build/index.js:13:10)
    at Object.<anonymous> (/snapshot/Remote-MediaServer/node_modules/ed25519-supercop/index.js:1:103)
    at Module._compile (pkg/prelude/bootstrap.js:1252:22)
    at Object.Module._extensions..js (module.js:661:10)
    at Module.load (module.js:563:32)
    at tryModuleLoad (module.js:503:12)
    at Function.Module._load (module.js:495:3)
    at Module.require (module.js:594:17)
    at Module.require (pkg/prelude/bootstrap.js:1157:31)
    at require (internal/module.js:11:18)

[enhancement request] HLS support all major browsers using hls.js

Hi,

Have you looked into using this?? : https://video-dev.github.io/hls.js/stable/
Using this we could go for HLS all the way and ditch the Mpeg4PlayHandler

As of today, it is supported on:

  • Chrome for Android 34+
  • Chrome for Desktop 34+
  • Firefox for Android 41+
  • Firefox for Desktop 42+
  • IE11+ for Windows 8.1+
  • Edge for Windows 10+
  • Opera for Desktop
  • Vivaldi for Desktop
  • Safari for Mac 8+ (beta)

Please note: iOS Safari “Mobile” does not support the MediaSource API. Safari browsers have however built-in HLS support through the plain video “tag” source URL. See the example above (Getting Started) to run appropriate feature detection and choose between using Hls.js or natively built-in HLS support.

it doesnt run on Node v12

Hi Owen,

Great work so far! It doesn't run on the latest Node though. I installed node via Homebrew. The current version is v12.3.1.

In order to make it work quite a few dependencies need to be updated (including manually installing modules lower down in the node-modules tree (all fs-events and chikodar stuff if I can recall what I all did to make it start). Supercop doesn't compile but can be replaced wth a pure javascript version (supercop.js).

Sander

Error playing particular mp4, forEach of undefined

Thank you for this awesome project!

For some reason when playing an mp4 file, I was receiving this error in my terminal:

(node:22956) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'forEach' of undefined

I was able to trace it down to line 74 of backend/modules/ffmpeg/MediaContentApiHandler.js

streams variable was undefined. I’m not sure why await FFProbe.getInfo(this.filePath).streams; would be returning undefined. Also, it doesn’t seem to happen to every mp4, I have an mp4 which works.

I would be happy to investigate this, so I've forked the project, to see if I can help fix it.

Safari support

Video playback does not work on safari yet due to ranged request not yet being supported.

Docker please

Hi

Do you mind providing a docker image? Not all of us are js devs

thanks

Airplay support

Should support the same features as the currently implemented ChromeCast support:

  • play/pause
  • seeking
  • subtitles
  • different audio/video streams
  • volume

Start a gitter channel

Not an issue, But is possible to start a gitter channel or something similar for communication between contributors?

Seeking in video HLSPlayHandler (Safari) it doesn't kill the previous ffmpeg command

Hi,

Playing in Safari works again. I see that when one seeks in the video (e.g. clinking on progress bar, is spawns a new ffmpegCommand (obviously).... But the previous command keeps on running... Hence seeking 5 times, you end up with 6 processes, consuming quite a lot of CPU. The SIGHKILL stuff you have in Mpeg4PlayHandler works good!

Sander

TypeError: Cannot read property 'ok' of undefined

It seems like I am hitting corner cases here ? It started scanning my media folder then crashed.


2018-12-08T02:59:26.787Z 'found new file' '/media/O/VIDEO/YOUTUBE/xxxxx.mp4'
/snapshot/Remote-MediaServer/node_modules/moviedb-api/index.js:49
      if(response.ok) {
                  ^

TypeError: Cannot read property 'ok' of undefined
    at /snapshot/Remote-MediaServer/node_modules/moviedb-api/index.js:49:19
    at Request.callback (/snapshot/Remote-MediaServer/node_modules/moviedb-api/node_modules/superagent/lib/node/index.js:687:12)
    at ClientRequest.<anonymous> (/snapshot/Remote-MediaServer/node_modules/moviedb-api/node_modules/superagent/lib/node/index.js:639:10)
    at emitOne (events.js:116:13)
    at ClientRequest.emit (events.js:211:7)
    at TLSSocket.socketErrorListener (_http_client.js:387:9)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)

login & multi user support

Shouldn't be too difficult, main challenge here would be to separate the play-progress for every user, this is now stored inside the media-item entity but should get it's own entity.

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.