Stream name is missing for too long, flushing delayed packet

Hi,

I’m having some problems publishing with Flex client.

I have a custom module that check if user is allowed to publish or not with IMediaStreamActionNotify3

Something like:

public void onPublish(IMediaStream stream, String streamName, boolean isRecord, boolean isAppend)
		{
			//logic to check if user is allowed
				if(notAllowed){
					stream.getClient().setShutdownClient(true);
					stream.stopPublishing();
					stream.shutdown();
					stream.close();
					stream.flush();
					}
}

The problem is:

Sometime when I pause Flex enconder and unpause to start broadcast again y get this error:

WARN server comment - LiveReceiver.flushPacketizerDelayCommand[live/_definst_/]: Stream name is missing for too long, flushing delayed packet.

and transcoder starts without a stream name and the transcoded files names are “_240p”, “_720p”, “_source”… without stream name.

I was checking this post: https://www.wowza.com/forums/showthread.php?36031-Stream-name-is-missing-for-too-long-flushing-delayed-packet-%28Warn-message%29

and problem seems to be that I don’t override publish method correctly, but I’m using IMediaStreamActionNotify3 I’m not using publish(IClient client, RequestFunction function, AMFDataList params) method to check users, I’m using onPublish(IMediaStream stream, String streamName, boolean isRecord, boolean isAppend) on IMediaStreamActionNotify3

How can I solve this?

Thank you,

Jose

Hi,

The most likely reason you are getting this error here is because you are not shutting down the stream correctly so the stream and connection are being left in some unknown state.

You should just need to call

stream.getClient().setShutdownClient(true);

this will disconnect the client and shut down it’s stream automatically.

You shouldn’t call any of the stream methods directly to shut it down as this will bypass some of the internal calls.

As mentioned in the other post, you should really perform the validation in the publish override. At that point, the stream has not actually been published and is easier to shutdown. In the onPublish method, it is already published and running. This event is also called as part of the application event notifications and other modules and classes that listen for onPublish (such as the transcoder or recording) will also receive the event, even if you try to kill the connection in your event listener.

The actual reason you are receiving that warning in the logs is because there have been a bunch of video and / or audio packets arrive and the stream name is not known. (This could be due to the way you are shutting down the stream)

The way that the AS3 NetStream docs say to start publishing a stream also doesn’t help. It suggests that you create a NetStream object, connect the camera and mic and then call netStream.publish. If you are doing any validation on the stream name that may take some time or drop the connection then you should use an event listener in your AS3 code to listen for the publish confirmation event and only start the camera and mic after you receive that confirmation.

You should set up a NetStatus event listener on your NetStream and listen for the NetStream.Publish.* events. When you receive the NetStream.Publish.Start event then it should be safe to connect the camera and mic. Also listen for the NetConnection.Connect.Closed event on the NetConnection which will be sent when you call client.setShutdownClient(true) from the Wowza side.

Roger.

Hi volansys,

I finally solved this with the help of Roger. (Sorry for not reply)

The problem was this:

The way that the AS3 NetStream docs say to start publishing a stream also doesn’t help. It suggests that you create a NetStream object, connect the camera and mic and then call netStream.publish. If you are doing any validation on the stream name that may take some time or drop the connection then you should use an event listener in your AS3 code to listen for the publish confirmation event and only start the camera and mic after you receive that confirmation.

Now I attach the camera and mic after recieve the NetStream Accept and it’s working fine.

Regards,

Jose

Hi,

I make one application in Wowza “Testing”.

connection with Wowza is successful but in RTMP stream it throws this kind of error

"WARN server comment 2014-05-30 18:01:10 - - - - - 2444.88 - - - - - - - - LiveReceiver.flushPacketizerDelayCommand[Testing/definst/]:

Stream name is missing for too long, flushing delayed packet."

Viewer side I am not enable to play RTMP stream.

<?xml version="1.0" encoding="UTF-8"?>

Testing

Live

Default application for live streaming created when Wowza Streaming Engine is installed. Use this application with its default configuration or modify the configuration as needed. You can also copy it to create another live application.

true

live

${com.wowza.wms.context.VHostConfigHome}/content

${com.wowza.wms.context.VHostConfigHome}/keys

cupertinostreamingpacketizer,smoothstreamingpacketizer,sanjosestreamingpacketizer,mpegdashstreamingpacketizer

${SourceStreamName}.xml,transrate.xml

${com.wowza.wms.context.VHostConfigHome}/transcoder/profiles

${com.wowza.wms.context.VHostConfigHome}/transcoder/templates

0

${com.wowza.wms.context.VHostConfigHome}/dvr

append

vodcaptionprovidermp4_3gpp

cupertinostreaming,smoothstreaming,sanjosestreaming,mpegdashstreaming

${com.wowza.wms.context.VHostConfigHome}/applications/${com.wowza.wms.context.Application}/sharedobjects/${com.wowza.wms.context.ApplicationInstance}

-1

*

*

*

*

digest

none

senderreport

12000

75

90000

0

0.0.0.0

127.0.0.1

*

interleave

true

true

20000

12000

0

0

0

0

false

3000

-500

false

3000

-500

false

3000

-500

false

1500

false

base

Base

com.wowza.wms.module.ModuleCore

logging

Client Logging

com.wowza.wms.module.ModuleClientLogging

flvplayback

FLVPlayback

com.wowza.wms.module.ModuleFLVPlayback

ModuleCoreSecurity

Core Security Module for Applications

com.wowza.wms.security.ModuleCoreSecurity

securityPublishRequirePassword

true

Boolean