Wowza Community

IOS client problem "The operation could not be completed"

Hi,

I have applied patch from Production Builds and we still have “The operation could not be completed” popup message on IOS devices.

This only happens when IOS video tag connects to stream before the stream is actually published. The problem is that IOS device shows popup to the user.

How do we resolve this issue ?

Is “Production Build patch” supposed to stop popup message in case when requested stream is not published ?

Thanks,

Alex

Hi,

If the stream is not available then I think the ‘Operation Could Not be Completed’ message is a generic one, but I doubt there is much the Wowza side can do if the stream requested is not available.

Shamrock

Without knowing what you are already doing I’m guessing you need to stop the propagation of the error (that is if your error handler catches it at all) or (just an idea) try adding the video element with a try/catch.

Hi,

If the stream is not available then I think the ‘Operation Could Not be Completed’ message is a generic one, but I doubt there is much the Wowza side can do if the stream requested is not available.

Shamrock

We have covered this situation with appropriate Javascript code that does reconnect handling. But it is imperative to hide ‘Operation Could Not be Completed’ popup message as it blocks entire page. From user point it looks like critical error, but in fact we are only waiting for couple of seconds for our encoder to complete RTMP handshake.

Can You help somehow ? We must avoid situation that breaks user experience.

Hi,

We have tested this error extensively, and are on our way to make work-around. We will use HTTPProvider to synchronize consumer and stream publisher.

Here is the code that we use to check if String streamName stream is published:

		IApplication application = vhost.getApplication(applicationName);
		List appInstances = application.getAppInstanceNames();
		Iterator<String> iterAppInstances = appInstances.iterator();
		while (iterAppInstances.hasNext()) {
			String appInstanceName = iterAppInstances.next();
			IApplicationInstance appInstance = application.getAppInstance(appInstanceName);
			if (appInstance == null) continue;
			
			//IMediaStream stream = appInstance.getStreams().getStream(streamName);
			boolean isPublished = false;
			List<String> streams = appInstance.getStreams().getPublishStreamNames();
			for( String name : streams ) {
				if (name.equals(streamName)) {
					return true;
				}
			}
		}
		return false;

This works for RTMP streams but not for cupertino stream. Examining log output I can tell that cupertino packetizer starts after 6 second delay !

  1. Is there a way to determine is cupertino packetizer enabled for particular stream ?

  2. Is there a way to start cupertino packetizer as soon as possible ?

Please Help.

Solution for packetizer start:

// start packetizer:
MediaStreamMap map = stream.getStreams();
ILiveStreamPacketizer packetizer = map.getLiveStreamPacketizer(stream.getName(), "cupertinostreamingpacketizer", true);
packetizer.startStream(stream);

Hello,

I am Alex’s collegue, and I have written player in JS.

We are handling all error events per W3C Specification of Video tag. Problem is that no error handler is triggered by this error. My hunch is that is more like iOS error, in which he cannot read some package that he should be able to process it.

I will try surrounding code with try / catch and I will get back to you 10AM PST

All best