google-code-export / red5

Automatically exported from code.google.com/p/red5
0 stars 0 forks source link

the saveAs() method of IBroadcastStream returns an wierd exception #244

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
I'm trying make red5 record published live streams.
So in my application that implements IStreamAwareScopeHandler

I putted this part

try{
      stream.saveAs("archive_"+stream.getPublishedName(), false);
}catch(Exception e){
 e.printStackTrace();
}

inside the 

public void streamPublishStart(IBroadcastStream stream) {
    super.streamPublishStart(stream);
}

but when I come to run red5, it gives me this exception:

[ERROR] [NioProcessor-2] org.red5.server.messaging.InMemoryPushPushPipe - 
Exception when pushing message to consumer
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1943) ~[na:1.6.0_23]
    at java.lang.String.substring(String.java:1916) ~[na:1.6.0_23]
    at org.red5.io.BaseStreamableFileService.canHandle(BaseStreamableFileService.java:74) ~[red5.jar:na]
    at org.red5.io.StreamableFileFactory.getService(StreamableFileFactory.java:53) ~[red5.jar:na]
    at org.red5.server.stream.consumer.FileConsumer.init(FileConsumer.java:388) ~[red5.jar:na]
    at org.red5.server.stream.consumer.FileConsumer.pushMessage(FileConsumer.java:242) ~[red5.jar:na]
    at org.red5.server.messaging.InMemoryPushPushPipe.pushMessage(InMemoryPushPushPipe.java:82) ~[red5.jar:na]
    at org.red5.server.stream.ClientBroadcastStream.dispatchEvent(ClientBroadcastStream.java:378) [red5.jar:na]
    at org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHandler.java:168) [red5.jar:na]
    at org.red5.server.net.rtmp.RTMPMinaIoHandler.messageReceived(RTMPMinaIoHandler.java:164) [red5.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:716) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796) [mina-core-2.0.4.jar:na]
    at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:427) [mina-core-2.0.4.jar:na]
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:245) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796) [mina-core-2.0.4.jar:na]
    at org.red5.server.net.rtmpe.RTMPEIoFilter.messageReceived(RTMPEIoFilter.java:124) [red5.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:715) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:68) [mina-core-2.0.4.jar:na]
    at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1141) [mina-core-2.0.4.jar:na]
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) [mina-core-2.0.4.jar:na]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [na:1.6.0_23]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [na:1.6.0_23]
    at java.lang.Thread.run(Thread.java:679) [na:1.6.0_23]

it sounds it can't deal with the file name thing!

even it creates an empty file with null as it's name inside the application 
directory!

the operation system is ubuntu 11.4 the red5 is taken from trunk while the 
release number is r4388 . . .

Original issue reported on code.google.com by mohammad...@gmail.com on 14 Jul 2012 at 10:21

GoogleCodeExporter commented 9 years ago
While its not necessarily a "bug", the server should handle the condition that 
you are causing with your code. That condition is not sending a proper file 
name; the file name must have an "approved" extension.

Fixed at revision 4415

Original comment by mondain on 11 Sep 2012 at 8:56