api.video is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand & low latency live streaming features in your app.
This module is made for broadcasting RTMP live stream from smartphone camera.
Run the following command at the root of your project:
flutter pub add apivideo_live_streamIn your dart file, import the package:
import 'package:apivideo_live_stream/apivideo_live_stream.dart';To be able to broadcast, you must:
- On Android: ask for internet, camera and microphone permissions:
 
<manifest>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CAMERA" />
</manifest>The library will require android.permission.CAMERA and android.permission.RECORD_AUDIO at runtime. You don't need to request them.
- On iOS: update the Info.plist with a usage description for camera and microphone
 
<key>NSCameraUsageDescription</key>
<string>Your own description of the purpose</string>
<key>NSMicrophoneUsageDescription</key>
<string>Your own description of the purpose</string>- Creates a live stream controller
 
final ApiVideoLiveStreamController _controller = ApiVideoLiveStreamController(
    initialAudioConfig: AudioConfig(), initialVideoConfig: VideoConfig.withDefaultBitrate());- Initializes the live stream controller
 
await _controller.initialize();- Adds a CameraPreview widget as a child of your view
 
@override
Widget build(BuildContext context) {
  return SizedBox(
      width: 300.0,
      height: 300.0,
      child: ApiVideoCameraPreview(controller: _controller));
}ApiVideoCameraPreview parameters:
controller: the live stream controllerfit: the fit of the preview (default is BoxFit.contain, see BoxFit for more information)child: a child widget to overlay on top of the preview (optional)
- Starts a live stream
 
_controller.startStreaming("YOUR_STREAM_KEY");- Stops streaming and preview
 
_controller.stop();On the application side, you must manage application lifecycle:
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
  if (state == AppLifecycleState.inactive) {
    _controller.stop();
  } else if (state == AppLifecycleState.resumed) {
    _controller.startPreview();
  }
}You can try our example app, feel free to test it.
Be sure to follow the Flutter installation steps before anything.
- Open Android Studio
 - File > New > Project from Version Control
 
In URL field, type:
[email protected]:apivideo/api.video-flutter-live-stream.gitWait for the indexation to finish.
Connect an Android device to your computer and click on the Run main.dart button.
- 
Connect an iOS device to your computer and click on the
Run main.dartbutton. - 
The build will fail because you haven't set your development profile, sign your application:
 
Open Xcode, click on "Open a project or file" and open
the YOUR_PROJECT_NAME/example/ios/Runner.xcworkspace file.
Click on Example, go in Signin & Capabilities tab, add your team and create a unique bundle
identifier.
api.video Flutter live stream library is using external native libraries:
| Plugin | README | 
|---|---|
| StreamPack | StreamPack | 
| HaishinKit | HaishinKit | 
If you have any questions, ask us in the community or use issues.
