GithubHelp home page GithubHelp logo

svt / encore Goto Github PK

View Code? Open in Web Editor NEW
264.0 14.0 23.0 4.14 MB

Transcode media files in an epic manner

License: European Union Public License 1.2

Dockerfile 0.25% Kotlin 99.75%
transcoding ffmpeg distributed

encore's Introduction

SVT Encore

License REUSE status

   

SVT Encore is a scalable video transcoding tool, built on Open Source giants like FFmpeg and Redisson.

Encore was created to scale, and abstract the transcoding power of FFmpeg, and to offer a simple solution for Transcoding - Transcoding-as-a-Service.

Encore is aimed at the advanced technical user that needs a scalable video transcoding tool - for example, as a part of their VOD (Video On Demand) transcoding pipeline.

Features

  • Scalable - queuing and concurrency options
  • Flexible profile configuration
  • Possibility to extend FFmpeg functionality
  • Tested and tried in production

Encore is not

  • A live/stream transcoder
  • A Video packager (see <>)
  • An GUI application

Built with

  • Kotlin
  • Gradle
  • Spring Boot
  • FFmpeg
  • Redisson
  • and many other great projects

Documentation

Comprehensive documentation for Encore can (and should) be read:

Online

or downloaded from the:

GitHub Repository

If you have a running instance, you can also view the

OpenAPI Endpoints:

http(s)://yourinstance/swagger-ui.html

as json

http(s)://yourinstance/v3/api-docs/

or as yaml

http(s)://yourinstance/v3/api-docs.yaml

Local development

Please see the online documentation

License

Copyright 2020 Sveriges Television AB.

Encore is licensed under the

EUPL-1.2-or-later license

Primary maintainer

SVT Videocore Team - (videocore svt se)

encore's People

Contributors

fhermansson avatar grusell avatar janderssonse avatar lunkers avatar oscnord 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

encore's Issues

Getting "No content to map due to end-of-input"

Describe the bug
Trying to test the software in local environment with docker on windows

To Reproduce

  • Copy this docker-compose.yml to a bare directory :
version: "3.7"

services:
  redis:
    image: redis:alpine
    networks:
      - encorenet
  encore:
    image: ghcr.io/svt/encore-debian:latest
    depends_on:
      - redis
    environment:
      - SPRING_PROFILES_ACTIVE=local
      - SPRING_REDIS_HOST=redis
      - PROFILE_LOCATION=url:https://raw.githubusercontent.com/svt/encore-doc/main/src/docs/asciidoc/examples/profile/profiles.yml
    ports:
      - 8080:8080
    volumes:
      - ./tmp/input:/tmp/input:rw # where your put your source files
      - ./tmp/output:/tmp/output:rw #put your output here
    networks:
      - encorenet

networks:
  encorenet:
    driver: bridge
  • run docker compose up
  • copy an .mp4 file in /tmp/input directory
  • queue a job targetting this .mp4

Actual behavior
I get this stack trace

[+] Running 2/0
 ✔ Container asmbl-transcoding-redis-1   Created                                                                                                                                                                       0.0s 
 ✔ Container asmbl-transcoding-encore-1  Recreated                                                                                                                                                                     0.0s 
