Red5 / red5-server

Red5 Server core
Apache License 2.0
3.34k stars 982 forks source link

Issue in saving stream #103

Closed maheshgohil1989 closed 8 years ago

maheshgohil1989 commented 9 years ago

I use red5-server-1.0.5-RELEASE in linux platform.I have a requirement of storing streaming.So i update the live aplication and add my custom class

public class LiveApplication extends ApplicationAdapter {

SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HHmmss");

@Override
public void streamPublishStart(IBroadcastStream stream) {
    String Record1 = stream.getPublishedName() + "/" + DATE_FORMAT.format(new Date());
    try {
        // Save the stream to disk.
        stream.saveAs(Record1, false);
    } catch (Exception e) {
        System.out.println(e.toString());
    }
}

}

Streaming is working.File is created succefully.Now issue that on the console there is so much exception as below

[WARN] [Red5_Scheduler_Worker-12] org.red5.server.stream.consumer.FileConsumer - Exception waiting for write result. Timeout: 17000ms java.util.concurrent.ExecutionException: java.nio.InvalidMarkException at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:1.8.0_40] at java.util.concurrent.FutureTask.get(FutureTask.java:206) ~[na:1.8.0_40] 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:273) [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.access$300(RecordingListener.java:57) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.RecordingListener$EventQueueJob.execute(RecordingListener.java:367) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.scheduling.QuartzSchedulingServiceJob.executeInternal(QuartzSchedulingServiceJob.java:89) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:112) [spring-context-support-4.0.8.RELEASE.jar:4.0.8.RELEASE] at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [quartz-2.1.7.jar:na] at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557) [quartz-2.1.7.jar:na] Caused by: java.nio.InvalidMarkException: null at java.nio.Buffer.reset(Buffer.java:306) ~[na:1.8.0_40] at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:414) ~[mina-core-2.0.8.jar:na] at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:312) ~[red5-io-1.0.5-RELEASE.jar:na] at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:633) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:541) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:289) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_40] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_40] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_40] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_40] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_40] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_40] at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_40] [WARN] [Red5_Scheduler_Worker-12] org.red5.server.stream.consumer.FileConsumer - Exception waiting for write result. Timeout: 18500ms java.util.concurrent.ExecutionException: java.nio.InvalidMarkException at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:1.8.0_40] at java.util.concurrent.FutureTask.get(FutureTask.java:206) ~[na:1.8.0_40] 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:273) [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.access$300(RecordingListener.java:57) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.RecordingListener$EventQueueJob.execute(RecordingListener.java:367) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.scheduling.QuartzSchedulingServiceJob.executeInternal(QuartzSchedulingServiceJob.java:89) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:112) [spring-context-support-4.0.8.RELEASE.jar:4.0.8.RELEASE] at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [quartz-2.1.7.jar:na] at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557) [quartz-2.1.7.jar:na] Caused by: java.nio.InvalidMarkException: null at java.nio.Buffer.reset(Buffer.java:306) ~[na:1.8.0_40] at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:414) ~[mina-core-2.0.8.jar:na] at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:312) ~[red5-io-1.0.5-RELEASE.jar:na] at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:633) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:541) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:289) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_40] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_40] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_40] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_40] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_40] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_40] at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_40] [WARN] [RTMPConnectionExecutor#1UCMX2ZL2V9FQ-1] org.red5.server.stream.consumer.FileConsumer - Exception waiting for write result on uninit java.util.concurrent.ExecutionException: java.nio.InvalidMarkException at java.util.concurrent.FutureTask.report(FutureTask.java:122) [na:1.8.0_40] at java.util.concurrent.FutureTask.get(FutureTask.java:192) [na:1.8.0_40] at org.red5.server.stream.consumer.FileConsumer.uninit(FileConsumer.java:485) ~[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.deleteStream(StreamService.java:195) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_40] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_40] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_40] at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_40] 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] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_40] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40] Caused by: java.nio.InvalidMarkException: null at java.nio.Buffer.reset(Buffer.java:306) ~[na:1.8.0_40] at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:414) ~[mina-core-2.0.8.jar:na] at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:312) ~[red5-io-1.0.5-RELEASE.jar:na] at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:633) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:541) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:289) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_40] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_40] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_40] ... 3 common frames omitted [WARN] [RTMPConnectionExecutor#1UCMX2ZL2V9FQ-1] org.red5.io.flv.impl.FLVWriter - Exception acquiring lock java.lang.InterruptedException: null at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1302) ~[na:1.8.0_40] at java.util.concurrent.Semaphore.acquire(Semaphore.java:312) ~[na:1.8.0_40] at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:264) ~[red5-io-1.0.5-RELEASE.jar:na] at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:633) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:541) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:526) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at org.red5.server.stream.consumer.FileConsumer.uninit(FileConsumer.java:496) [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.deleteStream(StreamService.java:195) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_40] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_40] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_40] at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_40] 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] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_40] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40] [WARN] [RTMPConnectionExecutor#1UCMX2ZL2V9FQ-1] org.red5.server.stream.consumer.FileConsumer - Tag was not written [INFO] [RTMPConnectionExecutor#1UCMX2ZL2V9FQ-1] LiveApplication - W3C x-category:stream x-event:unpublish c-ip:27.109.21.250 cs-bytes:536891 sc-bytes:4210 x-sname:a314e43f-5a27-4cd3-b93c-9f7c5916a732 x-file-length:32 x-name:mahesh [INFO] [RTMPConnectionExecutor#1UCMX2ZL2V9FQ-1] LiveApplication - W3C x-category:stream x-event:recordstop c-i

Can plz help me out ??

mondain commented 9 years ago

Haven't seen this issue, but we did recently update the FLV writing code for 1.0.6 snapshot. If you are able, try that out and let us know.