flutter_wowza

Flutter WOWZA plugin for iOS/Android. The project is based on Wowza GoCoder SDK


Keywords
flutter, flutter-plugin, gocoder, wowza
License
BSD-2-Clause

Documentation

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

Feature Android iOS
WOWZMediaConfig.FRAME_SIZE_176x144 ✔️
WOWZMediaConfig.FRAME_SIZE_320x240 ✔️
WOWZMediaConfig.FRAME_SIZE_352x288 ✔️ ✔️
WOWZMediaConfig.FRAME_SIZE_640x480 ✔️ ✔️
WOWZMediaConfig.FRAME_SIZE_960x540 ✔️
WOWZMediaConfig.FRAME_SIZE_1280x720 ✔️ ✔️
WOWZMediaConfig.FRAME_SIZE_1440x1080 ✔️
WOWZMediaConfig.FRAME_SIZE_1920x1080 ✔️ ✔️
WOWZMediaConfig.FRAME_SIZE_3840x2160 ✔️ ✔️

scaleMode

Feature Android iOS
ScaleMode.FILL_VIEW ✔️ ✔️
ScaleMode.RESIZE_TO_ASPECT ✔️ ✔️
IOS Android Flutter
hostAddress hostAddress hostAddress
portNumber portNumber portNumber
applicationName applicationName applicationName
streamName streamName streamName
username username username
password password password
videoFrameRate videoFrameRate fps
videoBitrate videoBitrate bps
audioSampleRate audioSampleRate khz
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.isTorchOn WOWZCameraView.camera.isTorchOn flashLight
GoCoder.isAudioMuted WOWZAudioDevice.isMuted muted
cameraView.isSwitchCameraAvailable WOWZCameraView.isSwitchCameraAvailable isSwitchCameraAvailable
GoCoder.isStreaming WowzaGoCoder.isInitialized isInitialized
GoCoder.startStreaming WOWZBroadcast.startBroadcast startBroadcast
GoCoder.endStreaming WOWZBroadcast.endBroadcast endBroadcast

Project that is still being developed