Attaching to encore-1, redis-1
redis-1   | 1:C 19 Jan 2024 17:35:12.170 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis-1   | 1:C 19 Jan 2024 17:35:12.170 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis-1   | 1:C 19 Jan 2024 17:35:12.170 * Redis version=7.2.4, bits=64, commit=00000000, modified=0, pid=1, just started
redis-1   | 1:C 19 Jan 2024 17:35:12.170 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis-1   | 1:M 19 Jan 2024 17:35:12.171 * monotonic clock: POSIX clock_gettime
redis-1   | 1:M 19 Jan 2024 17:35:12.172 * Running mode=standalone, port=6379.
redis-1   | 1:M 19 Jan 2024 17:35:12.173 * Server initialized
redis-1   | 1:M 19 Jan 2024 17:35:12.173 * Loading RDB produced by version 7.2.4
redis-1   | 1:M 19 Jan 2024 17:35:12.173 * RDB age 15 seconds
redis-1   | 1:M 19 Jan 2024 17:35:12.173 * RDB memory usage when created 1.52 Mb
redis-1   | 1:M 19 Jan 2024 17:35:12.174 * Done loading RDB, keys loaded: 95, keys expired: 0.
redis-1   | 1:M 19 Jan 2024 17:35:12.174 * DB loaded from disk: 0.001 seconds
redis-1   | 1:M 19 Jan 2024 17:35:12.174 * Ready to accept connections tcp
encore-1  |                                                           ```````
encore-1  |                                                 ``.--:/+ossssyysssoo+/:-.```
encore-1  |                                            ``-:/syhdmmNNNMMMMMMMMMNNNNmddyso:-.`
encore-1  |                                         `.:oydmNMMMMMMNNNmmmmmmmmNNNMMMMMMMNmdho/-.-+/-
encore-1  |                                      `-/ydNNMMMNNmdyso//:--.....--::++oyhmmNMMMNNmmmNy+
encore-1  |                                   `-:ydNMMMNmdyo:-.```               ```.-/+yhmMMMMMMho
encore-1  |                                 `.ohmMMMNmho/-``                            ./hNMMMMMds
encore-1  |                               `-ohNMMMmd+:.`                                .:shdddmmhs`
encore-1  |                              -+dNMMNmo/.`                                    ``...--:-.
encore-1  |                            `-ydMMMms+``              `...-:/:.
encore-1  |                           .+dNMMmd:.               `-ohhdmmNhs        `.-``
encore-1  |                         `.ydMMNd+:                 ./dMMMMMMNd..`   `.shdy+:``               .-/:-
encore-1  |                         -oNMMNd/.                  `/hNMMMMMMMhyso+/osNMMMNms+.             `ohNdh-`
encore-1  |                        -omMMMy+`         `.--`   `.+smMMMMMMMMMMMNNNNMMMMMMMNh+`            `sdMMNs/`
encore-1  |                       `sdMMNd:`         `:ydds+:/shNNMMMMMMMMNNMMMMMMMMMMMMMho.              :oNMMNs:
encore-1  |                      .:mNMNh/`         `ohNMMMNmNNMMMMNmdhyo+++ooyhmNMMMMMMMs/               `-hmMMdy`
encore-1  |                      :oMMMdo.         -+mNMMMMMMMMMMmdo/..``` ````.-oymNMMMMds-`              `/hNMNm-.
encore-1  |                     `ohMMMo:          -smNMMMMMMMMNs+.               `:sdMMMMNh:-..-.`         `odMMMo:
encore-1  |                    `-yNMMN:.          ``/odNMMMMNho``   `.-++o++/.`    .-dmMMMMmdhddh+.         /yMMMy+
encore-1  |                    `/hMMNd.`             -yNMMMMh+.   `-ohmNNNNNmhs:`    /yNMMMMMMMMNy/         -+MMMdo`
encore-1  |                    `+dMMmy`             `:hNMMMN/-    +yNMMMMMMMMMNd/.   `+hMMMMMMMMMhs         .:NMMms-
encore-1  |                    `omMMds`            `-+mMMMMN-.  `-hmMMMMMMMMMMMMho    -oMMMMMMMMNdy`        `-NNMNy-`
encore-1  |                    .smMMds`        `.++ohdMMMMNm-`  `:dNMMMMMMMMMMMMds    -+NMMMMmhso/:         `-NNMNy-`
encore-1  |                    .smMMds`        -/NNMMMMMMMMN-.  `-hmMMMMMMMMMMMMho    :oMMMMms-``           .-NNMNy-`
encore-1  |                    `odMMmy`        .-mNMMMMMMMMM+-    +yNMMMMMMMMMNd/.   `+dMMMMd/`             ./NMMms-`
encore-1  |                    `/dMMNd.`       ``hmMMMMMMMMMd+.   `-ohmNNNNNmhs:`   `/yNMMMNh-`             :oMMMdo.
encore-1  |                    `-yNMNN:.         oymdddmNMMMMds.`   `.-++o++/.`    .:dNMMMMNms:.            /yMMMy+
encore-1  |                     .odMMMo:         ..--..+sNMMMMNy+.`      `       `:ydMMMMMMMMNmh-`         .sdMMMo:
encore-1  |                      /sMMMdo.              `.sdMMMMMNdo+-.```````.-:oyNNMMMMMMMMMMmy.`        `/hNMNm-.
encore-1  |                      .:mNMNh/`              `-ymMMMMMMNNdhyssossyhdmNMMMMMNmNNMMNm+-         `-hmMMdy`
encore-1  |                       `ydMMNd-`             `+hNMMMMMMMMMMMMMMMMMMMMMMMNms+/osddh/.          :oNMMms:
encore-1  |                        -smMMNo:            `:dNMMMMMMMNNNNMMMMMMMMMMMNy+:`` ``--.`         `-ymMMNs:`
encore-1  |                         -+mmm+:            `.+ydNMMMNdo++osydmMMMMMMMm/.                  `:yNMMmh-`
encore-1  |                         ``:::.`               .-oydds:`  ```/oMMMMMMMm+.                ``ohNMMNs/
encore-1  |                                                  .--.       .:NNNmmdhy:.               .:sNMMNm+-`
encore-1  |                                      `                       `///:-..`               .-ydNMMNs+`
encore-1  |                                    .:+//:::--`                                    `./sdMMMNdo-`
encore-1  |                                    /yNNNNNNdy.`                                `.:oyNNMMNmo:`
encore-1  |                                    :sMMMMMMds-.`                            `.:oymNMMMNho:`
encore-1  |                                    :+MMMMMMNNdys/:.```                ``.-/+yhmNMMMNdyo.`
encore-1  |                                    -/mdyhdNNMMMNNmdys+//:---------::/+oyhmmNMMMNNdyo-.`
encore-1  |                                    `.:-``./oydmNMMMMMMMNNmmmmmmmmmNNMMMMMMNNmdyo/.`
encore-1  |                                            ``-:/syhddmNNNNMMMMMMMNNNNmdhhso+:-`
encore-1  |                                                 ``.--:/++oossyysso++/:-..``
encore-1  |
encore-1  |
encore-1  | 2024-01-19 17:35:13.399  INFO 1 --- [           main] s.s.o.e.EncoreApplicationKt              : Starting EncoreApplicationKt using Java 11.0.15 on c8a3f22bd829 with PID 1 (/app/encore.jar started by avtools in /app)
encore-1  | 2024-01-19 17:35:13.403  INFO 1 --- [           main] s.s.o.e.EncoreApplicationKt              : The following 1 profile is active: "local"
encore-1  | 2024-01-19 17:35:13.939  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
encore-1  | 2024-01-19 17:35:13.939  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
encore-1  | 2024-01-19 17:35:14.112  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 166 ms. Found 1 Redis repository interfaces.
encore-1  | 2024-01-19 17:35:14.516  INFO 1 --- [           main] o.s.c.c.s.GenericScope                   : BeanFactory id=57e93272-a9ba-3687-a66c-dc857193e26a
encore-1  | 2024-01-19 17:35:14.602  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.retry.annotation.RetryConfiguration' of type [org.springframework.retry.annotation.RetryConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
encore-1  | 2024-01-19 17:35:14.828  INFO 1 --- [           main] o.s.b.w.e.t.TomcatWebServer              : Tomcat initialized with port(s): 8080 (http)
encore-1  | 2024-01-19 17:35:14.836  INFO 1 --- [           main] o.a.c.c.StandardService                  : Starting service [Tomcat]
encore-1  | 2024-01-19 17:35:14.837  INFO 1 --- [           main] o.a.c.c.StandardEngine                   : Starting Servlet engine: [Apache Tomcat/9.0.69]
encore-1  | 2024-01-19 17:35:14.889  INFO 1 --- [           main] o.a.c.c.C.[.[.[/]                        : Initializing Spring embedded WebApplicationContext
encore-1  | 2024-01-19 17:35:14.890  INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1440 ms
encore-1  | 2024-01-19 17:35:15.517  INFO 1 --- [           main] o.r.Version                              : Redisson 3.18.1
encore-1  | 2024-01-19 17:35:15.717  INFO 1 --- [isson-netty-2-6] o.r.c.p.MasterPubSubConnectionPool       : 1 connections initialized for redis/172.18.0.2:6379
encore-1  | 2024-01-19 17:35:15.817  INFO 1 --- [sson-netty-2-19] o.r.c.p.MasterConnectionPool             : 24 connections initialized for redis/172.18.0.2:6379
encore-1  | WARNING: An illegal reflective access operation has occurred
encore-1  | WARNING: Illegal reflective access by org.springframework.util.ReflectionUtils (jar:file:/app/encore.jar!/BOOT-INF/lib/spring-core-5.3.24.jar!/) to constructor java.net.URI()
encore-1  | WARNING: Please consider reporting this to the maintainers of org.springframework.util.ReflectionUtils
encore-1  | WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
encore-1  | WARNING: All illegal access operations will be denied in a future release
encore-1  | 2024-01-19 17:35:16.329  INFO 1 --- [           main] o.s.c.o.FeignClientFactoryBean           : For 'callback' URL not provided. Will try picking an instance via load-balancing.
encore-1  | 2024-01-19 17:35:18.053  INFO 1 --- [           main] o.s.b.a.e.w.EndpointLinksResolver        : Exposing 1 endpoint(s) beneath base path ''
encore-1  | 2024-01-19 17:35:18.094  INFO 1 --- [           main] o.s.b.w.e.t.TomcatWebServer              : Tomcat started on port(s): 8080 (http) with context path ''
encore-1  | 2024-01-19 17:35:18.111  INFO 1 --- [           main] s.s.o.e.EncoreApplicationKt              : Started EncoreApplicationKt in 5.06 seconds (JVM running for 5.664)
encore-1  | 2024-01-19 17:36:53.655  INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/]                        : Initializing Spring DispatcherServlet 'dispatcherServlet'
encore-1  | 2024-01-19 17:36:53.655  INFO 1 --- [nio-8080-exec-1] o.s.w.s.DispatcherServlet                : Initializing Servlet 'dispatcherServlet'
encore-1  | 2024-01-19 17:36:53.656  INFO 1 --- [nio-8080-exec-1] o.s.w.s.DispatcherServlet                : Completed initialization in 1 ms
encore-1  | 2024-01-19 17:36:53.980  INFO 1 --- [nio-8080-exec-1] s.s.o.e.h.EncoreJobHandler               : Adding job to queue.. EncoreJob(id=14bf1419-c55a-4c74-9c1f-9c59c99ddc12, externalId=any-string, profile=X264Encode, outputFolder=/output, baseName=any_file, createdDate=2024-01-19T17:36:53.834179Z, progressCallbackUri=null, priority=0, message=null, progress=0, speed=null, startedDate=null, completedDate=null, debugOverlay=false, logContext={}, seekTo=null, duration=null, thumbnailTime=null, inputs=[AudioInput(uri=/tmp/input/Interesting.mp4, audioLabel=main, params={ac=2}, audioFilters=[], analyzed=null, audioStream=null, channelLayout=null, seekTo=null)])
encore-1  | 2024-01-19 17:36:53.999  INFO 1 --- [nio-8080-exec-1] s.s.o.e.h.EncoreJobHandler               : Added job to queue
encore-1  | 2024-01-19 17:36:57.674  INFO 1 --- [   scheduling-3] s.s.o.e.s.p.JobPoller                    : Handling job 14bf1419-c55a-4c74-9c1f-9c59c99ddc12
encore-1  | 2024-01-19 17:36:57.683  INFO 1 --- [   scheduling-3] s.s.o.e.s.p.JobPoller                    : Running job
encore-1  | 2024-01-19 17:36:57.783 ERROR 1 --- [   scheduling-3] s.s.o.e.s.EncoreService                  : Job execution failed: Error parsing ProbeResult from output: ''
encore-1  |
encore-1  | java.lang.RuntimeException: Error parsing ProbeResult from output: ''
encore-1  |     at se.svt.oss.mediaanalyzer.ffprobe.FfprobeAnalyzer.analyze(FfprobeAnalyzer.kt:73) ~[media-analyzer-2.0.1.jar!/:?]
encore-1  |     at se.svt.oss.mediaanalyzer.MediaAnalyzer.analyze(MediaAnalyzer.kt:60) ~[media-analyzer-2.0.1.jar!/:?]
encore-1  |     at se.svt.oss.encore.service.mediaanalyzer.MediaAnalyzerService.analyzeInput(MediaAnalyzerService.kt:29) ~[classes!/:?]
encore-1  |     at se.svt.oss.encore.service.EncoreService.encode(EncoreService.kt:72) ~[classes!/:?]
encore-1  |     at se.svt.oss.encore.service.poll.JobPoller.handleJob(JobPoller.kt:77) ~[classes!/:?]
encore-1  |     at se.svt.oss.encore.service.poll.JobPoller.init$lambda$2$lambda$1(JobPoller.kt:47) ~[classes!/:?]
encore-1  |     at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.24.jar!/:5.3.24]
encore-1  |     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
encore-1  |     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
encore-1  |     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
encore-1  |     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
encore-1  |     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
encore-1  |     at java.lang.Thread.run(Thread.java:829) ~[?:?]
encore-1  | Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
encore-1  |  at [Source: (String)""; line: 1, column: 0]
encore-1  |     at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
encore-1  |     at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4765) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
encore-1  |     at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4667) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
encore-1  |     at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3629) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
encore-1  |     at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3612) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
encore-1  |     at se.svt.oss.mediaanalyzer.ffprobe.FfprobeAnalyzer.analyze(FfprobeAnalyzer.kt:70) ~[media-analyzer-2.0.1.jar!/:?]
encore-1  |     ... 12 more

Expected behavior
Expected the video to be transcoded to the output folder

Desktop (please complete the following information):

  • OS: Windows 11

Additional context
Any help with this error is greatly appreciated!

Custom arguments/notifications on job creation

Hi,

have another question that I could not find at the jobs documentation: Is there a way to send custom arguments/notifications on job creation ? Those would return on callback. It's a useful feature feature for post-processing tasks (integrating with shaka packager, for instance). Thanks a lot

how to add processing nodes ?

Hi, I could not find at the docs how to add encore "relay" nodes to descentralize processing. Is there a way to do it ?
thanks a lot

Encore fails to start if redis server is not configured to allow `CONFIG` command

Describe the bug
If using a redis server that does not allow the CONFIG command, encore fails to start. Many/some commercial managed redis service (azure redis cache, aws redis cache) does not allow the CONFIG command and therefore can not be used together with encore.

It seems pring data redis uses the CONFIG command to set the 'notify-keyspace-events' property. In managed redis services, this can usually be configured in some other way, so it would make sense if this behaviour of spring data redis could be disabled.

I will provide a PR to fix this.

To Reproduce
Steps to reproduce the behavior:

  1. Add rename-command CONFIG "" to the config of your redis server
  2. Run encore
  3. Encore will fail to start

Expected behavior
It should be possible to configure encore to run even if the CONFIG command is disabled. For correct funcionality this will probably requiring configuring notify-keyspace-events on the server through some other means.

Convert issue

Hello,

when we try to convert a file, we get an error message: "Error pars
download
ing Profil...`

