TarsosTranscoder icon indicating copy to clipboard operation
TarsosTranscoder copied to clipboard

Timeout

Open echo66 opened this issue 9 years ago • 11 comments

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)

echo66 avatar Aug 20 '15 15:08 echo66

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

JorenSix avatar Aug 21 '15 07:08 JorenSix

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.

echo66 avatar Aug 21 '15 13:08 echo66

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.

JorenSix avatar Aug 21 '15 13:08 JorenSix

$ ./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

echo66 avatar Aug 21 '15 13:08 echo66

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

echo66 avatar Aug 21 '15 14:08 echo66

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.

JorenSix avatar Aug 21 '15 14:08 JorenSix

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.

echo66 avatar Aug 21 '15 14:08 echo66

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

echo66 avatar Aug 21 '15 14:08 echo66

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)

echo66 avatar Aug 21 '15 14:08 echo66

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

echo66 avatar Aug 21 '15 14:08 echo66

Hi Guys, I'm getting the same issue on Ubuntu 16.04, any progress on this one?

mxilievski avatar Aug 17 '16 11:08 mxilievski