• How to use Wowza GoCoder video broadcasting iOS app

    This article describes how to use the Wowza GoCoder app for live streaming to a Wowza media server. Wowza GoCoder is a live audio and video encoding application designed for the Apple iPad (second generation and later), iPad Mini, iPhone (3GS and later), and iPod touch (fourth generation and later). You can use Wowza GoCoder to capture and deliver live audio and video content over 4G, 3G, and Wi-Fi systems to a Wowza media server, which could then broadcast the content as HD-quality H.264 adaptive bitrate streams to any screen.

    Notes:
    • Wowza® GoCoder™ is available for purchase from the Apple App Store.
    • You can publish live streams from Wowza GoCoder to the following Wowza media server software versions:
      • Wowza Streaming Engine™ 4.0 and later
      • Wowza Media Server® 3.0 and later
    • If you're running the iOS 7 mobile operating system on your device, you must use Wowza GoCoder 1.2.1 or later.
    • Important: If you are using Wowza GoCoder 1.2.0 or earlier, we recommend that you upgrade to the latest Wowza GoCoder version to resolve potential issues with the app's Video Settings. For more information, see Installing Wowza GoCoder on iOS 7.

    Contents


    Configure Wowza media server software
    Configure Wowza GoCoder App
    Playback
    Troubleshooting
    Related Articles

    Configure Wowza media server software


    Follow the instructions in the "Configuration" section in How to set up live streaming using an RTSP/RTP-based encoder to create a live streaming application. This tutorial provides instructions for creating an application named live using both Wowza Streaming Engine software and Wowza Media Server software.

    Configure Wowza GoCoder App



    1. Launch the Wowza GoCoder app on your iOS device. An instructional overlay image is displayed on top of the application after it launches.


      The overlay provides a brief description of each of the app's buttons. To dismiss it, tap anywhere on the screen. To dismiss the overlay image permanently, tap the X character.


      Note: For devices that don't have an LED flash for the rear-facing (iSight) camera, only the Switch camera button is available in the upper-left corner of the app.

      The camera button isn't displayed on iPhone (3GS and later) devices, which have only a front-facing (FaceTime) camera.
    2. Specify the Wowza server information. Tap the Server button in the upper-right corner of the app to display the Server page.


      1. Tap Host, enter Server and Port information, and then tap Back.

        • In Server, enter the Wowza server IP address or hostname.

        • In Port, enter the port used for streaming. By default, a Wowza media server binds to TCP port 1935 for all forms of streaming.

      2. Tap Application, enter Application and Stream Name information, and then tap Back.

        The above example shows what you should enter if your Wowza media server application name is live and your stream name is myStream.

      3. Tap Publisher Login, enter Publisher Name and Password information, and then tap Done.

        The Publisher Name and Password information is stored in the [install-dir]/conf/publish.password file in the Wowza media server installation.

      Note: If you're running Wowza Streaming Engine Manager on your iOS device that has the GoCoder app, you can automatically configure the app with the live application connection settings to publish a stream from Wowza GoCoder to a live application. If you're running Streaming Engine Manager on the local server computer or on a remote computer, you can send the connection settings for a live application to an email app on the device and launch GoCoder with the prescribed settings by clicking the URL in the email message. For more information, see How to connect a publisher to Wowza Streaming Engine.
    3. Specify encoding settings for video and audio. Tap the Options button in the upper-right corner of the app to display the Options page.


      Video

      For video streams, do the following:

      1. Tap Stream, tap either Video + Audio or Video Only, and then tap Back.


      2. Tap Video Settings, specify the Frame Rate, Key Frame Interval (number of frames between key frames), and Transport protocol, and then tap Back.

        Set Transport to TCP if you intend to encode a stream for a lengthy period of time. TCP also works better when network conditions might be unstable. If you use the TCP protocol for streaming, the app might stream at a higher bitrate than the network connection can handle and this will cause latency in the stream between the app and the server. If the amount of latency is unacceptable, try setting the protocol to UDP.

      3. Tap Video Size, select a video size, and then tap Back.

        The available Video Size values will vary depending on device capabilities and network connection type.

      4. To apply a filter to the video output, select one of the following video filters at the bottom of the Options page: No Filter, B/W (black-and-white), Blur, B/W Blur. Then tap Done.

      Audio

      For audio-only streams, do the following:

      1. Tap Stream, tap Audio Only, and then tap Back.


        This setting removes any video that's present from the encoded stream, meaning that only the audio portion is delivered to the Wowza media server. If everything is configured correctly, you'll see the following message displayed in the app:

        Audio-only

      2. To specify the transport protocol for the audio-only stream, tap Video Settings, tap either TCP or UDP, and then tap Done.

        Set Transport to TCP if you intend to encode a stream for a lengthy period of time. TCP also works better when network conditions might be unstable. If you use the TCP protocol for streaming, the app might stream at a higher bitrate than the network connection can handle and this will cause latency in the stream between the app and the server. If the amount of latency is unacceptable, try setting the protocol to UDP.


      Auto Restart

      To specify that the GoCoder app should start streaming to the Wowza media server after the connection is lost and then re-established, slide the Auto Restart button to ON.


    4. Specify the encoded bitrate for the stream. Tap the bitrate button in the lower-left corner of the app to show the available bitrates.


      In the bitrate bar, select the highest bitrate value that you want to stream.

      The available bitrates will vary depending on device capabilities, the selected Video Size, and network connection type.

      Note: To configure adaptive bitrate streaming, which uses streams encoded at multiple bitrates, you must configure Wowza Transcoder AddOn. The AddOn will decode the video and audio of the incoming single bitrate live stream and re-encode it to multiple bitrates with properly aligned key frames for adaptive bitrate delivery. For more information, see How to set up and run Wowza Transcoder AddOn for live streaming.
    5. (If needed) For devices that have an LED flash for the rear-facing (iSight) camera, tap the LED flash button () in the upper-left corner of the app to enable LED flash mode. Setting LED flash mode to ON provides extra light.

      Tap the button again to disable LED flash mode (set to OFF).

    6. For devices that have front-facing (FaceTime) and rear-facing (iSight) cameras, tap the camera switch button () in the upper-left corner of the app to toggle the selected camera.

    7. To broadcast to the Wowza media server, tap the Encode button.


      If everything is configured correctly, you'll see the following message displayed in the app:

      Stream Started

      When the stream starts, the orientation of the encoded video is the same as the orientation of the device (either portrait or landscape). Rotating the device won't adjust the stream to the alternate orientation. Instead, you must stop encoding, rotate the device, and then start encoding again.

      To stop the broadcast to the Wowza media server, tap the Encode button again. You'll see the following message displayed in the app:

      Stream Ended

    URL configuration method

    Wowza GoCoder version 1.3.0 and above supports configuration through custom URLs. You can click a custom URL on your iOS device to launch GoCoder in a preconfigured state based on URL parameters.

    URL example:
    Code:
    gocoder://configure/?publishHost=10.0.1.3&publishPort=1935&publishApplication=live&publishStream=wowza&publishUser=wowza&publishPassword=wowza&publishFrameSize=6
    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.

    Available URL parameters:

    • publishUseTCP = [YES | NO]
    • publishHost = [hostname]
    • publishPort = [integer]
    • publishApplication = [application]
    • publishStream = [stream]
    • publishUser = [publish-username]
    • publishPassword = [publish-password]
    • publishAutoStart = [YES | NO]
    • publishAutoRestart = [YES | NO]
    • publishBroadcastType = [integer] value from 0-2 [0 = "Audio", 1 = "Video", or 2 = "Audio/Video"]
    • publishFPS = [float] value to indicate the frame rate, for example: 30.00
    • publishKeyFrameInterval = [integer] value to indicate the key frame frequency (number of frame between key frames)
    • publishBitrateIndex = [integer] value from 0-3 [0 = "Low", 1 = "Medium", 2 = "High", 3 = "Very High"]. The actual value that results depends on the selected frame size
    • publishFrameSizeIndex = [integer] value from 0-8 corresponding to the following available frame sizes in GoCoder:
      • 0 = 192x144
      • 1 = 320x240
      • 2 = 352x240
      • 3 = 352x288
      • 4 = 480x360
      • 5 = 640x360
      • 6 = 640x480
      • 7 = HD720
      • 8 = HD1080
    • publishFilterType = [integer] value from 0-3 for available filters [0 ="None", 1 = "BW", 2 = "Blur", 3 = "BW Blur"]

    Notes:
    • Keep in mind that this URL, while internal to the device, isn't secure. The publishPassword parameter is in clear text on the device.
    • Test the URL carefully. Incorrect parameter values can cause GoCoder to behave incorrectly.

    Playback


    Playback in Wowza Streaming Engine Manager

    In Streaming Engine Manager, click the Test Players button in the upper-right corner of the live application page. The Test Players window that opens 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 the Adobe HDS protocol to play myStream, click the Adobe tab, and then click Start.


    The test players are also online at www.wowza.com/testplayers.

    Playback in Wowza example players

    You can use example players installed with the Wowza media server software to test the stream on your live streaming application. For more information see the following articles:


    Troubleshooting


    Installing Wowza GoCoder on iOS 7

    • If you're running the iOS 7 mobile operating system, be sure to download Wowza GoCoder 1.2.1 or later from the Apple App Store. This GoCoder version is designed to work with iOS 7.

    • If you upgraded from a previous version of Wowza GoCoder to Wowza GoCoder 1.2.0 or later, some GoCoder Video Settings may be invalidated. Pay special attention to the Frame Rate and Key Frame Interval values, which may have been reset to 0. Set both of these settings to a non-zero value (30 is recommended).

      Note: This issue can occur for the following upgrade scenarios:
      • You upgraded the GoCoder app from a previous version to version 1.2.0 (or later) and then upgraded your mobile operating system to iOS 7.
      • You upgraded your mobile operating system to iOS 7 and then upgraded the GoCoder app to version 1.2.0 (or later).

      You can resolve this issue by upgrading to Wowza GoCoder 1.2.1 or later, or by updating the Wowza GoCoder 1.2.0 app Video Settings as described above.

    Invalid user name or password

    The following message indicates that the contents of your [install-dir]/conf/publish.password file don't match what you entered in the Server > Login settings.

    Invalid User or Password

    No video

    If you expect both video and audio to be present in your stream but only audio is present, the app might be configured to stream audio-only. Review step 3 in Configure Wowza GoCoder App to make sure that the app is configured to deliver video to the Wowza media server.

    Connection issues

    If the app can't connect to the Wowza media server, open the following URL in a web browser to verify that the server is running:

    http://[wowza-ip-address]:1935

    The Wowza media server software version and build number should be displayed in the webpage. If it isn'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 your Host information in the app is correct. Make sure that the Server value only contains the server IP address or hostname. It must not contain a complete publishing URL.

    Interruptions from FaceTime calls and push notifications

    When FaceTime calls and push notification alerts are received, Wowza GoCoder is suspended and the app stops capturing and streaming video. If you decline the phone call or dismiss the notification message, it resumes encoding. If you answer the phone call, the app stops running and you must restart it to resume encoding. To prevent calls and notifications from interrupting your broadcast, you can configure the Do Not Disturb feature on your device.

    Multitasking

    Wowza GoCoder doesn't support multitasking. If you put the app into the background, audio and video resources are released to the system and the app is disconnected from the Wowza media server.

    Latency

    Latency between Wowza GoCoder and a Wowza media server should be less than 2 seconds using default settings. If the delay is longer than 2 seconds, you can try setting the Streams/StreamType property in Application.xml to rtp-live-lowlatency. For Wowza Streaming Engine software, you can do this by enabling the Low-latency stream option on the live application's Setup tab in Streaming Engine Manager.

    If you use the TCP protocol for streaming, the app might stream at a higher bitrate than the network connection can handle and this will cause latency in the stream between the app and the server. You can try setting the protocol to UDP.

    Server-to-device latency is typically higher for Apple HLS streams than for Adobe HDS streams. The key frame frequency that you specify in the app and the chunk duration interval that's specified in the Wowza media server 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 HTTP Live Streaming 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 achieve the lowest latency from capture to playback.

    Battery life

    Encoding makes heavy use of device hardware and may drain your battery faster than some other apps.

    Updated: For Wowza GoCoder (iOS) 1.4.0 on 04-03-2014