could you please help us with this issue?
Thank you,

Installation Issues

Hello,

I am attempting a fresh install on a system that meets the minimum requirements.

cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

#Java
java --version
openjdk 11.0.12 2021-07-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.12+7-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7-LTS, mixed mode, sharing)

#ffmpeg
ffmpeg --hide_banner --version
ffmpeg version 4.4.1-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2021 the FFmpeg developers

#Redis
redis-cli
127.0.0.1:6379> ping
PONG

After running ./gradlew clean check I see the following:

Task :Verify ffmpeg is in path, required for integration tests
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

Task :Verify ffprobe is in path, required for integration tests
Simple multimedia streams analyzer
usage: ffprobe [OPTIONS] [INPUT_FILE]

You have to specify one input file.
Use -h to get full help or, even better, run 'man ffprobe'.

Task :Verify mediainfo is in path, required for integration tests
Usage: "mediainfo [-Options...] FileName1 [Filename2...]"
"mediainfo --Help" for displaying more information

Task :compileTestJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

Task :test
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.springframework.util.ReflectionUtils (file:/home/tux/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/5.3.9/cfef19d1dfa41d56f8de66238dc015334997d573/spring-core-5.3.9.jar) to constructor java.net.URI()
WARNING: Please consider reporting this to the maintainers of org.springframework.util.ReflectionUtils
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

