This article describes how to use the Wowza GoCoder™ app on Apple iOS devices to publish a live stream to Wowza Streaming Engine™ media server software. You can use Wowza GoCoder for iOS to capture and send encoded live audio and video over 4G, 3G, and Wi-Fi to a Wowza Streaming Engine server, which can then broadcast the content as HD-quality H.264 adaptive bitrate streams to any screen.
- Wowza GoCoder for iOS requires an iPad, iPhone, or iPod touch device running iOS 8.0 or later and is available in the Apple App Store.
- For instructions on using GoCoder with the Wowza Streaming Cloud™ service, see How to connect Wowza GoCoder to Wowza Streaming Cloud.
- The Wowza GoCoder app doesn't support SSL connections to Wowza Streaming Engine.
Configure Wowza Streaming Engine
Follow the configuration instructions in Set up live streaming using an RTMP-based encoder in Wowza Streaming Engine to create a live application. The GoCoder configuration steps in this article are based on a Wowza Streaming Engine application named live.
If you plan to use adaptive-bitrate streaming, you must also configure Wowza Transcoder. Transcoder will decode the incoming single-bitrate live stream from the GoCoder app and re-encode it to multiple bitrates with properly aligned keyframes. For more information, see Set up and run Wowza Transcoder in Wowza Streaming Engine.
Configure Wowza GoCoder
You can configure the GoCoder app to connect to the Wowza Streaming Engine server by editing settings in the app itself, or by emailing the configuration URL from Wowza Streaming Engine to the iOS device that's running the GoCoder app.
Configure the settings in the GoCoder app
- Open the Wowza GoCoder app on your iOS device.
An instructional overlay appears with descriptions for each of the app's buttons. To dismiss the overlay, tap anywhere onscreen.
- To show the overlay on startup again, tap Options in the upper-right corner of the app and then tap Help.
- Devices that don't have a flash for the rear-facing (iSight) camera don't have a Camera Flash button in the upper-left corner of the app.
- Devices that don't have a front-facing (FaceTime) camera don't have a Switch Camera button in the upper-left corner of the app.
- Tap Connect (the Wowza gear icon) in the upper-right corner of the app.
- On the Connect To screen, tap Wowza Streaming Engine.
- Sequentially tap Host, Application, and Source Authentication, and enter those details as follows. Tap Back to accept your selections and proceed through the settings.
- Host – For Server, enter the Wowza Streaming Engine server's IP address or hostname. For Port, enter the port used for streaming. By default, Wowza Streaming Engine servers bind to TCP port 1935.
- Application – Enter the Application and Stream Name for your Wowza Streaming Engine app. If you're using the default live app, the Application is live and the Stream Name is myStream.
- Source Authentication – Enter the Source Username and Source Password that are specified on the Source Authentication page of your live app in Wowza Streaming Engine Manager. For more information on creating source accounts, see Authenticating connections from live sources.
- Tap Done after you've entered the Wowza Streaming Engine connection details.
Next, specify video and audio encoding settings.
- Tap Options (the slider icon) in the upper-right corner of the app.
- Sequentially tap Stream, Video Settings, and Video Size, and enter those details as follows. Tap Back to accept your selections and proceed through the settings.
- Stream – Select the type of data you want to stream: Video + Audio, Video Only, or Audio Only. Selecting Audio Only removes all video options from the app and sends only audio to Wowza Streaming Engine.
- Video Settings – For Framerate, enter the number of seconds between keyframes, such as 30. For Keyframe Interval, specify the number of frames between keyframes. The keyframe interval should be a multiple of the frame rate.
Turn on Allow Rotated Video to allow the video output to match the orientation of the camera. If you want to keep the video output upright and when the camera switches between portrait and landscape modes, turn off Allow Rotated Video.
- Video Size – Select the size of the video you want to stream. Options vary depending on the device.
- To specify that the GoCoder app should automatically resume streaming if the connection to Wowza Streaming Engine is lost and then reestablished, turn on Auto Restart.
- You can choose whether the device's status bar—the carrier, Wi-Fi strength, current time, and battery status that appear at the top of the screen—in the app. To toggle it on or off, tap More Options and then tap Show Status Bar.
- For information on Sharing, see Share a stream on social media.
- Tap Done after you've specified the stream options.
Next, specify the bitrate for the encoded stream.
- Tap the bitrate button in the lower-left corner of the app and select the bitrate that you want to stream. The available bitrates vary depending on the device's capabilities, the selected Video Size, and network connection type.
Configure the GoCoder app by emailing the connection settings URL
The Wowza GoCoder app can be configured by emailing the connection link from Wowza Streaming Engine to your iOS device. When you open the email on the device, just tap the link URL in the message to open GoCoder so that it's preconfigured based on the connection URL's parameters.
- In Wowza Streaming Engine Manager, select your live application, click Sources (Live), and then click Wowza GoCoder.
- Make sure the application connection settings are correct, and then click Email Me.
Wowza Streaming Engine opens a new email in your default email program. The body of the message contains a GoCoder configuration link generated from your connection settings.
- Enter the desired email address and then append any other custom parameters to the URL. Separate parameters with an ampersand (&). The following URL is an example configuration link for iOS devices:
- publishHost = [wowza-ip-address] or [hostname]
- publishPort = [integer]
- publishApplication = [application-name]
- publishStream = [stream-name]
- publishURL = [playback-URL] to share via social media
- publishUser = [source-username]
- publishPassword = [source-password]
- publishRotationLock = [YES | NO]
- publishAutoStart = [YES | NO]
- publishAutoRestart = [YES | NO]
- publishBroadcastType = [integer] from 0 to 2 where:
- 0 = Audio only
- 1 = Video only
- 2 = Audio and video
- publishFPS = [float] that indicates the frame rate, for example: 30.00
- publishKeyFrameInterval = [integer] that indicates the number of frames between key frames
- publishBitrateIndex = [integer] from 0 to 3 where:
- 0 = Low
- 1 = Medium
- 2 = High
- 3 = Very high
The actual value that results depends on the selected frame size.
- publishFrameSizeIndex = [integer] from 0 to 10 where:
- 0 = 192x144
- 1 = 320x240
- 2 = 352x240
- 3 = 352x288
- 4 = 480x360
- 5 = 640x360
- 6 = 640x480
- 7 = HD720
- 8 = HD1080
- 9 = 960x540
- 10 = UHD2160
- publishCamera = [FRONT | BACK] specifies whether to use the front or back camera by default
- Send the email, open it on the iOS device, and then tap the configuration URL.
GoCoder opens and is configured with the URL and parameters you sent in the email.
- All URL parameters are optional. GoCoder uses default values for parameters that aren't specified. For best results, pass a complete set for all options that you want to configure.
- Check the URL carefully, as typos or invalid values can cause GoCoder to behave incorrectly.
- This configuration URL, while internal to the device, isn't secure. The publishPassword parameter is in clear text on the device.
- Verify your target device supports UHD2160 (4K) streaming before attempting to use this resolution option.
Broadcast an encoded stream from the GoCoder app
- When the GoCoder app is configured and you're ready to broadcast, tap the big red Encode button.
A timer begins to track the duration of the stream and a "Stream Started" message appears in the app.
By default, GoCoder adjusts the video's focus and exposure as it streams. However, you can manually control the focus and exposure behavior by tapping onscreen:
- Single tap – Auto-focuses and locks on that point. Exposure isn't affected.
- Double tap – Auto-adjusts exposure and locks on that point. Focus isn't affected.
- Triple tap – Resets to continuous auto-focus and auto-exposure.
If your device supports it, you can also:
- Tap the Camera Switch button () to toggle between front- and rear-facing cameras.
- Tap the Camera Flash button () to turn the flash on and off.
- To stop the broadcast, tap the Encode button again.
Note: If your device supports 3D Touch Display, you can use Quick Actions on the GoCoder app icon to start and stop a broadcast and to show the Connect Settings and Options screens.
Use GoCoder on an Apple Watch
- Install the GoCoder app on your Apple Watch (enable Show App on Apple Watch for GoCoder in the Apple Watch app) to access start and stop commands, play time, and a video stream preview from your Apple Watch screen.
Play the stream
Play in Wowza Streaming Engine Manager
- In Wowza Streaming Engine Manager, click the Test Players button in the upper-right corner of the live application page.
The Test Players window includes test players that are preconfigured to stream the live stream named myStream over various streaming formats.
Each tab in the Test Players window either hosts a test player that you can use to play the live stream, or provides instructions for playing the live stream. For example, to use Adobe HDS to play myStream, click the Adobe tab, and then click Start.
You can also access the test players on the Wowza Test Players webpage.
Play in Wowza example playersFor information on using the example players installed with the Wowza Streaming Engine to test the stream in your live application, see the following articles:
- How to play video with the example Adobe Flash players (RTMP)
- How to play video with the example Adobe Flash players (San Jose/Adobe HDS)
- How to play video on Apple iOS devices (Cupertino/Apple HLS)
- How to play video with the example Microsoft Silverlight players (Smooth Streaming)
- How to play video on RTSP/RTP players
- How to play video with the example MPEG-DASH players (DASH)
Share a stream on social media
When your stream is broadcasting, you can send or post its playback URL and a custom message via email, text, Facebook, Twitter, and other apps. First, though, configure the sharing options in the GoCoder app.
- In the GoCoder app, tap the Options button in the upper-right corner of the screen.
- Tap More Options and then tap Sharing.
- Tap the Message text and enter a custom message that GoCoder will post to your social media account.
- Tap URL and enter the URL of the website that's hosting the video stream. This URL is appended to the message.
- Tap Done to save the Sharing settings.
- While broadcasting, tap the Sharing button in the upper-right corner of the app and then tap the application you want to use to share the message: Mail, AirDrop, or another application on the device.
Depending on the application, you may be able to check your message and URL text, see how many available characters remain in the post, or add your location.
A preview image of the stream is added to the post.
- Tap Post or Send to share the stream.
"Invalid user name or password" message
If you encounter the message, "Invalid User or Password," it means that the user name or password in your [install-dir]/conf/publish.password file doesn't match what's specified on the Users page in Wowza Streaming Engine Manager. Make them consistent and try again.
No video in the stream
If you expect video and audio to be present in your stream but only audio is present, review Step 7 in Configure the settings in the GoCoder app to make sure it's configured to stream both video and audio.
If the app can't connect to the Wowza Streaming Engine, open the following URL in a web browser to verify that the server is running:
The browser displays the Wowza media server software version and build number. If it doesn't, make sure that the server is running and that TCP port 1935 is open on your router, firewall, and/or software firewall (iptables on Linux).
If the server is running, verify that the Host information in GoCoder is correct and that the Server field only contains the server IP address or hostname. It must not contain a complete publishing URL.
Interruptions from FaceTime calls and push notifications
When a device receives FaceTime calls or push notification alerts, Wowza GoCoder suspends broadcasting. If you decline the call or dismiss the notification, broadcasting resumes. If you answer the call, GoCoder stops running and you must restart it and resume broadcasting.
Latency between Wowza GoCoder and a Wowza Streaming Engine server should be less than 2 seconds using default settings. If the delay is longer than 2 seconds, try enabling the Low-latency stream option on the live application's Setup tab in Wowza Streaming Engine Manager. Alternatively or in Wowza Media Server, set the Streams/StreamType property in Application.xml to rtp-live-lowlatency.
Server-to-device latency is typically higher for Apple HLS streams than for Adobe HDS streams. The keyframe frequency that you specify in the app and the chunk duration interval that's specified in the Wowza Streaming Engine application configuration can affect the latency between the server and the device that receives the stream. For iOS devices, you can tune application configuration properties to reduce latency. For more information, see How to configure Apple HLS packetization (cupertinostreaming).
For tuning suggestions to reduce latency when streaming to Adobe Flash Player and Flash-based players such a JW Player and Flowplayer, see How to set up low latency applications in Wowza Streaming Engine for RTMP streaming.