Blancduman/mediasoup-client-flutter
Flutter version of the mediasoup-client library.
github 로 이동하여 다운로드mediasoup_client_flutter
Android | iOS | macOS | Windows | Linux | Web | |
---|---|---|---|---|---|---|
Unified-Plan | ✔ | ✔ | ✔ | ✔ | ✗ | ✔ |
No datachannels yet;
Usage Example
import 'package:mediasoup_client_flutter/mediasoup_client_flutter.dart';
import 'package:my_project/my_signaling.dart';
// Create a device.
final device = Device();
// Communicate with server app to retrieve router RTP capabilities.
final Map<String, dynamic> routerRtpCapabilities = await mySignaling.request('getRouterCapabilities');
// Load the device with the router RTP capabilities.
final rtpCapabilities = RtpCapabilities.fromMap(routerRtpCapabilities);
await device.load(routerRtpCapabilities: rtpCapabilities);
// Check wheter we can produce video to the router.
if (!device.canProduce(RTCRtpMediaType.RTCRtpMediaTypeVideo)) {
print('cannot produce video');
// Abort next steps.
}
// Create a transport in the server for sending our media through it.
final Map transportInfo = await mySignaling.request('createTransport', {
'forceTcp': false,
'producing': true,
'consuming': false,
'sctpCapabilities': device.sctpCapabilities.toMap(),
});
// Create a callback for producers.
void _producerCallback(Producer producer) {
/* Your code. */
}
final sendTransport = device.createSendTransportFromMap(
transportInfo,
producerCallback: _producerCallback,
);
// Set transport "connect" event handler.
sendTransport.on('connect', (Map data) {
// Here we must communicate our local parameters to our remote transport.
mySignaling.request('transport-connect', {
'transportId': _sendTransport.id,
'dtlsParameters': data['dtlsParameters'].toMap(),
})
// Done in the server, tell our transport.
.then(data['callback'])
// Something was wrong in server side.
.catchError(data['errback']);
});
// Set transport "produce" event handler.
_sendTransport.on('produce', (Map data) async {
// Here we must communicate our local parameters to our remote transport.
try {
Map response = await mySignaling.request(
'produce',
{
'transportId': sendTransport.id,
'kind': data['kind'],
'rtpParameters': data['rtpParameters'].toMap(),
if (data['appData'] != null)
'appData': Map<String, dynamic>.from(data['appData'])
},
);
// Done in the server, pass the response to our transport.
data['callback'](response['id']);
} catch (error) {
// Something was wrong in server side.
data['errback'](error);
}
});
// Produce our webcam video.
Map<String, dynamic> mediaConstraints = <String, dynamic>{
'audio': false,
'video': {
'mandatory': {
// Provide your own width, height and frame rate here.
'minWidth': '1280',
'minHeight': '720',
'minFrameRate': '30',
},
},
};
final MediaStream stream = await navigator.mediaDevices.getUserMedia(mediaConstraints);
final MediaStreamTrack track = stream.getVideoTracks().first;
sendTransport.produce(
stream: stream,
track: track,
source: 'webcam',
);
// Producer will return through _producerCallback.
Check example for more information;
Blancduman/mediasoup-client-flutter 에 관련된 우수 프로젝트 추천 다운로드
AppFlowy
47859
AppFlowy is an open-source alternative to Notion. You are in charge of your data and customizations. Built with Flutter and Rust.
localsend
33797
An open-source cross-platform alternative to AirDrop
spotube
23772
🎧 Open source Spotify client that doesn't require Premium nor uses Electron! Available for both desktop & mobile!
revanced-manager
15035
💊 Application to use ReVanced on Android
gsy_github_app_flutter
14559
Flutter 超完整的开源项目,功能丰富,适合学习和日常使用。GSYGithubApp系列的优势:我们目前已经拥有Flutter、Weex、ReactNative、kotlin 四个版本。 功能齐全,项目框架内技术涉及面广,完成度高,持续维护,配套文章,适合全面学习,对比参考。跨平台的开源Github客户端App,更好的体验,更丰富的功能,旨在更好的日常管理和维护个人Github,提供更好更方便的驾车体验Σ( ̄。 ̄ノ)ノ。同款Weex版本 : https://github.com/CarGuo/GSYGithubAppWeex 、同款React Native版本 : https://github.com/CarGuo/GSYGithubApp 、原生 kotlin 版本 https://github.com/CarGuo/GSYGithubAppKotlin
dio
12249
A powerful HTTP client for Dart and Flutter, which supports global settings, Interceptors, FormData, aborting and canceling a request, files uploading and downloading, requests timeout, custom adapters, etc.
gopeed
11832
A modern download manager that supports all platforms. Built with Golang and Flutter.
bloc
11441
A predictable state management library that helps implement the BLoC design pattern
getx
9899
Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Get.
flame
8846
A Flutter based game engine.
flutter_deer
7595
🦌 Flutter 练习项目(包括集成测试、可访问性测试)。内含完整UI设计图,更贴近真实项目的练习。Flutter practice project (including integration testing and accessibility testing). Contains complete UI design drawings for a more realistic practice project.
fish-redux
7343
An assembled flutter application framework.
fl_chart
6451
FL Chart is a highly customizable Flutter chart library that supports Line Chart, Bar Chart, Pie Chart, Scatter Chart, and Radar Chart.
pixez-flutter
6360
一个支持免代理直连及查看动图的第三方Pixiv flutter客户端
Flutter-Responsive-Admin-Panel-or-Dashboard
6355
Responsive Admin Panel or Dashboard using Flutter
aidea
6021
AIdea 是一款支持 GPT 以及国产大语言模型通义千问、文心一言等,支持 Stable Diffusion 文生图、图生图、 SDXL1.0、超分辨率、图片上色的全能型 APP。
riverpod
5828
A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
pikapika
5463
美观易用且无广告的漫画和游戏客户端,同时支持MacOS,Windows,Android,iOS。
provider
5029
InheritedWidgets, but simple
getwidget
4416
Most popular and easy to use open source UI library with 1000+ Widgets to build flutter app.