Wowza GoCoder SDK FAQ

This article answers frequently asked questions about Wowza GoCoder™ SDK.

General capabilities


Can I grab individual frames or snapshots with the GoCoder SDK?

Yes. Use the WOWZVideoSink protocol in the iOS SDK or the WOWZRenderAPI.VideoFrameListener interface in the Android SDK.

Can I develop an app using GoCoder SDK that runs in the background and streams from camera and microphone?

The iOS SDK can continue streaming audio once the app is placed in the background, but due to camera access restrictions for background apps enforced by Apple, it can't continue streaming video.

The capability to stream both video and audio in the background is planned for a future release of the Android SDK.

Can I record video to a local device while streaming it to Wowza Streaming Engine?

Yes, you can use the WOWZMP4Writer class to record a stream onto a local device as you broadcast to Wowza Streaming Engine™ media server software. Be aware that the recording stops if the broadcast is moved to the background the device. (Audio may be captured but only black video frames are recorded.) With the Android SDK you can access the recorded file locally.

For more information, see the MP4 capture activity in the Android sample app or the Wowza GoCoder SDK Sample App for Objective-C or Swift in the iOS SDK.

Does the SDK support switching between portrait and landscape orientation while streaming?

The frame size of the video stream always remains constant while streaming. This means that a 1280x720 stream doesn't become 720x1280 if you rotate the device while streaming. However, the SDK supports a configuration option that can be set to one of three different modes (same as the device default, always landscape, or always portrait) that affect the appearance of the video stream when the orientation of the device changes while streaming.

By default, the stream maintains the orientation of the device and fills the full frame. In this mode, if you turn the device upside down while streaming, the video stream appears upside down, too.

In the other modes, the stream maintains the orientation of the device when streaming was initiated. In this mode, if you start streaming in one orientation (say, landscape) and then rotate the device 90 degrees (say, to portrait), the stream will rotate back to the original orientation so that it remains upright. In the example of the device turning from landscape to portrait, the frame size of the video will shrink so that it becomes letter-boxed, displaying the full frame but with black bars across the top and bottom while the device is in portrait orientation.

Can I mute during streaming?

Yes.

What is the maximum resolution supported by GoCoder SDK?

The GoCoder SDK can encode and broadcast up to 3840x2160, or 8.3 megapixels (4K). Playback, however, is only supported up to 1920x1080 pixels.

How do I connect GoCoder SDK to Wowza Streaming Engine and Wowza Streaming Cloud?

See these articles for instructions:

Protocols and latency


What protocol does the GoCoder SDK use to stream to Wowza Streaming Engine?

GoCoder SDK uses the proprietary WOWZ™ protocol, a TCP-based low-latency streaming protocol.

Does the GoCoder SDK support WOWZS?

No, the GoCoder SDK doesn't support WOWZS, which is the Secure Sockets Layer implementation of WOWZ.

How do you configure Wowza Streaming Engine and Wowza Streaming Cloud for low latency?

For the Wowza Streaming Cloud™ service, see How to address network congestion by using a stream source and Deliver a reduced-latency HLS stream in Wowza Streaming Cloud.

For Wowza Streaming Engine, see Set up low-latency applications in Wowza Streaming Engine for RTMP streaming.

Is the GoCoder SDK IPv6 compatible?

Yes, the GoCoder SDK is IPv6 compatible.

iOS SDK questions


What are the minimum system requirements for the iOS SDK?

The GoCoder SDK for iOS requires iOS SDK 8.01 or later and Xcode 7 or later. For install instructions, see Install GoCoder SDK for iOS.

Can the SDK be used to develop both Objective-C and Swift-based apps?

Yes. The SDK is delivered as an iOS framework that can be used with both Objective-C and Swift development.

Does the SDK work with Titanium, Cordova, or other frameworks?

Yes. Titanium SDK and other mobile frameworks can be used with GoCoder SDK to develop live streaming apps. Currently, Wowza doesn't offer plug-ins for these frameworks or platforms, but we encourage developers to create plug-ins for their needs.

Why do I get a "Permission denied" error when building an Xcode project using the GoCoder SDK framework?

If you encounter a permission-denied error, do the following:

  1. In the error messages displayed in the Xcode build log, locate the full path to the file named strip-frameworks.sh.
  2. Open a Terminal window, and enter the command:
chmod 777 <filepath

Android SDK questions


What are the minimum system requirements for the Android SDK?

The GoCoder SDK for Android requires Android 5.0 (API level 21) or later for broadcasting and Android 6.0 (API level 23) or later for playback. Android Studio 1.2.0 or later is also required. For install instructions, see Install GoCoder SDK for Android.

Can I use Camera2 API in Android instead of the APIs provided with your Android SDK?

The WOWZGLBroadcaster class in the GoCoder SDK for Android can be used to capture and stream video content from practically any source, including the Camera2 API.

Licensing


Why am I getting an error that my license key is invalid?

The most common reason the license key doesn't validate is that the app bundle ID (iOS) or application ID (Android) doesn't match the ID that was supplied to Wowza when the key was generated.

How do I check the app ID?

On iOS, the bundle identifier is set in the General section of Xcode's target settings view. Make sure that the value in the Bundle Identifier field matches the ID you supplied to Wowza to generate the license key.

On Android, the application ID is typically set in the defaultConfig section of the /app/build.gradle file as follows:

android {
    ...
    defaultConfig {
        applicationId 'com.mycompany.myapp'
        ...