LocalEncodeIntegrationTest > jobIsSuccessfulAndNoAudioPresets(File) FAILED
java.lang.AssertionError at LocalEncodeIntegrationTest.kt:17

EncoreIntegrationTest > jobIsSuccessfulStereo(File) FAILED
java.lang.AssertionError at EncoreIntegrationTest.kt:95

EncoreIntegrationTest > jobIsSuccessfulSurround(File) FAILED
java.lang.AssertionError at EncoreIntegrationTest.kt:31

EncoreIntegrationTest > multipleInputsWithSeekAndDuration(File) FAILED
java.lang.AssertionError at EncoreIntegrationTest.kt:78

127 tests completed, 4 failed

Task :test FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':test'.

There were failing tests. See the report at: file:///home/tux/encore/build/reports/tests/test/index.html

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.8.3/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 8m 38s
11 actionable tasks: 10 executed, 1 up-to-date

Please let me know what is missing for a clean install.
Thanks in advance.

How to implement filters?

This is a great project and I have successfully experienced its power. Now I want to implement watermark or logo while transcoding, how can I pass parameters such as overlay coordinates, logo's url through program.yml ? Please give pointers, thanks!

Job hangs indefinitely if output for thumbnailmap encode already exists

Describe the bug
If one for whatever reason run multiple jobs with identical outputFolder/baseName, and the profile includes a thumbnailmap encode, the job never finishes.

This seems to be caused by the postprocessing step in Thumbnailmapencode. If the output file for the thumbnailmap postprocessing already exists, ffmpeg process will hang forever waiting for user confirmation that the file should be overwritten.

