Skip to content

VNAPNIC/flutter-wowza

Repository files navigation

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

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