TarsosTranscoder
TarsosTranscoder copied to clipboard
Timeout
Greetings!
I'm trying to play some audio files using the following commands
java -jar TarsosTranscoder-1.2.jar play 14.\ Too\ Long.mp3
java -jar TarsosTranscoder-1.2.jar play drum-loop.wav
java -jar TarsosTranscoder-1.2.jar play ../audio/input/16bits-44100HZ-3_channel.flac
All of them throw the same error:
Exception in thread "main" java.lang.Error: Could not read from pipe within 20.0 seconds: timeout! at be.tarsos.transcoder.ffmpeg.FFMPEGExecutor.pipe(Unknown Source) at be.tarsos.transcoder.ffmpeg.Encoder.stream(Unknown Source) at be.tarsos.transcoder.Streamer.stream(Unknown Source) at be.tarsos.transcoder.Transcoder.play(Unknown Source) at be.tarsos.transcoder.Transcoder.main(Unknown Source)
Hi,
Could you give me more info on which platform you are using? Using the jar file downloaded from the TarsosTranscoder release directory, the play command seems to work on a Debian Linux system with java 1.8.
Regards
Joren
Ubuntu 15.04 64 bits
$ java -version Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar openjdk version "1.8.0_45-internal" OpenJDK Runtime Environment (build 1.8.0_45-internal-b14) OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)
That release works. But when I build my own, it doesn't work.
Could you extract the ffmpeg binary (from here: https://github.com/JorenSix/TarsosTranscoder/blob/master/src/be/tarsos/transcoder/resources/ffmpeg_linux) and execute something like ffmpeg_linux -version
Perhaps the binary is not compatible with your system for some reason.
$ ./ffmpeg_linux -version FFmpeg version SVN-r11179, Copyright (c) 2000-2007 Fabrice Bellard, et al. configuration: --enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora --enable-memalign-hack --extra-ldflags=-static -lm -lz libavutil version: 49.5.0 libavcodec version: 51.48.0 libavformat version: 52.1.0 built on Dec 7 2007 15:35:14, gcc: 4.1.2 20070626 (Red Hat 4.1.2-14) FFmpeg SVN-r11179 libavutil 3212544 libavcodec 3354624 libavformat 3408128
For the ffmpeg installed in my system, this is the output:
$ ffmpeg -version ffmpeg version 2.5.8-0ubuntu0.15.04.1 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu13) configuration: --prefix=/usr --extra-version=0ubuntu0.15.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --shlibdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libwavpack --enable-libwebp --enable-libxvid --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enable-libzmq --enable-frei0r --enable-libvpx --enable-libx264 --enable-libsoxr --enable-gnutls --enable-openal --enable-libopencv --enable-librtmp --enable-libx265 libavutil 54. 15.100 / 54. 15.100 libavcodec 56. 13.100 / 56. 13.100 libavformat 56. 15.102 / 56. 15.102 libavdevice 56. 3.100 / 56. 3.100 libavfilter 5. 2.103 / 5. 2.103 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100
Ok, good to know. So the transcoder first picks the one on the path (system installed) and only then extracts the version provided with the library. Perhaps the command it sends to ffmpeg is not compatible with the new (system) ffmpeg. If you build one you could leave out the "PathFFMPEGLocator.java" file to test this.
In Transcoder initialize method, I commented the following line:
private static void initialize() {
if(!Encoder.hasLocators()) {
Encoder.addFFMPEGLocator(new WindowsFFMPEGLocator());
Encoder.addFFMPEGLocator(new MacFFMPEGLocator());
Encoder.addFFMPEGLocator(new LinuxFFMPEGLocator());
// Encoder.addFFMPEGLocator(new PathFFMPEGLocator());
}
}
After building it again, the problem still persists.
This is the output of "ant test":
$ ant test Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar Buildfile: /home/echo66/tese/TarsosTranscoder/build/build.xml
compile:
test: [copy] Copying 20 files to /home/echo66/tese/TarsosTranscoder/build/audio [junit] Running be.tarsos.transcoder.tests.StreamerTester [junit] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0,183 sec [junit] Test be.tarsos.transcoder.tests.StreamerTester FAILED [junit] Running be.tarsos.transcoder.tests.TranscoderTester [junit] Tests run: 3, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0,34 sec [junit] Test be.tarsos.transcoder.tests.TranscoderTester FAILED [delete] Deleting directory /home/echo66/tese/TarsosTranscoder/build/audio
BUILD SUCCESSFUL Total time: 0 seconds
This is the content of test_stream_result.txt:
Testsuite: be.tarsos.transcoder.tests.StreamerTester Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0,183 sec ------------- Standard Output --------------- Testing: /home/echo66/tese/TarsosTranscoder/build/audio/input/formats/24bits-44100HZ-Mono.flac
------------- Standard Error ----------------- ago 21, 2015 3:14:12 PM be.tarsos.transcoder.Transcoder transcode INFO: Try to transcode /home/echo66/tese/TarsosTranscoder/build/audio/input/formats/24bits-44100HZ-Mono.flac to /tmp/temporaryTranscoded1028702857664374244.wav
Testcase: testTranscodingAndStreaming took 0,169 sec Caused an ERROR The size of the target (/tmp/temporaryTranscoded1028702857664374244.wav) is zero bytes, something went wrong. be.tarsos.transcoder.ffmpeg.EncoderException: The size of the target (/tmp/temporaryTranscoded1028702857664374244.wav) is zero bytes, something went wrong. at be.tarsos.transcoder.ffmpeg.Encoder.encode(Unknown Source) at be.tarsos.transcoder.Transcoder.transcode(Unknown Source) at be.tarsos.transcoder.Transcoder.transcode(Unknown Source) at be.tarsos.transcoder.tests.StreamerTester.compareTranscodingAndStreaming(Unknown Source) at be.tarsos.transcoder.tests.StreamerTester.testTranscodingAndStreaming(Unknown Source)
This is the content of test_transcoder_result.txt:
Testsuite: be.tarsos.transcoder.tests.TranscoderTester Tests run: 3, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0,34 sec ------------- Standard Error ----------------- ago 21, 2015 3:14:13 PM be.tarsos.transcoder.Transcoder getInfo SEVERE: Unknown input file format: /home/echo66/tese/TarsosTranscoder/build/audio/input/formats/24bits-44100HZ-Mono.flac be.tarsos.transcoder.ffmpeg.InputFormatException at be.tarsos.transcoder.ffmpeg.Encoder.parseAudioAttributes(Unknown Source) at be.tarsos.transcoder.ffmpeg.Encoder.getInfo(Unknown Source) at be.tarsos.transcoder.Transcoder.getInfo(Unknown Source) at be.tarsos.transcoder.tests.TranscoderTester.testGetInfo(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:38) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:532) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeInVM(JUnitTask.java:1614) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:1019) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:2095) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:828) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) at org.apache.tools.ant.Project.executeTarget(Project.java:1364) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1248) at org.apache.tools.ant.Main.runBuild(Main.java:851) at org.apache.tools.ant.Main.startAnt(Main.java:235) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) ago 21, 2015 3:14:13 PM be.tarsos.transcoder.Transcoder transcode INFO: Try to transcode audio/input/tone/tone_10s.wav to audio/output/out_WAV_PCM_S16LE_MONO_44KHZ.wav ago 21, 2015 3:14:13 PM be.tarsos.transcoder.Transcoder transcode INFO: Try to transcode hmm to out
Testcase: testGetInfo took 0,234 sec Caused an ERROR null java.lang.NullPointerException at be.tarsos.transcoder.tests.TranscoderTester.testGetInfo(Unknown Source)
Testcase: testTranscoding took 0,058 sec Caused an ERROR The size of the target (/home/echo66/tese/TarsosTranscoder/build/audio/output/out_WAV_PCM_S16LE_MONO_44KHZ.wav) is zero bytes, something went wrong. be.tarsos.transcoder.ffmpeg.EncoderException: The size of the target (/home/echo66/tese/TarsosTranscoder/build/audio/output/out_WAV_PCM_S16LE_MONO_44KHZ.wav) is zero bytes, something went wrong. at be.tarsos.transcoder.ffmpeg.Encoder.encode(Unknown Source) at be.tarsos.transcoder.Transcoder.transcode(Unknown Source) at be.tarsos.transcoder.Transcoder.transcode(Unknown Source) at be.tarsos.transcoder.Transcoder.transcode(Unknown Source) at be.tarsos.transcoder.tests.TranscoderTester.testTranscoding(Unknown Source)
Testcase: testEncoderException took 0,044 sec
Hi Guys, I'm getting the same issue on Ubuntu 16.04, any progress on this one?