To Reproduce
Steps to reproduce the behavior:

  1. Start a job using a profile with a thumbnailmap encode
  2. When the job finishes, start another identical job
  3. Job never finishes

Expected behavior
Job should finish and overwrite the old thumbnailmap.

Suggested fix

index d3cd406..2ce7e73 100644
--- a/encore-common/src/main/kotlin/se/svt/oss/encore/model/profile/ThumbnailMapEncode.kt
+++ b/encore-common/src/main/kotlin/se/svt/oss/encore/model/profile/ThumbnailMapEncode.kt
@@ -80,6 +80,7 @@ data class ThumbnailMapEncode(
                     val targetFile = outputFolder.resolve("${job.baseName}$suffix.$format")
                     val process = ProcessBuilder(
                         "ffmpeg",
+                        "-y",
                         "-i",
                         "${job.baseName}$suffix%04d.$format",
                         "-vf",```

Can we integrate the forward processing of moov in MP4 files?

Hello everyone:
Our project has scenarios where HLS playback cannot be used. We use the traditional moov forward shift method to achieve simultaneous playback,

ffmpeg -i src.mp4 -movflags faststart -c copy dst.mp4

How can this process be integrated into the Encore process and controlled to be enabled through a profile?

encore-worker-0.2.5 running failure

Request Help:
I ran the encore-web-0.2.5-boot.jar normally in severA and was able to handle the task successfully. After that, I configured the application to connect to the serverA redies in the serverB. encore-worker-0.2.5-boot.jar running, it always automatically quits the program, and no obvious error message was found in the system log. Is there a problem with my configuration? Who can 1 me an example of a application.yml file?

Here is my application and startup log:
application-test.yml
`spring:
main:
allow-bean-definition-overriding: true
data:
redis:
host: 10.193.1.157
port: 6379

logging:
level:
se.svt: debug

encore-settings:
concurrency: 3
local-temporary-encode: false
poll-initial-delay: 1s
poll-delay: 1s
shared-work-dir: /data/share

encoding:
default-channel-layouts:
3: "3.0"
audio-mix-presets:
default:
default-pan:
stereo: FL=FL+0.707107FC+0.707107BL+0.707107SL|FR=FR+0.707107FC+0.707107BR+0.707107SR
pan-mapping:
mono:
stereo: FL=0.707FC|FR=0.707FC
de:
fallback-to-auto: false
default-pan:
stereo: FL<FL+1.5FC+0.707107BL+0.707107SL|FR<FR+1.5FC+0.707107BR+0.707107SR
pan-mapping:
"[5.1]":
"[5.1]": c0=c0|c1=c1|c2<1.5c2|c3=c3|c4=c4|c5=c5
"[5.1(side)]":
"[5.1]": c0=c0|c1=c1|c2<1.5
c2|c3=c3|c4=c4|c5=c5

profile:
location: https://xxx.xxx.xxx.xxx/profiles.yml`

Start Log
{"@timestamp":"2024-05-30T16:43:47.767927826+08:00","@version":"1","message":"HV000001: Hibernate Validator 8.0.1.Final","logger_name":"org.hibernate.validator.internal.util.Version","thread_name":"background-preinit","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:47.841235279+08:00","@version":"1","message":"Starting EncoreWorkerApplicationKt v0.2.5 using Java 17.0.10 with PID 7633 (/encore_worker/encore-worker-0.2.5-boot.jar started by root in /encore_worker)","logger_name":"se.svt.oss.encore.EncoreWorkerApplicationKt","thread_name":"main","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:47.841835632+08:00","@version":"1","message":"Running with Spring Boot v3.1.3, Spring v6.0.11","logger_name":"se.svt.oss.encore.EncoreWorkerApplicationKt","thread_name":"main","level":"DEBUG","level_value":10000} {"@timestamp":"2024-05-30T16:43:47.842523969+08:00","@version":"1","message":"The following 1 profile is active: \"test\"","logger_name":"se.svt.oss.encore.EncoreWorkerApplicationKt","thread_name":"main","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:48.629525637+08:00","@version":"1","message":"Multiple Spring Data modules found, entering strict repository configuration mode","logger_name":"org.springframework.data.repository.config.RepositoryConfigurationDelegate","thread_name":"main","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:48.630417449+08:00","@version":"1","message":"Bootstrapping Spring Data Redis repositories in DEFAULT mode.","logger_name":"org.springframework.data.repository.config.RepositoryConfigurationDelegate","thread_name":"main","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:48.98126161+08:00","@version":"1","message":"Finished Spring Data repository scanning in 335 ms. Found 1 Redis repository interfaces.","logger_name":"org.springframework.data.repository.config.RepositoryConfigurationDelegate","thread_name":"main","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:49.470326869+08:00","@version":"1","message":"BeanFactory id=692df1a8-dbd8-3c67-94be-83a058f7446e","logger_name":"org.springframework.cloud.context.scope.GenericScope","thread_name":"main","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:49.919248754+08:00","@version":"1","message":"Redisson 3.23.2","logger_name":"org.redisson.Version","thread_name":"main","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:50.09451454+08:00","@version":"1","message":"1 connections initialized for 10.193.1.157/10.193.1.157:6379","logger_name":"org.redisson.connection.pool.MasterPubSubConnectionPool","thread_name":"redisson-netty-2-4","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:50.199700907+08:00","@version":"1","message":"24 connections initialized for 10.193.1.157/10.193.1.157:6379","logger_name":"org.redisson.connection.pool.MasterConnectionPool","thread_name":"redisson-netty-2-19","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:52.193971021+08:00","@version":"1","message":"Cannot determine local hostname","logger_name":"org.springframework.cloud.commons.util.InetUtils","thread_name":"main","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:52.257618004+08:00","@version":"1","message":"Started EncoreWorkerApplicationKt in 5.519 seconds (process running for 6.081)","logger_name":"se.svt.oss.encore.EncoreWorkerApplicationKt","thread_name":"main","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:52.260089149+08:00","@version":"1","message":"Polling queue 0","logger_name":"se.svt.oss.encore.EncoreWorkerApplication","thread_name":"main","level":"INFO","level_value":20000} {"@timestamp":"2024-05-30T16:43:52.282373758+08:00","@version":"1","message":"Stopping","logger_name":"se.svt.oss.encore.EncoreWorkerApplication","thread_name":"main","level":"INFO","level_value":20000}

Job execution failed: Error parsing ProbeResult from output

Describe the bug
Getting: "Job execution failed: Error parsing ProbeResult from output: '' after creating a job

To Reproduce
Steps to reproduce the behavior:
1 - Creating a job using the swagger "try out" with the sample provided by the docs:

  {
  	"profile": "program",
  	"outputFolder": "/tmp/output",
  	"baseName": "quicktest_",
  	"inputs": [{
  		"uri": "/tmp/input/test.mp4",
  		"useFirstAudioStreams": 2,
  		"type": "AudioVideo"
  	}]
  }

Expected behavior
A job to be created with success

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):
Docker compose provided by the docs

Additional context
I can run "ffprobe" from the OS a get success with /tmp/input/test.mp4

Here the log:

encore_1  | 2021-12-01 17:29:01.568  INFO 1 --- [nio-8080-exec-7] s.s.o.e.h.EncoreJobHandler               : Adding job to queue.. EncoreJob(id=f77786d3-ff42-447b-b5c5-d658b7d70a3d, externalId=null, profile=program, outputFolder=/tmp/output, baseName=quicktest_, createdDate=2021-12-01T17:29:01.530894Z, progressCallbackUri=null, priority=0, message=null, progress=0, speed=null, startedDate=null, completedDate=null, debugOverlay=false, logContext={}, seekTo=null, duration=null, thumbnailTime=null, inputs=[AudioVideoInput(uri=/tmp/input/test.mp4, videoLabel=main, audioLabel=main, params={}, dar=null, useFirstAudioStreams=2, cropTo=null, padTo=null, videoFilters=[], audioFilters=[], analyzed=null, videoStream=null, audioStream=null, probeInterlaced=true)])
encore_1  | 2021-12-01 17:29:01.583  INFO 1 --- [nio-8080-exec-7] s.s.o.e.h.EncoreJobHandler               : Added job to queue
encore_1  | 2021-12-01 17:29:02.288  INFO 1 --- [   scheduling-3] s.s.o.e.s.p.JobPoller                    : Handling job f77786d3-ff42-447b-b5c5-d658b7d70a3d
encore_1  | 2021-12-01 17:29:02.301  INFO 1 --- [   scheduling-3] s.s.o.e.s.p.JobPoller                    : Running job
encore_1  | 2021-12-01 17:29:02.698 ERROR 1 --- [   scheduling-3] s.s.o.e.s.EncoreService                  : Job execution failed: Error parsing ProbeResult from output: ''
encore_1  | 
encore_1  | java.lang.RuntimeException: Error parsing ProbeResult from output: ''
encore_1  | 	at se.svt.oss.mediaanalyzer.ffprobe.FfprobeAnalyzer.analyze(FfprobeAnalyzer.kt:72) ~[media-analyzer-1.0.3.jar!/:?]
encore_1  | 	at se.svt.oss.mediaanalyzer.MediaAnalyzer.analyze(MediaAnalyzer.kt:60) ~[media-analyzer-1.0.3.jar!/:?]
encore_1  | 	at se.svt.oss.encore.service.mediaanalyzer.MediaAnalyzerService.analyzeInput(MediaAnalyzerService.kt:28) ~[classes!/:?]
encore_1  | 	at se.svt.oss.encore.service.EncoreService.encode(EncoreService.kt:72) ~[classes!/:?]
encore_1  | 	at se.svt.oss.encore.service.poll.JobPoller.handleJob(JobPoller.kt:77) ~[classes!/:?]
encore_1  | 	at se.svt.oss.encore.service.poll.JobPoller.init$lambda-2$lambda-1(JobPoller.kt:47) ~[classes!/:?]
encore_1  | 	at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) [spring-context-5.3.9.jar!/:5.3.9]
encore_1  | 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
encore_1  | 	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?]
encore_1  | 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?]
encore_1  | 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
encore_1  | 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
encore_1  | 	at java.lang.Thread.run(Thread.java:829) [?:?]
encore_1  | Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
encore_1  |  at [Source: (String)""; line: 1, column: 0]
encore_1  | 	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) ~[jackson-databind-2.12.4.jar!/:2.12.4]
encore_1  | 	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4688) ~[jackson-databind-2.12.4.jar!/:2.12.4]
encore_1  | 	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4586) ~[jackson-databind-2.12.4.jar!/:2.12.4]
encore_1  | 	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548) ~[jackson-databind-2.12.4.jar!/:2.12.4]
encore_1  | 	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3531) ~[jackson-databind-2.12.4.jar!/:2.12.4]
encore_1  | 	at se.svt.oss.mediaanalyzer.ffprobe.FfprobeAnalyzer.analyze(FfprobeAnalyzer.kt:69) ~[media-analyzer-1.0.3.jar!/:?]
encore_1  | 	... 12 more

