Skip to content

Finalization of flv file failed #11

Description

@dAnjou

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]

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions