• How to use Wowza GoCoder video broadcasting iOS app

    This article describes how to use the Wowza GoCoder encoding app on Apple devices to publish live streams to a Wowza™ media server. Wowza GoCoder is a live audio and video encoding application designed for the Apple iPad Pro, iPad Air, iPad Mini, iPhone, and iPod touch devices running iOS 8.0 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 can then broadcast the content as HD-quality H.264 adaptive bitrate streams to any screen.

    Notes:

    Contents


    Configure Wowza media server software
    Configure Wowza GoCoder App
    Launching GoCoder with 3D Touch Quick Actions
    Using GoCoder with an Apple Watch
    Playback
    Sharing a stream playback URL to social media
    Troubleshooting
    More resources

    Configure Wowza media server software


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

    Configure Wowza GoCoder App


    The connection from GoCoder to the Wowza Streaming Engine media server is configured within the GoCoder app.

    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 from the Sources (Live) page in the manager. 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. For more information, see the URL configuration method section.
    To configure connection and recording settings in Wowza GoCoder:

    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.



      Notes:

      • To show the help overlay on app startup again, tap the Options button in the upper-right corner of the app, tap More Options, and then toggle Show Help Screen.

      • 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. To specify the Wowza media server information, tap the Connect button (the Wowza gear icon) in the upper-right corner of the app.

    3. On the Connect To page, tap Wowza Streaming Engine.



      Note: For information on how to use the GoCoder app with the Wowza Streaming Cloud service, see How to connect Wowza GoCoder to Wowza Streaming Cloud.
      The Engine page lets you provide information about the Host, Application, and Source Authentication.



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



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

        • For 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 Source Authentication, enter the Source Username and Source Password, and then tap Done.



        The Source Username and Source Password are configured in the Source Authentication page in Wowza Streaming Engine Manager. For more information on creating source accounts, see Authenticating connections from live sources.

    4. 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 Framerate and Keyframe Interval (number of frames between keyframes), and then tap Back.



        Note: Enable Allow Rotated Video if you want the video output to match the orientation of the camera. If you want to keep the video output upright and be able to switch from portrait to landscape mode, keep Allow Rotated Video off.
      3. Tap Video Size, select a video size, tap Back, and then tap Done.



        The available Video Size values will vary depending on device capabilities.

      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


      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, toggle the Auto Restart button to ON.



    5. 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 in Wowza Streaming Engine. Transcoder will decode the video and audio of the incoming single bitrate live stream and re-encode it to multiple bitrates with properly aligned keyframes for adaptive bitrate delivery. For more information, see How to set up and run Wowza Transcoder for live streaming.
    6. (Optional) 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).

    7. 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.

    8. (Optional) If you want to share your broadcast link to a social media account, configure a default Message and webpage URL to use in a post after you have started your broadcast. For more information, see Sharing a stream playback URL to social media.

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



      If everything is configured correctly, a broadcast timer begins to track the duration of the stream and and you'll see the following message displayed in the app:

      Stream Started

      By default, the GoCoder app adjusts the video's focus and exposure (how light or dark the video is) when streaming. However, you can change the focus and exposure behavior by tapping on the screen:

      • Single tap Auto-focuses on that point and locks. Exposure isn't affected.

      • Double tap Auto-adjusts exposure on that point and locks. Focus isn't affected.

      • Triple tap Resets to continuous auto-focus and auto-exposure.

      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 later 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.

    To send a configuration URL link to your device:

    1. In Wowza Streaming Engine Manager, select your live application, click Sources (Live), and then click Wowza GoCoder.

    2. Make sure the application connection settings are correct, and then click Email Me. A new email opens in your default email program with a GoCoder configuration link generated from your connection settings.

    3. Enter the email address you want to send the configuration URL to and then append any other custom parameters with their values to the end of the iOS URL (separate each parameter with an &). The following URL is an example configuration link for iOS devices:

      gocoder://configure/?publishHost=10.0.1.3&publishPort=1935&publishApplication=live&publishStream=wowza&publishUser=wowza&publishPassword=wowza&publishFrameSize=6
      Available URL parameters:

      • 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] value from 0-2 [0 = "Audio", 1 = "Video", or 2 = "Audio/Video"]
      • publishFPS = [float] value to indicate the framerate, for example: 30.00.
      • publishKeyFrameInterval = [integer] value to indicate the keyframe frequency (number of frames between keyframes).
      • 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-10 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
        • 9 = 960x540
        • 10 = UHD2160
      • publishCamera = [FRONT | BACK] (use the front or back camera by default).

    4. Send the email, open the email on your device, and then tap the configuration URL to launch GoCoder with those settings.

    Notes:
    • 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.

    • 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.

    • Test the URL carefully. Incorrect parameter values can cause GoCoder to behave incorrectly.

    Launching GoCoder with 3D Touch Quick Actions


    If your device includes 3D Touch, you can use Quick Actions on the GoCoder app icon from the Home screen to start and stop a stream or open Connection Settings and Options for a new stream.



    Using GoCoder with 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.



    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 on our Wowza Test Players webpage.

    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:


    Sharing a stream playback URL to social media


    You can send or post a custom message and webpage URL via email, text, AirDrop, Facebook, or Twitter. This message and webpage URL can be configured in your GoCoder settings.

    Note: The webpage URL that contains your streaming video can also be sent to GoCoder using the URL configuration in Wowza Streaming Engine Manager.
    To announce your streaming broadcast to a social media account:

    1. Before you start your stream, tap the Options button in the upper-right corner of the app to display the Options page.

    2. Tap More Options and then tap Sharing.



    3. Tap the Message text and customize the message that GoCoder will post to your social media account.

    4. Tap URL to enter the URL of the website that contains your embedded video stream. This URL will be automatically appended to the Message.

    5. Tap Done to save the Sharing settings.

    6. After you start your broadcast, tap the Sharing button in the upper-right corner of the app and then tap the application where you want to post the announcement. Depending on the features in the application, this Sharing dialog lets you check your message and URL text, see how many characters remain before reaching the maximum post size, and lets you add your Location. A preview image of the stream is also added to the post.



    7. Tap Post or Send to share the broadcast announcement on that social media account.



    Troubleshooting


    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 4 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.

    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 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 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 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. To display the device's battery status and clock on the GoCoder interface, tap the Options button, tap Interface, and then toggle Show status bar.


    More resources



    Originally Published: 04-30-2013.
    Updated: For Wowza GoCoder (iOS) 2.0 on 12-15-2015.

    If you're having problems or want to discuss this article, post in our forum.