Should support multiple inputs

Problem:
Currently, Encore is only expecting a single input video file. This limits the encoding usage, for example, you might want to encode audio

Solution: We should support multiple input files

Connection Refused messages

Hello,

I'm encountering an issue with getting a Connection Refused message when starting a job within Encore.

The instance seems to start without issue, the only warning being for 'org.springframework.retry.annotation.RetryConfiguration'. I'm able to submit the following curl POST:

curl -X 'POST' \
  'http://localhost:8080/encoreJobs' \
  -H 'accept: application/hal+json' \
  -H 'Content-Type: application/json' \
  -d '{
  "externalId": "testing",
  "profile": "480p",
  "outputFolder": "/home/tux/files/transcoded",
  "baseName": "test123",
  "priority": 0,
  "debugOverlay": false,
  "logContext": {},
  "seekTo": 0,
  "thumbnailTime": 1,
  "inputs": [
    {
      "type": "AudioVideo",
      "params": {
        "ac": "2"
      },
      "uri": "/home/tux/files/Brugge-Oostende.mp4"
    }
  ]
}'

I see the job fire, the file gets evaluated (viewable in the swagger api), however after the job start this output presents itself:

2021-11-11 23:35:15.610 INFO 782278 --- [ scheduling-2] s.s.o.e.s.EncoreService : Start EncoreJob(id=4b068fe4-93c8-4804-8da5-93a815bf4286, externalId=testing, profile=480p, outputFolder=/home/tux/files/transcoded, baseName=test123, createdDate=2021-11-11T23:35:04.821030Z, progressCallbackUri=null, priority=0, message=null, progress=0, speed=null, startedDate=null, completedDate=null, debugOverlay=false, logContext={}, seekTo=0.0, duration=null, thumbnailTime=1.0, inputs=[AudioVideoInput(uri=/home/tux/files/Brugge-Oostende.mp4, videoLabel=main, audioLabel=main, params={ac=2}, dar=null, useFirstAudioStreams=null, cropTo=null, padTo=null, videoFilters=[], audioFilters=[], analyzed=VideoFile(file=/home/tux/files/Brugge-Oostende.mp4, fileSize=14881064994, format=MPEG-4, overallBitrate=22079196, duration=5391.8865, videoStreams=[VideoStream(format=AVC, codec=h264, profile=High, level=5.1, width=3840, height=2160, sampleAspectRatio=1:1, displayAspectRatio=16:9, pixelFormat=yuv420p, frameRate=30000/1001, duration=5391.8865, bitrate=21979623, bitDepth=8, numFrames=161595, isInterlaced=false, transferCharacteristics=BT.709)], audioStreams=[AudioStream(format=AAC, codec=aac, duration=5391.8865, channels=2, samplingRate=48000, bitrate=95901)]), videoStream=null, audioStream=null, probeInterlaced=true)])

