Hi,
our Red5 1.0.5 has trouble finalizing the FLVs. We were using 0.9RC before where it worked. We upgraded to 1.0.5 for native RTMPS support (which works). We're pretty much using the default Red5 settings. The client is a self-made Flash application, I'd rather not post the code, it's kinda messy but as I said, it worked with 0.9RC before.
Oh, it happens every single time, not just once in a while, So, this doesn't really help us: https://github.com/Red5/red5-server/wiki/Repairing-Recordings
I'd appreciate any pointers on how to debug this! Thanks.
This is what is received:
-rw-r--r-- 1 vagrant www-data 3.3M Feb 18 21:28 test-1404259686lu-1-v0.flv.ser
-rw-r--r-- 1 vagrant www-data 32 Feb 18 21:28 test-1404259686lu-1-v0.flv.info
-rw-r--r-- 1 vagrant www-data 51K Feb 18 21:28 test-1404259686lu-1-a0.flv.ser
-rw-r--r-- 1 vagrant www-data 32 Feb 18 21:28 test-1404259686lu-1-a0.flv.info
-rw-r--r-- 1 vagrant www-data 212 Feb 18 21:28 test-1404259686lu-1-v0.flv
-rw-r--r-- 1 vagrant www-data 276 Feb 18 21:28 test-1404259686lu-1-a0.flv
The following commands produce perfectly fine audio/video streams:
cat test-1404259686lu-1-a0.flv test-1404259686lu-1-a0.flv.ser > a.flv
cat test-1404259686lu-1-v0.flv test-1404259686lu-1-v0.flv.ser > v.flv
And here's the error.log (Das Argument ist ungültig means Invalid argument):
2015-02-18 21:28:40,181 [RTMPConnectionExecutor#G38NKTJWLA6LA-1] WARN org.red5.io.flv.impl.FLVWriter - Finalization of flv file failed; new finalize job will be spawned
java.io.IOException: Das Argument ist ungültig
at sun.nio.ch.FileChannelImpl.map0(Native Method) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:893) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.transferFromFileChannel(FileChannelImpl.java:601) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.transferFrom(FileChannelImpl.java:675) ~[na:1.8.0_40-internal]
at org.red5.io.flv.impl.FLVWriter.finalizeFlv(FLVWriter.java:737) [red5-io-1.0.5-RELEASE.jar:na]
at org.red5.io.flv.impl.FLVWriter.close(FLVWriter.java:856) [red5-io-1.0.5-RELEASE.jar:na]
at org.red5.server.stream.consumer.FileConsumer.uninit(FileConsumer.java:502) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.RecordingListener.stop(RecordingListener.java:237) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.ClientBroadcastStream.close(ClientBroadcastStream.java:209) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.StreamService.closeStream(StreamService.java:156) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.StreamService.closeStream(StreamService.java:112) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_40-internal]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_40-internal]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_40-internal]
at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_40-internal]
at org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:193) [red5-server-common-1.0.5-RELEASE.jar:na]
at org.red5.server.net.rtmp.RTMPHandler.invokeCall(RTMPHandler.java:210) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.RTMPHandler.onCommand(RTMPHandler.java:269) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHandler.java:105) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask.java:57) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask.java:11) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40-internal]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_40-internal]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40-internal]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40-internal]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40-internal]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40-internal]
2015-02-18 21:28:40,230 [RTMPConnectionExecutor#G38NKTJWLA6LA-1] WARN o.r.s.stream.consumer.FileConsumer - Exception waiting for write result. Timeout: 15000ms
java.lang.InterruptedException: null
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:404) [na:1.8.0_40-internal]
at java.util.concurrent.FutureTask.get(FutureTask.java:204) [na:1.8.0_40-internal]
at org.red5.server.stream.consumer.FileConsumer.acquireWriteFuture(FileConsumer.java:370) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.consumer.FileConsumer.writeQueuedDataSlice(FileConsumer.java:284) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.consumer.FileConsumer.pushMessage(FileConsumer.java:275) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.RecordingListener.processQueue(RecordingListener.java:303) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.RecordingListener.stop(RecordingListener.java:234) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.ClientBroadcastStream.close(ClientBroadcastStream.java:209) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.StreamService.closeStream(StreamService.java:156) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.StreamService.closeStream(StreamService.java:112) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_40-internal]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_40-internal]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_40-internal]
at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_40-internal]
at org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:193) [red5-server-common-1.0.5-RELEASE.jar:na]
at org.red5.server.net.rtmp.RTMPHandler.invokeCall(RTMPHandler.java:210) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.RTMPHandler.onCommand(RTMPHandler.java:269) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHandler.java:105) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask.java:57) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask.java:11) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40-internal]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_40-internal]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40-internal]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40-internal]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40-internal]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40-internal]
2015-02-18 21:28:41,468 [RTMPConnectionExecutor#G38NKTJWLA6LA-1] WARN org.red5.io.flv.impl.FLVWriter - Finalization of flv file failed; new finalize job will be spawned
java.io.IOException: Das Argument ist ungültig
at sun.nio.ch.FileChannelImpl.map0(Native Method) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:893) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.transferFromFileChannel(FileChannelImpl.java:601) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.transferFrom(FileChannelImpl.java:675) ~[na:1.8.0_40-internal]
at org.red5.io.flv.impl.FLVWriter.finalizeFlv(FLVWriter.java:737) [red5-io-1.0.5-RELEASE.jar:na]
at org.red5.io.flv.impl.FLVWriter.close(FLVWriter.java:856) [red5-io-1.0.5-RELEASE.jar:na]
at org.red5.server.stream.consumer.FileConsumer.uninit(FileConsumer.java:502) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.RecordingListener.stop(RecordingListener.java:237) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.ClientBroadcastStream.close(ClientBroadcastStream.java:209) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.StreamService.closeStream(StreamService.java:156) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.stream.StreamService.closeStream(StreamService.java:112) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_40-internal]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_40-internal]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_40-internal]
at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_40-internal]
at org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:193) [red5-server-common-1.0.5-RELEASE.jar:na]
at org.red5.server.net.rtmp.RTMPHandler.invokeCall(RTMPHandler.java:210) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.RTMPHandler.onCommand(RTMPHandler.java:269) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHandler.java:105) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask.java:57) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask.java:11) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40-internal]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_40-internal]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40-internal]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40-internal]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40-internal]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40-internal]
2015-02-18 21:28:42,214 [FLVFinalizer#1424291320187] WARN org.red5.io.flv.impl.FLVWriter - Finalization of flv file failed; new finalize job will be spawned
java.io.IOException: Das Argument ist ungültig
at sun.nio.ch.FileChannelImpl.map0(Native Method) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:893) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.transferFromFileChannel(FileChannelImpl.java:601) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.transferFrom(FileChannelImpl.java:675) ~[na:1.8.0_40-internal]
at org.red5.io.flv.impl.FLVWriter.finalizeFlv(FLVWriter.java:737) [red5-io-1.0.5-RELEASE.jar:na]
at org.red5.io.flv.impl.FLVWriter.access$400(FLVWriter.java:54) [red5-io-1.0.5-RELEASE.jar:na]
at org.red5.io.flv.impl.FLVWriter$FLVFinalizer.run(FLVWriter.java:974) [red5-io-1.0.5-RELEASE.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40-internal]
2015-02-18 21:28:43,485 [FLVFinalizer#1424291321469] WARN org.red5.io.flv.impl.FLVWriter - Finalization of flv file failed; new finalize job will be spawned
java.io.IOException: Das Argument ist ungültig
at sun.nio.ch.FileChannelImpl.map0(Native Method) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:893) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.transferFromFileChannel(FileChannelImpl.java:601) ~[na:1.8.0_40-internal]
at sun.nio.ch.FileChannelImpl.transferFrom(FileChannelImpl.java:675) ~[na:1.8.0_40-internal]
at org.red5.io.flv.impl.FLVWriter.finalizeFlv(FLVWriter.java:737) [red5-io-1.0.5-RELEASE.jar:na]
at org.red5.io.flv.impl.FLVWriter.access$400(FLVWriter.java:54) [red5-io-1.0.5-RELEASE.jar:na]
at org.red5.io.flv.impl.FLVWriter$FLVFinalizer.run(FLVWriter.java:974) [red5-io-1.0.5-RELEASE.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40-internal]
Hi,
our Red5 1.0.5 has trouble finalizing the FLVs. We were using 0.9RC before where it worked. We upgraded to 1.0.5 for native RTMPS support (which works). We're pretty much using the default Red5 settings. The client is a self-made Flash application, I'd rather not post the code, it's kinda messy but as I said, it worked with 0.9RC before.
Oh, it happens every single time, not just once in a while, So, this doesn't really help us: https://github.com/Red5/red5-server/wiki/Repairing-Recordings
I'd appreciate any pointers on how to debug this! Thanks.
This is what is received:
The following commands produce perfectly fine audio/video streams:
And here's the
error.log(Das Argument ist ungültig means Invalid argument):