The project is redeveloping so that it doesn't depend on Wowza gocoder SDK

Wowza Player, Wowza GoCoder SDK, & the technology powering the Ultra Low Latency service in Wowza Streaming Cloud will no longer be available January 5, 2021. Learn more .

flutter_wowza

The project is based on Wowza GoCoder SDK

Learn more about using GoCoder here Android | IOS

Get the Free License Free License

Connect the Wowza GoCoder encoding app to Wowza Streaming Engine Docs | Youtube

Usage

Add flutter-wowza as a dependency in your pubspec.yaml file.

iOS

Add the following entry to your Info.plist file, located in <project root>/ios/Runner/Info.plist:

<key>NSCameraUsageDescription</key>
<string>The camera will be used to capture video for live streaming</string>
<key>NSMicrophoneUsageDescription</key>
<string>The microphone will be used to capture live audio for streaming</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
   <string>armv7</string>
</array>
<key>io.flutter.embedded_views_preview</key>
<true/>

Android

Ensure the following permission is present in your Android Manifest file, located in <project root>/android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.camera.any" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
<uses-feature android:name="android.hardware.microphone" android:required="false" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />

Example

WOWZCameraView(
    androidLicenseKey: "GOSK-9C47-010C-2895-D225-9FEF",
    iosLicenseKey: "GOSK-9C47-010C-A9B9-EB78-3FBD",
    controller: controller,
    statusCallback: (status) {
        print("status: ${status.mState} | ${status.isStarting()} | ${status.isReady()}");
    },
    broadcastStatusCallback: (broadcastStatus) {
        print("status: ${broadcastStatus.state.toString()} | ${broadcastStatus.message}");
    },
)

Control live streams

WOWZCameraController controller = WOWZCameraController();

configuration wowza

controller.setWOWZConfig(
              hostAddress: "xxx.xxx.xxx.xxx",
              portNumber: 1935,
              applicationName: "xxxxxx",
              streamName: "xxxxx",
              username: "xxxx",
              password: "xxxx",
              scaleMode: ScaleMode.FILL_VIEW
          );

Functionality supported

WOWZMediaConfig

FeatureAndroidiOS
WOWZMediaConfig.FRAME_SIZE_176x144:heavy_check_mark:
WOWZMediaConfig.FRAME_SIZE_320x240:heavy_check_mark:
WOWZMediaConfig.FRAME_SIZE_352x288:heavy_check_mark::heavy_check_mark:
WOWZMediaConfig.FRAME_SIZE_640x480:heavy_check_mark::heavy_check_mark:
WOWZMediaConfig.FRAME_SIZE_960x540:heavy_check_mark:
WOWZMediaConfig.FRAME_SIZE_1280x720:heavy_check_mark::heavy_check_mark:
WOWZMediaConfig.FRAME_SIZE_1440x1080:heavy_check_mark:
WOWZMediaConfig.FRAME_SIZE_1920x1080:heavy_check_mark::heavy_check_mark:
WOWZMediaConfig.FRAME_SIZE_3840x2160:heavy_check_mark::heavy_check_mark:

scaleMode

FeatureAndroidiOS
ScaleMode.FILL_VIEW:heavy_check_mark::heavy_check_mark:
ScaleMode.RESIZE_TO_ASPECT:heavy_check_mark::heavy_check_mark:
IOSAndroidFlutter
hostAddresshostAddresshostAddress
portNumberportNumberportNumber
applicationNameapplicationNameapplicationName
streamNamestreamNamestreamName
usernameusernameusername
passwordpasswordpassword
videoFrameRatevideoFrameRatefps
videoBitratevideoBitratebps
audioSampleRateaudioSampleRatekhz
cameraView.start()WOWZCameraView.startPreview()startPreview
cameraView.stop()WOWZCameraView.stopPreview()stopPreview
cameraView.start()WOWZCameraView.continuePreview()continuePreview
cameraView.stop()WOWZCameraView.pausePreview()pausePreview
cameraView.switchCamera()WOWZCameraView.switchCamera()switchCamera
cameraView.camera.isTorchOnWOWZCameraView.camera.isTorchOnflashLight
GoCoder.isAudioMutedWOWZAudioDevice.isMutedmuted
cameraView.isSwitchCameraAvailableWOWZCameraView.isSwitchCameraAvailableisSwitchCameraAvailable
GoCoder.isStreamingWowzaGoCoder.isInitializedisInitialized
GoCoder.startStreamingWOWZBroadcast.startBroadcaststartBroadcast
GoCoder.endStreamingWOWZBroadcast.endBroadcastendBroadcast

Project that is still being developed

Libraries

gocoder
i18n