2021-11-11 23:35:17.720 ERROR 782278 --- [ scheduling-2] s.s.o.e.s.EncoreService : Job execution failed: Connection refused (Connection refused)

java.net.ConnectException: Connection refused (Connection refused)

Is this related to a profile issue? I have the pointer to it in the config as

profile:
    location: classpath:profile.yml

Which contains the profile name and reference to the yml with the encoding details.

Can you shed any light as to what the service is trying to connect to? I've tried this with no firewall and the message has been the same.

Thanks in advance.

Sort findByStatus

The resource findByStatus sorts only inside the page and not over complete collection.

Actual:
http://host/encoreJobs/search/findByStatus?status=SUCCESSFUL&sort=createdDate,desc&page=0&size=2
Response: {... [{... "createdDate": "2022-01-04" ...},{... "createdDate": "2022-01-02" ...}] ...}
http://host/encoreJobs/search/findByStatus?status=SUCCESSFUL&sort=createdDate,desc&page=1&size=2
Response: {... [{... "createdDate": "2022-01-03" ...},{... "createdDate": "2022-01-01" ...}] ...}

Expected:
http://host/encoreJobs/search/findByStatus?status=SUCCESSFUL&sort=createdDate,desc&page=0&size=2
Response: {... [{... "createdDate": "2022-01-04" ...},{... "createdDate": "2022-01-03" ...}] ...}
http://host/encoreJobs/search/findByStatus?status=SUCCESSFUL&sort=createdDate,desc&page=1&size=2
Response: {... [{... "createdDate": "2022-01-02" ...},{... "createdDate": "2022-01-01" ...}] ...}

Documentation Issue

Hello,

Taking a look at the Encore documentation here, an example of connecting to a remote or non standard Redis instance is made with the following:

spring:
  jackson:
  time-zone: Europe/Stockholm

profile:
  location: url:http://YOURPROFILESERVERURL/encore/prod/master/profiles.yml

redis:
 subscription-connection-pool-size: 25
 connection-pool-size: 32
 connection-minimum-idle-size: 5
 uri: redis://YOURINSTANCE:6379
 db: 1


However, in my testing, I have found the Redis information in this example is ignored, and Encore continues to attempt to connect to the default localhost/127.0.0.1 defaults.

The source code test yml actually shows a working example with the Redis connection coming under the spring: definition: https://github.com/svt/encore/blob/c25749cf2efbf4613402039df5c64beb037d3c3f/src/test/resources/application-test-local.yml

We followed this in our implementation, and we were able to connect directly to a remote instance bound to private IP space, and instead of utilizing the uri connector, host|port was required to successfully connect.

cat src/main/resources/application-local.yml

spring:
  redis:
    subscription-connection-pool-size: 25
    connection-pool-size: 32
    connection-minimum-idle-size: 5
    host: redis.ip.space.here
    port: port
    db: 1

service:
 name: encore-local

profile:
 location: file:/home/tux/files/profiles.yml

I hope this helps, as updating the example documentation could help save setup times going forward.

Also, do you have any tips or best practices for running Encore in the background? We have some ideas here, but would like to hear from you on this.

