Git Product home page Git Product logo

lancoder's People

Contributors

jdupl avatar skydiscover avatar sm-fifteen 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lancoder's Issues

Master should not trust client

Master gets the ip of the client from what the client sent.
Master should get ip address from the remoteaddress of the socket

x265 muxing problems

x265 will be experimental for now

ffmpeg concat protocol and x265 not compatible ?

worker crash when launched with verbose level 5+

Hi, I noticed that when launched with -w -vvvvv or -w -vvvvvv, lancoder crashed, it only happens with the worker.

Here is the log :

e:\#Download>java -jar lancoder-0.4.0-jar-with-dependencies.jar -w -vvvvv
Sat May 21 14:55:25 CEST 2016 INFO: Runnning lancoder 0.4.0
Sat May 21 14:55:25 CEST 2016 FINE: Loaded config from disk.
Sat May 21 14:55:25 CEST 2016 FINE: Detected 8 threads available.
Sat May 21 14:55:25 CEST 2016 FINER: [C:\Program Files (x86)\ffmpeg\bin\ffmpeg.exe, -encoders]
Exception in thread "main" java.lang.NullPointerException
        at org.lancoder.worker.Worker.getStatus(Worker.java:258)
        at org.lancoder.worker.logging.LogSenderPool.isOnline(LogSenderPool.java:27)
        at org.lancoder.common.logging.ClusterLogStagingHandler.flush(ClusterLogStagingHandler.java:29)
        at org.lancoder.common.logging.ClusterLogStagingHandler.publish(ClusterLogStagingHandler.java:24)
        at java.util.logging.Logger.log(Unknown Source)
        at java.util.logging.Logger.doLog(Unknown Source)
        at java.util.logging.Logger.log(Unknown Source)
        at java.util.logging.Logger.finer(Unknown Source)
        at org.lancoder.ffmpeg.FFmpegReader.read(FFmpegReader.java:65)
        at org.lancoder.ffmpeg.FFmpegReader.read(FFmpegReader.java:37)
        at org.lancoder.ffmpeg.probers.CodecProber.getNodeCapabilities(CodecProber.java:29)
        at org.lancoder.ffmpeg.FFmpegWrapper.getAvailableCodecs(FFmpegWrapper.java:19)
        at org.lancoder.worker.Worker.bootstrap(Worker.java:83)
        at org.lancoder.Main.run(Main.java:122)
        at org.lancoder.Main.main(Main.java:38)
Exception in thread "Thread-1" java.lang.NullPointerException
        at org.lancoder.common.network.cluster.Server.stop(Server.java:28)
        at org.lancoder.common.Container.stopServices(Container.java:98)
        at org.lancoder.common.Container.stop(Container.java:107)
        at org.lancoder.worker.Worker.shutdown(Worker.java:126)
        at org.lancoder.Main$1.run(Main.java:115)

Shutdown methods

Web api should be able to shutdown nodes (including master itself).

Support windows

Detect current OS and change null output file from /dev/null to NUL if windows.

Used in:

  • WorkThread - first pass x264 output

Keep track of node-task assignements

Prevent refusal-proposition loop if an unknown (for now) exception occurs.

  • No ffmpeg
  • no more local disk space
  • Network disconnected
  • libav<->ffmpeg problem

The double assignment protection (concurrency) is not affected by this.

Solution is to never assign n times the same job (not task) to a node.

  • Perhaps retry from time to time (network outage)
  • Try to detect if problem is temporary
  • Crash report object ?

Basic audio handling

Extract first audio stream from input file
Encode to predefined audio codec and bitrate
Mux into final mkv file

Extra encoder options

Allow user to provide his own command line encoder options.
Check-box for --slow-first-pass.

Pool overload detection

Pools should be able to say to listener that their list of todo items is getting too big. The listener can then slow the requests made to the pool or deny incoming requests.

Advanced audio processing

At muxing step, extract selected audio from input file and encode into specific format and mux to final container.

Should support:

  • Codec (vorbis, ac3, aac)
  • Channel (original, stereo, mono)
  • Bitrate

Asynchronous node checking

Asynchronous node checking so node checker can look up multiple nodes without having to wait for timeouts.
Timeouts could then be increased from 2 seconds to 5 seconds.

Start without simulation

It's almost time to allow starting with --master to run as master server and with --worker as a node.

This will finally allow running on multiple machines without any hassle.

Capabilities detection and handling

Detect which operations can be achieved on a worker before sending tasks.

This will ensure each node can actually encode the desired codec.

Encoding libraries can be parsed from FFmpeg with ffmpeg -encoders.

Auto muxing

Mux all tasks of a job with mkvtoolnix to a single file.

Copy audio from source file.

Cannot build lancoder - PoolTest.testDispatchingSingleWorker:98 null

Hi, I tried to build lancoder from Windows (with modification to the hardcoded paths in the tests) and Linux and it fails most of the time (95%) from tests in PoolTest :
Running org.lancoder.common.pool.PoolTest Exception in thread "Thread-5" java.lang.NullPointerException at org.lancoder.common.pool.PoolWorker.run(PoolWorker.java:171) at java.lang.Thread.run(Thread.java:745) Tests run: 4, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 2.056 sec <<< FAILURE! - in org.lancoder.common.pool.PoolTest testDispatchingSingleWorker(org.lancoder.common.pool.PoolTest) Time elapsed: 0.403 sec <<< FAILURE! java.lang.AssertionError: null at org.junit.Assert.fail(Assert.java:86) at org.junit.Assert.assertTrue(Assert.java:41) at org.junit.Assert.assertFalse(Assert.java:64) at org.junit.Assert.assertFalse(Assert.java:74) at org.lancoder.common.pool.PoolTest.testDispatchingSingleWorker(PoolTest.java:98)

And even when I am lucky enough for it to pass the tests, I always get the NullPointerException.

Handle part missing / restart part

Hi,

i tried to encode on 3 servers and one died with aSegfault on ffmpeg.
So Part 9 is now missing and lancoder is not restarting it.

Should this be implemented or how should can i restart the missing part?

thanks

Advanced progress tracking

Provide progress tracking for audio tasks.

Provide an estimate for each pass of the tasks (only for multi passes video tasks) instead of a global task estimate.

Refactor taskreport

refactor to TaskReport and TaskReportMessage

Subtask: refactor Message to interface to allow TaskReportMessage to extend TaskReport and implement Message

Implement listeners

Refactor method dealing with events to implement listeners in Master and Worker main thread

FFmpeg muxing failures

  • [ x] FFmpeg seems to fail concatening 2 pass encoded x265.
  • Confirm if 1 pass x265 encodings are affected

Cluster was a Linux machine with FFmpeg 2.4.2 and a Windows machine.

Some encodings exited with code 0 and only first part of the file is playable but show full length.

Some encodings simply failed and if done manually, same problem occurs.

MkvMerge is able to concatenate these parts...

Config init helper

Create a user interactive configuration maker if a valid config file not found.

Embed web resources

Embed web resources to simplify deployment of the program.
Jetty should serve static files from the jar itself.

Pool cleaning fix

Service should only tag cleanables as to be cleaned then call the clean to avoid comodification errors

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.