Custom arguments/notifications on job creation

Is your feature request related to a problem? Please describe.
Yes. The job entities might have "tags" for further post-processing tasks (integrating with shaka packager, for instance)

Describe the solution you'd like
If we could send custom arguments on job creation​ (POST /encoreJobs) and those could return on progress callback (or any other callback), as well as being available on a job fetch (GET /encoreJobs​/{id ) that would work.

Describe alternatives you've considered
INot having this feature, I would need to have this relation on a external db and make a more complex solution.

Additional context

Task distribution between server nodes

need help:
I deployed two Encores, namely test_server and test_node, in which test_server (192.168.0.1) has redis, and pointed the running configuration item redis of test_node (192.168.0.2) to the server, and the two servers share the input and output directories through nfs , when submitting test tasks to both servers, they both work fine.
The problem now is that when I submit multiple tasks only through the test_server node, these tasks are always queued in the test_server, and the test_node does not get any tasks, which causes the load to be unbalanced.
Is my configuration incorrect or something is missing?
How can we achieve load balancing or polling of tasks among nodes?
Can redis configure account authentication?

The test_node run configuration file is as follows:

spring:
  redis:
    host: 192.168.0.1
    port: 6379
  main:
    allow-bean-definition-overriding: true

server:
  port: 8080

service:
  name: encore_node

encore-settings:
  concurrency: 3
  local-temporary-encode: true
  poll-initial-delay: 1s
  poll-delay: 1s
  audio-mix-presets:
    default:
      pan-mapping:
        6:
          2: stereo|c0=1.0*c0+0.707*c2+0.707*c4|c1=1.0*c1+0.707*c2+0.707*c5
    de:
      fallback-to-auto: false

profile:
  location: https://mydomain/encore/profiles.yml

Question: How to deal with different track allocation in input with 8 audio streams?

I want to transcode stereo audio from existing stereo mix in inputs. I have two different types of inputs:

a) Audio is in 8 mono streams, with StereoLeft allocated to stream 0 and StereoRight allocated to stream 1
b) Audio is in 8 mono streams, with StereoLeft allocated to stream 6 and StereoRight allocated to stream 7

I cannot seem to find a non-hacky way to handle this. The best way I found is to define a pan-mapping from 7.1(wide) to stereo that selects stream 6 and 7 for stereo. Then if I set channelLayout on the job input to 7.1(wide) I get what I want in case b. For case a, I set a default-pan for stereo that just uses stream 0 and 1. This solution feels a bit hacky though since the channel layout in case b is not really 7.1(wide). Is there currently a better way to handle this?

Use the sample document to execute docker-compose and an error message appears

When I used the docker-compose example in the documentation, I encountered the following error message:

encore_1 | WARNING: An illegal reflective access operation has occurred
encore_1 | WARNING: Illegal reflective access by org.springframework.util.ReflectionUtils (jar:file:/app/encore.jar!/BOOT-INF/lib/spring-core-5.3.9.jar!/) to constructor java.net.URI()
encore_1 | WARNING: Please consider reporting this to the maintainers of org.springframework.util.ReflectionUtils
encore_1 | WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
encore_1 | WARNING: All illegal access operations will be denied in a future release

When I execute the test in the subsequent swagger, an error message appears:

encore_1 | 2021-12-27 08:46:51.657 INFO 1 --- [nio-8080-exec-7] s.s.o.e.h.EncoreJobHandler : Added job to queue
encore_1 | 2021-12-27 08:46:54.355 INFO 1 --- [ scheduling-1] s.s.o.e.s.p.JobPoller : Handling job c859b390-deed-4cf3-81f4-71e25c74015e
encore_1 | 2021-12-27 08:46:54.369 INFO 1 --- [ scheduling-1] s.s.o.e.s.p.JobPoller : Running job
encore_1 | 2021-12-27 08:46:55.720 INFO 1 --- [ scheduling-1] s.s.o.e.s.EncoreService : Start EncoreJob(id=c859b390-deed-4cf3-81f4-71e25c74015e, externalId=null, profile=program, outputFolder=/tmp/output, baseName=quicktest_, createdDate=2021-12-27T08:46:51.365008Z, progressCallbackUri=null, priority=0, message=null, progress=0, speed=null, startedDate=null, completedDate=null, debugOverlay=false, logContext={}, seekTo=null, duration=null, thumbnailTime=null, inputs=[AudioVideoInput(uri=/tmp/input/test.mp4, videoLabel=main, audioLabel=main, params={}, dar=null, useFirstAudioStreams=2, cropTo=null, padTo=null, videoFilters=[], audioFilters=[], analyzed=VideoFile(file=/tmp/input/test.mp4, fileSize=579602170, format=MPEG-4, overallBitrate=8770157, duration=528.704, videoStreams=[VideoStream(format=AVC, codec=h264, profile=Main, level=4.1, width=1920, height=1080, sampleAspectRatio=null, displayAspectRatio=null, pixelFormat=yuv420p, frameRate=30/1, duration=528.666667, bitrate=8444000, bitDepth=8, numFrames=15860, isInterlaced=false, transferCharacteristics=BT.709)], audioStreams=[AudioStream(format=AAC, codec=aac, duration=528.666667, channels=2, samplingRate=48000, bitrate=317375)]), videoStream=null, audioStream=null, probeInterlaced=true)])
encore_1 | 2021-12-27 08:46:58.550 ERROR 1 --- [ scheduling-1] s.s.o.e.s.EncoreService : Job execution failed: Connection refused (Connection refused)
encore_1 |
encore_1 | java.net.ConnectException: Connection refused (Connection refused)

How can I solve the above problem?

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.