Git Product home page Git Product logo

ion's People

Contributors

adwpc avatar at-wat avatar billylindeman avatar cgojin avatar cloudwebrtc avatar codeslinger avatar dreamerns avatar feixiao avatar gqadonis avatar hariprasath2603 avatar hn8 avatar jbrady42 avatar jonahzheng avatar kangshaojun avatar katepangliu avatar kevmo314 avatar leewardbound avatar lzh2nix avatar obasajujoshua31 avatar pionbot avatar ravicm avatar renovate-bot avatar renovate[bot] avatar sashaaro avatar sean-der avatar t-yuki avatar tarrencev avatar xuantung95 avatar yedpodtrzitko avatar zhanghe9702 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ion's Issues

Flutter Desktop support using a Webview.

Because we cant use ion on Flutter Desktop we hit on the idea of actually just opening ion in a new Windows that is a Desktop Webview.

The main FLutter app then opens a new window on the desktop just to play ion functionality.

There are 2 desktop webviews we are experimenting with.

https://github.com/zserge/webview/tree/webview-x

  • golang wrapping c.
  • this branch is for supporting Edge and modern webviews. Because Edge is based on Chromium now it should be easier.

The other one is a rust based one.

Flutter Web WebRTC running on Mobile

It would be useful for some use cases if WebRTC can run on Mobiles as a Flutter Web.

  • Allows decoupled application to be built.
  • Instant updates
  • Sucky perf though, but Flutter Web compiler is getting better and better.
  • Sandboxed security and easier for certain Orgs to use.
  • No Need to sign code.

It seems that the WebView on Mobile does NOT give access to the required APIS.

  • SO that rules out using Flutter WebView plugin.
  1. Try out the Flutter Web Webrtc on your IOS device in a browser.
  • Does it work ?

So what about as a PWA then.

  • PWA on IOS i have not used.
  • PWA on Android i have used and google are usign it too. E.g Google Travel and Google Drive so far
  • It maybe that a PWA on Mobile is using A WebView but its has the rights to do WebRTC !
  • Flutter Web does compile as a PWA. No problem there.

What about NOT as a PWA ?

  • Does Flutter Web version run in a browser on Mobile ?

What about Local notifications ?

  • BUT, it will mean that some things like Local Notifications wont work IF the App is NOT open ?

ION KV Data Layer using Tidis

From our discussion, just coping the notes here:

Problem:

How to make the KV store support HA aspects ? Aspects:

  • failure of a node has no effect on the system
  • easy to scale out
  • Run baremetal OR kubernetes

Solutions:

https://github.com/yongman/tidis

  • Will mean that the standard Redis API will work and provide the key features ( LIST, HSet, Sort, TTL)

Publisher multi-stream

Summary

In a one to many/many to many scenario, if a single user of the conference can't handle the bitrate, it would affect all the users in the conference lowering the quality of the video.

If the puplisher uploads at least 2 video quality at the same time [HD,QVGA...] , the SFU router can switch between these qualities, instead lowering the bitrate of publisher.

Additional context

Reference:
opentok

Bring down `ion-web` container size

This needs to be WAY smaller. Will work on investigating now.

pionwebrtc/ion-biz             latest              6bed15054e37        2 days ago          29.2MB
pionwebrtc/ion-islb            latest              538f5994c58e        2 days ago          31.2MB
pionwebrtc/ion-sfu             latest              c99a3a78a84c        2 days ago          33.3MB
pionwebrtc/ion-web             latest              ec77afe750f6        2 days ago          476MB

PNC context deadline exceeded

`root@iot-one:/opt/ion# /opt/ion/bin/biz -c /opt/ion/configs/biz.toml
config /opt/ion/configs/biz.toml load ok!
2020-03-14 23:27:53.715 INF --- Starting Biz Node ---
2020-03-14T23:27:53Z INF WebSocketServer listening on: 0.0.0.0:8443
2020-03-14 23:27:53.715 INF Start pprof on :6060
2020-03-14 23:27:53.715 INF New Service Node Registry: etcd => [127.0.0.1:2379]
2020-03-14 23:27:53.716 INF New Service Watcher: etcd => [127.0.0.1:2379]
2020-03-14 23:27:53.716 INF Start service watcher => [islb].
{"level":"warn","ts":"2020-03-14T23:27:58.717+0800","caller":"clientv3/retry_interceptor.go:61","msg":"retrying of unary invoker failed","target":"endpoint://client-7ec9fc0d-d165-4150-bf83-b1b54c84d266/127.0.0.1:2379","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = latest connection error: connection closed"}
2020-03-14 23:27:58.717 PNC context deadline exceeded
panic: context deadline exceeded

goroutine 1 [running]:
github.com/rs/zerolog.(*Logger).Panic.func1(0xc0008b4040, 0x19)
/root/go_work/pkg/mod/github.com/rs/[email protected]/log.go:338 +0x4f
github.com/rs/zerolog.(*Event).msg(0xc00009e5a0, 0xc0008b4040, 0x19)
/root/go_work/pkg/mod/github.com/rs/[email protected]/event.go:146 +0x200
github.com/rs/zerolog.(*Event).Msgf(0xc00009e5a0, 0xd2a258, 0x2, 0xc0000dde98, 0x1, 0x1)
/root/go_work/pkg/mod/github.com/rs/[email protected]/event.go:126 +0x83
github.com/pion/ion/pkg/log.Panicf(0xd2a258, 0x2, 0xc0000dde98, 0x1, 0x1)
/opt/ion/pkg/log/log.go:49 +0x6d
github.com/pion/ion/pkg/discovery.(*ServiceWatcher).WatchServiceNode(0xc000916c20, 0xd2ac45, 0x4, 0xd684d0)
/opt/ion/pkg/discovery/node.go:142 +0x293
main.main()
/opt/ion/cmd/biz/main.go:41 +0x3ab
`

Flutter sdk for android app does not receive video stream from peers

Your environment.

  • Version: 7da9d01
  • Browser: Chrome for Mac - Version 80.0.3987.162 (Official Build) (64-bit)
  • Other Information:
    Docker CE 2.2.0.4 on MacOS Catalina 10.15.4
    Docker container with Flutter SDK dev channel (latest pull) and Android 28 (build tools 28.0.3, platform tools 28.0.3)

What did you do?

Run container exposing port 8080, connect to bash environment

 docker run -it --rm -p 8080:8080 -v $(pwd):/root/ion android-flutter /bin/bash

Create flutter project using instructions:

cd ~/ion/sdk/flutter/example

./scripts/project_tools.sh create

Create flutter project: name=ion_flutter_example, org=com.github.pion.ion ...
Setting "enable-macos-desktop" value to "true".

You may need to restart any open editors for them to read new settings.
Setting "enable-web" value to "true".

You may need to restart any open editors for them to read new settings.
Recreating project ....
  android/ion_flutter_example_android.iml (created)
  android/app/build.gradle (created)
  android/app/src/main/java/com/github/pion/ion/ion_flutter_example/MainActivity.java (created)
  android/build.gradle (created)
  .idea/workspace.xml (created)
  .idea/runConfigurations/main_dart.xml (created)
  .idea/libraries/KotlinJavaRuntime.xml (created)
  .idea/libraries/Dart_SDK.xml (created)
  .idea/libraries/Flutter_for_Android.xml (created)
  .idea/modules.xml (created)
  ion_flutter_example.iml (created)
  .metadata (created)
  ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (created)
  ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata (created)
  ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (created)
  ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (created)
  ios/Runner/Info.plist (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/AppIcon.appiconset/[email protected] (created)
  ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png (created)
  ios/Runner/Assets.xcassets/LaunchImage.imageset/[email protected] (created)
  ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md (created)
  ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json (created)
  ios/Runner/Assets.xcassets/LaunchImage.imageset/[email protected] (created)
  ios/Runner/Base.lproj/LaunchScreen.storyboard (created)
  ios/Runner/Base.lproj/Main.storyboard (created)
  ios/Flutter/AppFrameworkInfo.plist (created)
  ios/Flutter/Debug.xcconfig (created)
  ios/Flutter/Release.xcconfig (created)
  ios/Runner.xcworkspace/contents.xcworkspacedata (created)
  ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (created)
  ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (created)
  ios/.gitignore (created)
  ios/Runner.xcodeproj/project.pbxproj (created)
  ios/Runner/AppDelegate.m (created)
  ios/Runner/AppDelegate.h (created)
  ios/Runner/main.m (created)
  android/settings.gradle (created)
  android/app/src/profile/AndroidManifest.xml (created)
  android/app/src/debug/AndroidManifest.xml (created)
  android/app/src/main/AndroidManifest.xml (created)
  android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (created)
  android/app/src/main/res/mipmap-hdpi/ic_launcher.png (created)
  android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (created)
  android/app/src/main/res/drawable/launch_background.xml (created)
  android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (created)
  android/app/src/main/res/values/styles.xml (created)
  android/app/src/main/res/mipmap-mdpi/ic_launcher.png (created)
  android/gradle.properties (created)
  android/gradle/wrapper/gradle-wrapper.properties (created)
  android/.gitignore (created)
  macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (created)
  macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (created)
  macos/Runner.xcodeproj/project.pbxproj (created)
  macos/Runner/Configs/AppInfo.xcconfig (created)
  macos/Runner/Configs/Debug.xcconfig (created)
  macos/Runner/Configs/Warnings.xcconfig (created)
  macos/Runner/Configs/Release.xcconfig (created)
  macos/Runner/AppDelegate.swift (created)
  macos/Runner/DebugProfile.entitlements (created)
  macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png (created)
  macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png (created)
  macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png (created)
  macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png (created)
  macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png (created)
  macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png (created)
  macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (created)
  macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png (created)
  macos/Runner/Release.entitlements (created)
  macos/Runner/Info.plist (created)
  macos/Runner/MainFlutterWindow.swift (created)
  macos/Runner/Base.lproj/MainMenu.xib (created)
  macos/Flutter/Flutter-Debug.xcconfig (created)
  macos/Flutter/Flutter-Release.xcconfig (created)
  macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (created)
  macos/Runner.xcworkspace/contents.xcworkspacedata (created)
  macos/.gitignore (created)
  web/index.html (created)
  web/icons/Icon-512.png (created)
  web/icons/Icon-192.png (created)
  web/favicon.png (created)
  web/manifest.json (created)
  test/widget_test.dart (created)
Running "flutter pub get" in example...                             3.6s
Wrote 100 files.

All done!
[โœ“] Flutter: is fully installed. (Channel dev, v1.16.4-pre.33, on Linux, locale en_US)
[โœ“] Android toolchain - develop for Android devices: is fully installed. (Android SDK version
    29.0.0)
[โœ—] Chrome - develop for the web: is not installed. (Cannot find chrome executable at
    google-chrome)
[!] Android Studio: is not available. (not installed)
[โœ“] Connected device: is fully installed. (1 available)

Run "flutter doctor" for information about installing additional components.

In order to run your application, type:

  $ cd .
  $ flutter run

Your application code is in ./lib/main.dart.


Add permission labels to iOS.

Insert 	<key>NSCameraUsageDescription</key> to line 25
Insert 	<string>$(PRODUCT_NAME) Camera Usage!</string> to line 26
Insert 	<key>NSMicrophoneUsageDescription</key> to line 27
Insert 	<string>$(PRODUCT_NAME) Microphone Usage!</string> to line 28
Traceback (most recent call last):
  File "add-line.py", line 75, in <module>
    main(sys.argv[1:])
  File "add-line.py", line 69, in main
    replaceText(inputfile, string, text)
  File "add-line.py", line 36, in replaceText
    with open(filename, 'r') as fp:
FileNotFoundError: [Errno 2] No such file or directory: '../ios/Podfile'

Add permission labels to AndroidManifest.xml.

Replace minSdkVersion 16 to minSdkVersion 18
Insert     <uses-permission android:name="android.permission.CAMERA" /> to line 8
Insert     <uses-permission android:name="android.permission.RECORD_AUDIO" /> to line 9
Insert     <uses-permission android:name="android.permission.WAKE_LOCK" /> to line 10
Insert     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> to line 11
Insert     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> to line 12
Insert     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> to line 13
Insert     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> to line 14

Add permission labels to macOS.

Insert 	<key>NSCameraUsageDescription</key> to line 19
Insert 	<string>$(PRODUCT_NAME) Camera Usage!</string> to line 20
Insert 	<key>NSMicrophoneUsageDescription</key> to line 21
Insert 	<string>$(PRODUCT_NAME) Microphone Usage!</string> to line 22
Insert        <key>com.apple.security.device.camera</key> to line 11
Insert        <true/> to line 12
Insert        <key>com.apple.security.device.microphone</key> to line 13
Insert        <true/> to line 14
Insert        <key>com.apple.security.network.client</key> to line 15
Insert        <true/> to line 16
Insert        <key>com.apple.security.device.camera</key> to line 7
Insert        <true/> to line 8
Insert        <key>com.apple.security.device.microphone</key> to line 9
Insert        <true/> to line 10
Insert        <key>com.apple.security.network.client</key> to line 11
Insert        <true/> to line 12

Flutter for iOS may have changed, and hence this error FileNotFoundError: [Errno 2] No such file or directory: '../ios/Podfile'
Ignored this error as it is not required for Android

Build Release and Debug apk for arm64 (easiest one to test for me):

flutter build apk --target-platform=android-arm64 --release
Running Gradle task 'assembleRelease'...                                
Running Gradle task 'assembleRelease'... Done                      43.7s
โœ“ Built build/app/outputs/apk/release/app-release.apk (18.6MB).
flutter build apk --target-platform=android-arm64 --debug
Note: Some input files use or override a deprecated API.                
Note: Recompile with -Xlint:deprecation for details.                    
Note: Some input files use unchecked or unsafe operations.              
Note: Recompile with -Xlint:unchecked for details.                      
Running Gradle task 'assembleDebug'...                                  
                                                   
Running Gradle task 'assembleDebug'... Done                       141.0s (!)
โœ“ Built build/app/outputs/apk/debug/app-debug.apk.

Pleasantly surprised everything worked so well! Thank you for that.

What did you expect?

Android app to work like in screenshot:

What happened?

  1. Release apk crashes when trying to open (on device Pixel 3XL and using https://appetize.io) - link to release apk

  2. Debug apk opens, connects to room, but does not receive data from any peer. I see bottom banners when other peers connect and disconnet, video/audio stream from phone is received by other peers. link to debug apk. You can test directly here too - https://appetize.io/app/58am4rrxc8w41fmcbhy191njn0?device=pixel4&scale=75&orientation=portrait&osVersion=10.0&deviceColor=black

Web peer on Chrome for macOS:

Screenshot 2020-04-01 at 9 24 33 PM

Android App - at the same time:
Screenshot 2020-04-01 at 9 24 43 PM

Other images form android app - app receives connection information from peer - but no video/audio streams:
2020-04-01 21-25-20 Screenshot 2020-04-01 21-25-06 Screenshot 2020-04-01 21-24-52 Screenshot

  1. Flutter Debug vs Release - flutter/flutter#15100 - tried all solutions from here, but could not fix this behavior. Release always crashes on startup.
    This issue has better logging - flutter/flutter#48015
    Unfortunately, I still could not fix this. My experience with android development or Flutter is quite limited - I am trying to grasp at whatever straws I can hold. I am still figuring out how to get USB pass through to Docker so that I can try adb trace for the app.

  2. Web App does not seem to port forward
    I tried to build a release version of web-app in Flutter to see if can find any information

flutter run -d web --web-port 8080        
Launching lib/main.dart on Web Server in debug mode...
Syncing files to device Web Server...                                   
13,604ms (!)                                       
lib/main.dart is being served at http://localhost:8080

Warning: Flutter's support for web development is not stable yet and hasn't
been thoroughly tested in production environments.
For more information see https://flutter.dev/web

๐Ÿ”ฅ  To hot restart changes while running, press "r". To hot restart (and refresh the browser),
press "R".
For a more detailed help message, press "h". To quit, press "q".

I have mapped port 8080 from docker to my machine, but:
Screenshot 2020-04-01 at 9 41 03 PM

Although:

docker exec -it 12abac /bin/bash
root@12abac874d58:/# curl http://localhost:8080
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta content="IE=Edge" http-equiv="X-UA-Compatible">
  <meta name="description" content="A new Flutter project.">

  <!-- iOS meta tags & icons -->
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-mobile-web-app-title" content="ion_flutter_example">
  <link rel="apple-touch-icon" href="icons/Icon-192.png">

  <!-- Favicon -->
  <link rel="shortcut icon" type="image/png" href="favicon.png"/>

  <title>ion_flutter_example</title>
  <link rel="manifest" href="manifest.json">
</head>
<body>
  <!-- This script installs service_worker.js to provide PWA functionality to
       application. For more information, see:
       https://developers.google.com/web/fundamentals/primers/service-workers -->
  <script>
    if ('serviceWorker' in navigator) {
      window.addEventListener('load', function () {
        navigator.serviceWorker.register('flutter_service_worker.js');
      });
    }
  </script>
  <script src="main.dart.js" type="application/javascript"></script>
</body>
</html>

At first, I thoght it was a docker port forwarding issue, so I tried a simple server:

docker run -P -d nginxdemos/hello

Screenshot 2020-04-01 at 9 45 49 PM

Screenshot 2020-04-01 at 9 46 09 PM

So docker port forwarding works and now I am utterly confused. Any help with this issue will be greatly appreciated! (Although not necessary)
Dockerfile for reference - https://gist.github.com/blackshehz/c8cc0d28bf2ddc3b7fb7cb63de24ba12

Please keep up the great work! Do let me know if you would like to separate some of these issues. I am happy to help in any way I can.

TypeError: navigator.mediaDevices is undefined

Linux Mint 19.3 "Tricia" - Cinnamon (64-bit)
Firefox 74.0

docker compose up
open localhost:8080
browser console says:

TypeError: navigator.mediaDevices is undefined on line 141 in index.js

it seems the app doesn't ask for mic and cam permissions

Traefik integration ?

Hey,

I tried to use your docker-compose to try the project. I use traefik on my server.
I tried with this docker-compose.

version: '3.7'

services:
  ion:
    image: pionwebrtc/ion-web
    volumes:
      - "./data/Caddyfile:/etc/Caddyfile"
    expose:
      - 80
      - 8080
      - 8443
    depends_on:
      - biz
    environment:
      - WWW_URL=ion.example.com
      - [email protected]
    networks:
      web:
      ion-net:
    labels:
      - "traefik.docker.network=web"
      - "traefik.enable=true"
      - "traefik.frontend.rule=Host:ion.example.com"
      - "traefik.backend=Host:ion.example.com"
      - "traefik.port=8080"
      - "traefik.backend.port:8443"

  sfu:
    command: "-c /configs/sfu.toml"
    image: pionwebrtc/ion-sfu
    volumes:
      - "./data/sfu.toml:/configs/sfu.toml"
    ports:
      - "5000-5200:5000-5200/udp"
    depends_on:
      - nats
      - etcd
    networks:
      - web
      - ion-net

  biz:
    image: pionwebrtc/ion-biz
    command: "-c /configs/biz.toml"
    volumes:
      - "./data/biz.toml:/configs/biz.toml"
    depends_on:
      - nats
      - etcd
    networks:
      - ion-net

  islb:
    image: pionwebrtc/ion-islb
    command: "-c /configs/islb.toml"
    volumes:
      - "./data/islb.toml:/configs/islb.toml"
    depends_on:
      - nats
      - etcd
      - redis
    networks:
      - ion-net

  nats:
    image: nats
    networks: 
      - ion-net

  etcd:
    image: gcr.io/etcd-development/etcd:v3.3.18
    entrypoint: "/usr/local/bin/etcd"
    command: "--listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379"
    networks:
      - ion-net 
  

  redis:
    image: redis:5.0.7
    networks:
      - ion-net

networks:
    ion-net:
    web:
      external: true

And I have modified sfu.toml with

[global]
pprof = ":6062"

# data center id
dc = "dc1"

# internet ip
addr = "ion.example.com"

I'm not sure I can use my domain there but I tried.

But it did not work. Any advices ?

Thanks :)

Play a video from Youtube

We are using Ion in Fluttter Web and Mobile.

I was wondering if it would be possible to leverage ion to play normal streaming videos that are hosted on a server OR embedded in the app as Flutter Assets ?

If they are flutter assets then they woudl need to be pre-transcoded for ion i guess ?

If hey were from Youtube ( for example ) then the ion server could transcode them on the fly ?

Docker build problem

Hi,

I got this error while building ion's docker image. Do you have any idea to fix this?

docker-compose build

rabbitmq uses an image, skipping
etcd uses an image, skipping
redis uses an image, skipping
Building ion
Step 1/14 : FROM golang:1.13.7-stretch
 ---> fcc723b9d794
Step 2/14 : ENV GO111MODULE=on
 ---> Using cache
 ---> 3c90ba87945e
Step 3/14 : WORKDIR $GOPATH/src/github.com/pion/ion
 ---> Using cache
 ---> 012fa53e3de7
Step 4/14 : COPY go.mod go.sum ./
 ---> Using cache
 ---> 2f6d75bc371a
Step 5/14 : RUN cd $GOPATH/src/github.com/pion/ion && go mod download
 ---> Using cache
 ---> a6a618197428
Step 6/14 : COPY . $GOPATH/src/github.com/pion/ion
 ---> Using cache
 ---> b0a29ebbe133
Step 7/14 : WORKDIR $GOPATH/src/github.com/pion/ion/cmd/ion
 ---> Using cache
 ---> 992eaf93ceb2
Step 8/14 : RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o /ion .
 ---> Running in 43efc95e61ed
can't load package: package .: no Go files in /go/src/github.com/pion/ion/cmd/ion
ERROR: Service 'ion' failed to build: The command '/bin/sh -c CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o /ion .' returned a non-zero code: 1

IOS and Chrome see each other when setting to H264 or VP8

Summary

IOS and Chrome see each other when setting to H264 or VP8

Additional context

when setting to H264:

  1. modify sdk payload type to 102
    2.modify sfu fmtp to: level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f

when setting to VP8:

  1. cut sdk sdp to only vp8 section

HandShakeEception: WRONG_VERSION_NUMBER

Your environment.

  • Version: master
  • Browser: none
  • Other Information:
I/flutter ( 5124): [Logger::Dart::WebSocket] DEBUG: connect https://192.168.15.10:8443/ws?peer=08b97ada-7430-4e95-95c2-ba786b688159, {}, null
I/flutter ( 5124): [Logger::Dart::WebSocket] ERROR: error HandshakeException: Handshake error in client (OS Error:
I/flutter ( 5124):      WRONG_VERSION_NUMBER(tls_record.cc:242))
I/flutter ( 5124): [protoo-client] DEBUG: emit "error" [currentAttempt:NoSuchMethodError: The getter 'closeCode' was called on null.
I/flutter ( 5124): Receiver: null
I/flutter ( 5124): Tried calling: closeCode]

What did you do?

  1. Cloned this repo on one Windows machine
  2. Run the Flutter example project
  3. Running as it, no image is broadcast between the devices (all I can see is my own cam, but join/leave messages pops up)
  4. Decided to try to install server on an Ubuntu 18.04 machine via docker
  5. When connecting, the exception with WRONG_VERSION_NUMBER is thrown on Flutter project.

What did you expect?

To work

What happened?

Exception HandshakeException.WRONG_VERSION_NUMBER

Add `golangci-lint` and other tooling to travis

I noticed there are a few places where we don't handle errors (and little mistakes like that)

It might be nice to opt in to the .goassets repo, then you will get all the tooling that every other Pion project has!

did not receive the video stream

After I ran the project successfully, both clients joined the room1 at the same time, but they did not receive the video stream from each other. why๏ผŸplease help me๏ผŒthank you very much๏ผ

Support Protobuf and Schema Evolution

My understanding is that ION is essentially a custom Transport.

At the moment its designed to transport JSON.

JSON however has the problem in that it does not support Scheme Evolution.
For example, if a dev changed the Data Schema of a type that is shared between the client and the server then the client will "crash" as it will not be able to understand the payload.

Schema Evolution using Protobufs solves this because the Fields are numbered and the generated Protobufs for the Client and Server respect that field numbering in order to ignore fields it does not understand in the payload without "crashing".

So i am raising the Idea for ION to use Protobufs and not JSON so that its more resilient to natural development cycles and is more Production ready.


As a side note:
I am also pointing out that Code generation of the Client code (Dart and JS ) and the Server code ( Golang) from the Protobufs is possible, BUT i dont think its easy to do with the custom transport.
Maybe it is but i fear it will essentally be a rewrite of:

  • envoy
  • grpc-gateway

Caddy has obsoleted scripts/makeKey.sh

The scripts/makeKey.sh is mentioned in the README.md. Seems like it generates self-signed certificates, that were passed to nginx, but are no longer used as of commit c3afdec

I think it's safe to remove from README.md?

certainly it confused me while setting up an instance.

Shared conference input box blank

Your environment.

  • Version: 171eacd
  • Browser: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
  • Other Information - stacktraces, related issues, suggestions how to fix, links for us to have context

What did you do?

Click "Shared conference" Button on the top of the confluence demo web appใ€‚ Input box in the dialog is blank.

What did you expect?

Show the result of url to share.

What happened?

image

Add pre-made flutter app

About the native client of Android/iOS/macOS/Web,
We can use Google Flutter to build a native client outside the browser, which will allow the mobile/desktop to perfectly connect to the ion.

  • In the early stage, we can pre-compile APK or IPA using CodeMagic?
  • When we have the official ion service, we can upload the app to App Store and GooglePlay,

(Linux, Windows, Fuchsia will be supported in the future)

Flutter sdk

Hi pion/ion flutter sdk got error in the latest ion server version,can anyone help to fix it? thanks..

[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: request timeout
#0 Room.publish (package:flutter_pion/src/room.dart:61:13)

#1 SFU._createSender. (package:flutter_pion/src/sfu.dart:126:46)

#2 SFU._createSender. (package:flutter_pion/src/sfu.dart:136:30)

RTCPeerConnection addTransceiver method not found

Your environment.

  • Version: iOS
  • Browser: Safari
  • Other Information - error: The method 'addTransceiver' isn't defined for the class 'RTCPeerConnection'. (undefined_method at [brodacaster] lib/src/client.dart:216)

What did you do?

I just cloned the repo and tried running example on iOS simulator

What did you expect?

I expect it to at least build successfully

What happened?

It gives me error on building and i am unable to install

Flutter Web

I noticed that React web is in the SDK for web in this repo.

There is already a demo here using Flutter web: https://github.com/cloudwebrtc/flutter-webrtc-demo/tree/master/web
I have not tried it yet though. I have only tried the Mobile and desktop.

Is there any interest in getting ion working working with Flutter Web ?

Protobufs can designed to work fine with Flutter Web and golang over websockets for the required signalling.

My intention is to get Video channels and Data channels working with ION to enable PUB SUB architectural patterns.

Please let me know what the project intentions are and if this is something that we can work towards together.

flutter_webrtc ^0.2.7 which doesn't match any versions, version solving failed.

What did you do?

cd ./ion/sdk/flutter/example
flutter pub get

What did you expect?

What happened?

Because flutter_ion depends on flutter_webrtc ^0.2.7 which doesn't match any versions, version solving failed.
Running "flutter pub get" in flutter...
pub get failed (1; Because flutter_ion depends on flutter_webrtc ^0.2.7 which doesn't match any versions, version solving failed.)

Update README to show resource requirements

From https://www.reddit.com/r/golang/comments/fouryt/pionion_selfhosted_conferencing_software_with/flhk4n9?utm_source=share&utm_medium=web2x

Looks great! With all the hanging out people are doing online now, I'd love to set this up in a 
droplet. Have you benchmarked about what it costs to run it in terms of machine resources? I 
would love to see a table in the README covering approx RAM for x numbers of users, but if you 
have even a vague thought like "a $5 DO droplet should work for a broadcast to 12 users" then 
I'd be thrilled with that much information!

Flutter Web WebRTC running on Desktop ( using ASTI ) and Notifications

We knwo that ASTI works. YEAH :)

But how to do local notifications then if the Client is not open ?

On the Desktop run a Golang Proxy ( as a desktop Service) that is always on, so that notifications can be raised. Even if the Client is closed.

The Golang Proxy talks to the Cloud backend using pure GRPC ( for ION however it does it ). Thats easy.

  • So the Golang Proxy needs to be able to send data to the Asti Flutter Web.
  • It can do this by raising a Desktop Notification, and then when the user clicks on it the URL Schema ( declared by the ASTI Client App) will cause the Client to open on the correct page ( aka Flutter Routing).

Code notes.

This provides the URL Schemes and Deep Links support.
https://pub.dev/packages/uni_links

  • Says it works with flutter web ? We need to try this with our ASI based demo.

This allows Local Notifications on IOS and Android BTW:
https://github.com/MaikuB/flutter_local_notifications


If the ASTI Flutter Web wants to communicate with the Cloud GRPC ( and ION Cloud) its just standard stuff.

hope run ion on mac successful...

Hi guys, I'm not familiar with the go language. I want to use pion as a streaming server. I have installed ion on the Mac, but some of the dependencies are not installed. I just want to test the SFU part. Can we decouple or modify the script to run on Mac? Thank you

Ion nodes die without logs

It seems that after an extended period of time sitting idle, the nodes go down. This is the logs i see

biz_1    | 2020-04-03 02:39:23.533 INF handleSFUBroadCast: method=stream-remove, data=map[mid:f6e16f25-1756-450b-83d0-017030fe68ef#BEPCHN]
redis_1  | 1:M 03 Apr 2020 12:41:52.438 * 1 changes in 3600 seconds. Saving...
redis_1  | 1:M 03 Apr 2020 12:41:52.690 * Background saving started by pid 22
redis_1  | 22:C 03 Apr 2020 12:41:52.857 * DB saved on disk
redis_1  | 22:C 03 Apr 2020 12:41:52.864 * RDB: 0 MB of memory used by copy-on-write
redis_1  | 1:M 03 Apr 2020 12:41:52.918 * Background saving terminated with success
biz_1    | 2020-04-03 12:41:52.932 INF DELETE "/dc1/node/islb-EeZD7mgaPPsR":""
islb_1   | 2020-04-03 12:41:53 INF DELETE "/dc1/node/islb-EeZD7mgaPPsR":""
islb_1   | 2020-04-03 12:41:53.011 INF Node [/dc1/node/islb-EeZD7mgaPPsR] Down
islb_1   | 2020-04-03 12:41:53.027 INF DELETE "/dc1/node/sfu-sAWekEXhrOXb":""
islb_1   | 2020-04-03 12:41:53.038 INF Node [/dc1/node/sfu-sAWekEXhrOXb] Down
islb_1   | 2020-04-03 12:41:53.043 INF DELETE "/dc1/node/biz-bV3fgNOqiN7l":""
islb_1   | 2020-04-03 12:41:53.044 INF Node [/dc1/node/biz-bV3fgNOqiN7l] Down
islb_1   | 2020-04-03 12:41:53.044 INF removeStreamsByNode: node => sfu-sAWekEXhrOXb
biz_1    | 2020-04-03 12:41:52.953 INF Node [/dc1/node/islb-EeZD7mgaPPsR] Down

Any ideas why this might be?

[WIP] New Arch: SFU node

Summary

the sfu node is a core sfu service in the new arch, which support 1:N broadcasting and high performance

Motivation

We changed ion's arch, which split biz/signal with sfu/mcu/..
Make biz and sfu both support autoscale :)

Features

  • Protocol with biz and islb
  • RTC API and package
    • WebRTCTransport
      • Trickle-ICE
    • Router
    • RTC
    • RTPTransport
    • KCP
  • Anti Packet Loss 50% more smooth
    • optm jitterbuffer
  • High Performace
    • reduce candidateBase.writeTo cpu cost pion/ice#128
    • reduce jitterbuffer cpu cost

wss is not support?

I/flutter (17295): [protoo-client] DEBUG: emit "error" [currentAttempt:HandshakeException: Handshake error in client (OS Error: I/flutter (17295): CERTIFICATE_VERIFY_FAILED: self signed certificate(handshake.cc:352))]

Chat panel seems nonfunctional

From the web app, i can click the button to slide open the left chat panel: but there's no content inside, nor does there seem to be any way of writing a chat message(?).

Running ion 2ab6e66 behind an additional nginx layer; console log contains only info messages, no warnings

Cors Based Archi

If we can use Flutter Web on Desktop and Mobile is means a few things

  1. Sandboxed and trusted.
  2. Instant updates
  3. Perf will suck

But the main thing is that then you can build apps that are more like a CMS.
A Dev can make a Project that reuses Flutter Web WebRTC but does NOT compile against it.

Technically, It would mean that the Flutter Web would need to use CORS to declare that Servers it allows. Standard internet security.

See here for background: flutter/flutter#46904

User authentication

Summary

User authentication, internally and/or externally would be great, as meetings are often confidential.

  • Internal Users
  • LDAP
  • Oauth2
  • Kerberos
  • JWT
  • Others?

Public demo

We should run a server so people can have a public demo. We will probably need to write some code that limits session lengths/amount of people on the server.

docker-compose up fails with permission error

What did you do?

  $ git rev-parse HEAD
6de4b0a01e40e08af827ac7292e3fae5ea0f3954

  $ docker --version
Docker version 18.09.9, build 1752eb3

  $ uname -a
Linux drh-workstation 5.3.0-40-generic #32-Ubuntu SMP Fri Jan 31 20:24:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

  $ sudo WWW_URL=video.nerdy.party [email protected] docker-compose up
Creating ion_etcd_1  ... error
Creating ion_nats_1 ... 
Creating ion_redis_1 ... 

Creating ion_nats_1  ... error
b72e2fb677369f816e0846d2f77b4622ab36cd363feb819894be3d7b88c5ee20-init/merged/etc/resolv.conf: permission denied

ERROR: for ion_nats_1  Cannot create container for service nats: open /var/snap/docker/common/var-lib-docker/overlay2/Creating ion_redis_1 ... error

ERROR: for ion_redis_1  Cannot create container for service redis: open /var/snap/docker/common/var-lib-docker/overlay2/042ae91874de99c893bdf5171a03c78820277632eac7d8a6a4c29ecc6387f78d-init/merged/etc/hosts: permission denied

ERROR: for nats  Cannot create container for service nats: open /var/snap/docker/common/var-lib-docker/overlay2/5e6e25f18fd38a9f27f65ebb1dc6579b1a78b953a80e25b61b59d5ae6fffceae-init/merged/etc/resolv.conf: permission denied

ERROR: for redis  Cannot create container for service redis: open /var/snap/docker/common/var-lib-docker/overlay2/042ae91874de99c893bdf5171a03c78820277632eac7d8a6a4c29ecc6387f78d-init/merged/etc/hosts: permission denied

ERROR: for etcd  Cannot create container for service etcd: open /var/snap/docker/common/var-lib-docker/overlay2/b72e2fb677369f816e0846d2f77b4622ab36cd363feb819894be3d7b88c5ee20-init/merged/etc/resolv.conf: permission denied
ERROR: Encountered errors while bringing up the project.

What did you expect?

I expected docker-compose to start

What happened?

Something (presumably inside the containers, as docker-compose is running as root?) does not have access

You don't have to call RTCVideoRenderer.initialize on Flutter Web

Your environment.

the 1st person

  • Version: window 7
  • Browser: chrome 80.0.3987.149(64 bit)

the 2nd person

  • Version: android

  • Browser: firefox app

  • Other Information - dart_sdk.js:31626 You don't have to call RTCVideoRenderer.initialize on Flutter Web

What did you do?

flutter run -d chrome

What did you expect?

In a room can see each other.
chrome_win
os:widnows7, client:chrome

android_firefox
os:android, client: firefox app

What happened?

we connect together we are unable to see each other.

Chrome logs for Windows

`[protoo-client] DEBUG: constructor()
dart_sdk.js:31626 [protoo-client] DEBUG: constructor() [url:wss://test.biblestudy7.com:8443/ws?peer=297e527d-1126-43c1-b6a6-81c708023602]
dart_sdk.js:31626 [protoo-client] DEBUG: connecting to WebSocket wss://test.biblestudy7.com:8443/ws?peer=297e527d-1126-43c1-b6a6-81c708023602
dart_sdk.js:31626 [Logger::HTML::WebSocket] DEBUG: connect wss://test.biblestudy7.com:8443/ws?peer=297e527d-1126-43c1-b6a6-81c708023602, {}, null
dart_sdk.js:31626 [protoo-client] DEBUG: emit "open"
dart_sdk.js:31626 [Ion::Client] DEBUG: Peer "open" event
dart_sdk.js:31626 [protoo-client] DEBUG: send message: {"request":true,"id":8884698,"method":"join","data":{"rid":"room1","uid":"297e527d-1126-43c1-b6a6-81c708023602","info":{"name":"Guest"}}}
dart_sdk.js:31626 [Logger::HTML::WebSocket] DEBUG: send: {"request":true,"id":8884698,"method":"join","data":{"rid":"room1","uid":"297e527d-1126-43c1-b6a6-81c708023602","info":{"name":"Guest"}}}
dart_sdk.js:31626 [Ion::Client] DEBUG: publish
dart_sdk.js:31626 [protoo-client] DEBUG: Recivied data: {"response":true,"id":8884698,"ok":true,"data":{}}
dart_sdk.js:31626 [Ion::Client] DEBUG: join success: result => {}
dart_sdk.js:31626 [protoo-client] DEBUG: Recivied data: {"notification":true,"method":"stream-add","data":{"info":{"name":"Guest"},"mid":"6d5ef997-a511-41b6-9a6d-dd8cd2dfcbd3#KSSFXF","rid":"room1","uid":"297e527d-1126-43c1-b6a6-81c708023602"}}
dart_sdk.js:31626 [Ion::Client] DEBUG: Handle notification from server: [method:stream-add, data:{info: {name: Guest}, mid: 6d5ef997-a511-41b6-9a6d-dd8cd2dfcbd3#KSSFXF, rid: room1, uid: 297e527d-1126-43c1-b6a6-81c708023602}]
dart_sdk.js:31626 [Ion::Client] DEBUG: stream-add peer rid => 6d5ef997-a511-41b6-9a6d-dd8cd2dfcbd3#KSSFXF, uid => 6d5ef997-a511-41b6-9a6d-dd8cd2dfcbd3#KSSFXF, info => {name: Guest}
dart_sdk.js:31626 [Ion::Client] DEBUG: subscribe rid => room1, mid => 6d5ef997-a511-41b6-9a6d-dd8cd2dfcbd3#KSSFXF
dart_sdk.js:31626 [Ion::Client] DEBUG: create receiver => 6d5ef997-a511-41b6-9a6d-dd8cd2dfcbd3#KSSFXF
dart_sdk.js:31626 [Ion::Client] DEBUG: SDP string => v=0
o=- 1276883757051776099 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:AFtJ
a=ice-pwd:iu0Pfulq5mjNJxQsVB+/fPS0
a=ice-options:trickle
a=fingerprint:sha-256 0D:9F:B7:BF:1B:9C:33:DA:41:1F:49:C9:98:44:92:08:21:BE:02:95:CC:15:5D:10:1F:A7:18:5A:9E:BC:24:B0
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:- e331908f-1835-46da-a606-98893e178c9d
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:117099654 cname:R4UmQFl6kXEpVObN
a=ssrc:117099654 msid:- e331908f-1835-46da-a606-98893e178c9d
a=ssrc:117099654 mslabel:-
a=ssrc:117099654 label:e331908f-1835-46da-a606-98893e178c9d
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:AFtJ
a=ice-pwd:iu0Pfulq5mjNJxQsVB+/fPS0
a=ice-options:trickle
a=fingerprint:sha-256 0D:9F:B7:BF:1B:9C:33:DA:41:1F:49:C9:98:44:92:08:21:BE:02:95:CC:15:5D:10:1F:A7:18:5A:9E:BC:24:B0
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:122 rtx/90000
a=fmtp:122 apt=102
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:124 red/90000
a=rtpmap:120 rtx/90000
a=fmtp:120 apt=124
a=rtpmap:123 ulpfec/90000
a=ssrc-group:FID 1508631317 3988342131
a=ssrc:1508631317 cname:R4UmQFl6kXEpVObN
a=ssrc:1508631317 msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5
a=ssrc:1508631317 mslabel:-
a=ssrc:1508631317 label:e36a5c5e-6b61-415b-9d76-8a152aec83d5
a=ssrc:3988342131 cname:R4UmQFl6kXEpVObN
a=ssrc:3988342131 msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5
a=ssrc:3988342131 mslabel:-
a=ssrc:3988342131 label:e36a5c5e-6b61-415b-9d76-8a152aec83d5

dart_sdk.js:31626 [Ion::Client] DEBUG: Setup audio codec => OPUS, payload => 111
dart_sdk.js:31626 [Ion::Client] DEBUG: Setup video codec => VP8, payload => 96
dart_sdk.js:31626 [Ion::Client] DEBUG: ssrcs => 1508631317 3988342131, video 1508631317
dart_sdk.js:31626 [Ion::Client] DEBUG: SDP => v=0
o=- 1276883757051776000 2 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS
a=group:BUNDLE 0 1
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=rtpmap:111 OPUS/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-fb:111 transport-cc
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=setup:actpass
a=mid:0
a=msid:- e331908f-1835-46da-a606-98893e178c9d
a=recvonly
a=ice-ufrag:AFtJ
a=ice-pwd:iu0Pfulq5mjNJxQsVB+/fPS0
a=fingerprint:sha-256 0D:9F:B7:BF:1B:9C:33:DA:41:1F:49:C9:98:44:92:08:21:BE:02:95:CC:15:5D:10:1F:A7:18:5A:9E:BC:24:B0
a=ice-options:trickle
a=ssrc:117099654 cname:R4UmQFl6kXEpVObN
a=ssrc:117099654 msid:- e331908f-1835-46da-a606-98893e178c9d
a=ssrc:117099654 mslabel:-
a=ssrc:117099654 label:e331908f-1835-46da-a606-98893e178c9d
a=rtcp-mux
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=rtpmap:96 VP8/90000
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=setup:actpass
a=mid:1
a=msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5
a=recvonly
a=ice-ufrag:AFtJ
a=ice-pwd:iu0Pfulq5mjNJxQsVB+/fPS0
a=fingerprint:sha-256 0D:9F:B7:BF:1B:9C:33:DA:41:1F:49:C9:98:44:92:08:21:BE:02:95:CC:15:5D:10:1F:A7:18:5A:9E:BC:24:B0
a=ice-options:trickle
a=ssrc:1508631317 cname:R4UmQFl6kXEpVObN
a=ssrc:1508631317 msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5
a=ssrc:1508631317 mslabel:-
a=ssrc:1508631317 label:e36a5c5e-6b61-415b-9d76-8a152aec83d5
a=rtcp-mux
a=rtcp-rsize

dart_sdk.js:31626 [Ion::Client] DEBUG: Send offer sdp => v=0
o=- 1276883757051776000 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS
m=audio 60034 UDP/TLS/RTP/SAVPF 111
c=IN IP4 192.168.117.1
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 60032 typ host generation 0 network-id 5
a=candidate:1088294319 1 udp 2122197247 2409:8a34:e44:16b0:a4bb:9431:3e9e:67d6 60033 typ host generation 0 network-id 6
a=candidate:2466646500 1 udp 2122129151 192.168.117.1 60034 typ host generation 0 network-id 1
a=candidate:2999745851 1 udp 2122063615 192.168.56.1 60035 typ host generation 0 network-id 2
a=candidate:3813318389 1 udp 2121998079 192.168.25.2 60036 typ host generation 0 network-id 3
a=candidate:3378846520 1 udp 2121932543 192.168.1.120 60037 typ host generation 0 network-id 4
a=candidate:3671821981 1 udp 2121867007 192.168.232.1 60038 typ host generation 0 network-id 7
a=ice-ufrag:AFtJ
a=ice-pwd:iu0Pfulq5mjNJxQsVB+/fPS0
a=ice-options:trickle
a=fingerprint:sha-256 0D:9F:B7:BF:1B:9C:33:DA:41:1F:49:C9:98:44:92:08:21:BE:02:95:CC:15:5D:10:1F:A7:18:5A:9E:BC:24:B0
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=recvonly
a=msid:- e331908f-1835-46da-a606-98893e178c9d
a=rtcp-mux
a=rtpmap:111 OPUS/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=ssrc:117099654 cname:R4UmQFl6kXEpVObN
a=ssrc:117099654 msid:- e331908f-1835-46da-a606-98893e178c9d
a=ssrc:117099654 mslabel:-
a=ssrc:117099654 label:e331908f-1835-46da-a606-98893e178c9d
m=video 60041 UDP/TLS/RTP/SAVPF 96
c=IN IP4 192.168.117.1
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 60039 typ host generation 0 network-id 5
a=candidate:1088294319 1 udp 2122197247 2409:8a34:e44:16b0:a4bb:9431:3e9e:67d6 60040 typ host generation 0 network-id 6
a=candidate:2466646500 1 udp 2122129151 192.168.117.1 60041 typ host generation 0 network-id 1
a=candidate:2999745851 1 udp 2122063615 192.168.56.1 60042 typ host generation 0 network-id 2
a=candidate:3813318389 1 udp 2121998079 192.168.25.2 60043 typ host generation 0 network-id 3
a=candidate:3378846520 1 udp 2121932543 192.168.1.120 60044 typ host generation 0 network-id 4
a=candidate:3671821981 1 udp 2121867007 192.168.232.1 60045 typ host generation 0 network-id 7
a=ice-ufrag:AFtJ
a=ice-pwd:iu0Pfulq5mjNJxQsVB+/fPS0
a=ice-options:trickle
a=fingerprint:sha-256 0D:9F:B7:BF:1B:9C:33:DA:41:1F:49:C9:98:44:92:08:21:BE:02:95:CC:15:5D:10:1F:A7:18:5A:9E:BC:24:B0
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=recvonly
a=msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=ssrc:1508631317 cname:R4UmQFl6kXEpVObN
a=ssrc:1508631317 msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5
a=ssrc:1508631317 mslabel:-
a=ssrc:1508631317 label:e36a5c5e-6b61-415b-9d76-8a152aec83d5

dart_sdk.js:31626 [protoo-client] DEBUG: send message: {"request":true,"id":8550571,"method":"subscribe","data":{"rid":"room1","jsep":{"sdp":"v=0\r\no=- 1276883757051776000 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS\r\nm=audio 60034 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 192.168.117.1\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 60032 typ host generation 0 network-id 5\r\na=candidate:1088294319 1 udp 2122197247 2409:8a34:e44:16b0:a4bb:9431:3e9e:67d6 60033 typ host generation 0 network-id 6\r\na=candidate:2466646500 1 udp 2122129151 192.168.117.1 60034 typ host generation 0 network-id 1\r\na=candidate:2999745851 1 udp 2122063615 192.168.56.1 60035 typ host generation 0 network-id 2\r\na=candidate:3813318389 1 udp 2121998079 192.168.25.2 60036 typ host generation 0 network-id 3\r\na=candidate:3378846520 1 udp 2121932543 192.168.1.120 60037 typ host generation 0 network-id 4\r\na=candidate:3671821981 1 udp 2121867007 192.168.232.1 60038 typ host generation 0 network-id 7\r\na=ice-ufrag:AFtJ\r\na=ice-pwd:iu0Pfulq5mjNJxQsVB+/fPS0\r\na=ice-options:trickle\r\na=fingerprint:sha-256 0D:9F:B7:BF:1B:9C:33:DA:41:1F:49:C9:98:44:92:08:21:BE:02:95:CC:15:5D:10:1F:A7:18:5A:9E:BC:24:B0\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=msid:- e331908f-1835-46da-a606-98893e178c9d\r\na=rtcp-mux\r\na=rtpmap:111 OPUS/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=ssrc:117099654 cname:R4UmQFl6kXEpVObN\r\na=ssrc:117099654 msid:- e331908f-1835-46da-a606-98893e178c9d\r\na=ssrc:117099654 mslabel:-\r\na=ssrc:117099654 label:e331908f-1835-46da-a606-98893e178c9d\r\nm=video 60041 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 192.168.117.1\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 60039 typ host generation 0 network-id 5\r\na=candidate:1088294319 1 udp 2122197247 2409:8a34:e44:16b0:a4bb:9431:3e9e:67d6 60040 typ host generation 0 network-id 6\r\na=candidate:2466646500 1 udp 2122129151 192.168.117.1 60041 typ host generation 0 network-id 1\r\na=candidate:2999745851 1 udp 2122063615 192.168.56.1 60042 typ host generation 0 network-id 2\r\na=candidate:3813318389 1 udp 2121998079 192.168.25.2 60043 typ host generation 0 network-id 3\r\na=candidate:3378846520 1 udp 2121932543 192.168.1.120 60044 typ host generation 0 network-id 4\r\na=candidate:3671821981 1 udp 2121867007 192.168.232.1 60045 typ host generation 0 network-id 7\r\na=ice-ufrag:AFtJ\r\na=ice-pwd:iu0Pfulq5mjNJxQsVB+/fPS0\r\na=ice-options:trickle\r\na=fingerprint:sha-256 0D:9F:B7:BF:1B:9C:33:DA:41:1F:49:C9:98:44:92:08:21:BE:02:95:CC:15:5D:10:1F:A7:18:5A:9E:BC:24:B0\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=ssrc:1508631317 cname:R4UmQFl6kXEpVObN\r\na=ssrc:1508631317 msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5\r\na=ssrc:1508631317 mslabel:-\r\na=ssrc:1508631317 label:e36a5c5e-6b61-415b-9d76-8a152aec83d5\r\n","type":"offer"},"mid":"6d5ef997-a511-41b6-9a6d-dd8cd2dfcbd3#KSSFXF","options":{"codec":"vp8","bandwidth":"512"}}}
dart_sdk.js:31626 [Logger::HTML::WebSocket] DEBUG: send: {"request":true,"id":8550571,"method":"subscribe","data":{"rid":"room1","jsep":{"sdp":"v=0\r\no=- 1276883757051776000 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS\r\nm=audio 60034 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 192.168.117.1\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 60032 typ host generation 0 network-id 5\r\na=candidate:1088294319 1 udp 2122197247 2409:8a34:e44:16b0:a4bb:9431:3e9e:67d6 60033 typ host generation 0 network-id 6\r\na=candidate:2466646500 1 udp 2122129151 192.168.117.1 60034 typ host generation 0 network-id 1\r\na=candidate:2999745851 1 udp 2122063615 192.168.56.1 60035 typ host generation 0 network-id 2\r\na=candidate:3813318389 1 udp 2121998079 192.168.25.2 60036 typ host generation 0 network-id 3\r\na=candidate:3378846520 1 udp 2121932543 192.168.1.120 60037 typ host generation 0 network-id 4\r\na=candidate:3671821981 1 udp 2121867007 192.168.232.1 60038 typ host generation 0 network-id 7\r\na=ice-ufrag:AFtJ\r\na=ice-pwd:iu0Pfulq5mjNJxQsVB+/fPS0\r\na=ice-options:trickle\r\na=fingerprint:sha-256 0D:9F:B7:BF:1B:9C:33:DA:41:1F:49:C9:98:44:92:08:21:BE:02:95:CC:15:5D:10:1F:A7:18:5A:9E:BC:24:B0\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=msid:- e331908f-1835-46da-a606-98893e178c9d\r\na=rtcp-mux\r\na=rtpmap:111 OPUS/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=ssrc:117099654 cname:R4UmQFl6kXEpVObN\r\na=ssrc:117099654 msid:- e331908f-1835-46da-a606-98893e178c9d\r\na=ssrc:117099654 mslabel:-\r\na=ssrc:117099654 label:e331908f-1835-46da-a606-98893e178c9d\r\nm=video 60041 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 192.168.117.1\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 60039 typ host generation 0 network-id 5\r\na=candidate:1088294319 1 udp 2122197247 2409:8a34:e44:16b0:a4bb:9431:3e9e:67d6 60040 typ host generation 0 network-id 6\r\na=candidate:2466646500 1 udp 2122129151 192.168.117.1 60041 typ host generation 0 network-id 1\r\na=candidate:2999745851 1 udp 2122063615 192.168.56.1 60042 typ host generation 0 network-id 2\r\na=candidate:3813318389 1 udp 2121998079 192.168.25.2 60043 typ host generation 0 network-id 3\r\na=candidate:3378846520 1 udp 2121932543 192.168.1.120 60044 typ host generation 0 network-id 4\r\na=candidate:3671821981 1 udp 2121867007 192.168.232.1 60045 typ host generation 0 network-id 7\r\na=ice-ufrag:AFtJ\r\na=ice-pwd:iu0Pfulq5mjNJxQsVB+/fPS0\r\na=ice-options:trickle\r\na=fingerprint:sha-256 0D:9F:B7:BF:1B:9C:33:DA:41:1F:49:C9:98:44:92:08:21:BE:02:95:CC:15:5D:10:1F:A7:18:5A:9E:BC:24:B0\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=ssrc:1508631317 cname:R4UmQFl6kXEpVObN\r\na=ssrc:1508631317 msid:- e36a5c5e-6b61-415b-9d76-8a152aec83d5\r\na=ssrc:1508631317 mslabel:-\r\na=ssrc:1508631317 label:e36a5c5e-6b61-415b-9d76-8a152aec83d5\r\n","type":"offer"},"mid":"6d5ef997-a511-41b6-9a6d-dd8cd2dfcbd3#KSSFXF","options":{"codec":"vp8","bandwidth":"512"}}}
dart_sdk.js:31626 [protoo-client] DEBUG: Recivied data: {"response":true,"id":8550571,"ok":true,"data":{"jsep":{"sdp":"v=0\r\no=- 494902244 1585066660 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 7D:FF:B1:F1:7A:C4:68:B4:8B:A2:D1:78:84:63:6E:94:BD:02:55:5D:0E:3A:23:1B:BD:C2:E9:8E:4C:F4:66:9F\r\na=group:BUNDLE 0 1\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:0\r\na=ice-ufrag:CYiCvvHqJuGBDmRx\r\na=ice-pwd:rlejZfuDTicZvxaDkOyXbttDYdSOfviv\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=inactive\r\na=candidate:foundation 1 udp 2130706431 192.168.0.115 35941 typ host generation 0\r\na=candidate:foundation 2 udp 2130706431 192.168.0.115 35941 typ host generation 0\r\na=end-of-candidates\r\nm=video 9 UDP/TLS/RTP/SAVPF 102 96 98\r\nc=IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:1\r\na=ice-ufrag:CYiCvvHqJuGBDmRx\r\na=ice-pwd:rlejZfuDTicZvxaDkOyXbttDYdSOfviv\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:102 H264/90000\r\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtcp-fb:102 goog-remb \r\na=rtcp-fb:102 ccm \r\na=rtcp-fb:102 nack \r\na=rtcp-fb:102 nack pli \r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb \r\na=rtcp-fb:96 ccm \r\na=rtcp-fb:96 nack \r\na=rtcp-fb:96 nack pli \r\na=rtpmap:98 VP9/90000\r\na=ssrc:2297810108 cname:kCvp4xtKMYslpFQXnocqqZDfVJRVY4DYnMRs\r\na=ssrc:2297810108 msid:kCvp4xtKMYslpFQXnocqqZDfVJRVY4DYnMRs 822f6090-2726-4705-842e-71bd6ce5ffab\r\na=ssrc:2297810108 mslabel:kCvp4xtKMYslpFQXnocqqZDfVJRVY4DYnMRs\r\na=ssrc:2297810108 label:822f6090-2726-4705-842e-71bd6ce5ffab\r\na=msid:kCvp4xtKMYslpFQXnocqqZDfVJRVY4DYnMRs 822f6090-2726-4705-842e-71bd6ce5ffab\r\na=sendrecv\r\na=candidate:foundation 1 udp 2130706431 192.168.0.115 35941 typ host generation 0\r\na=candidate:foundation 2 udp 2130706431 192.168.0.115 35941 typ host generation 0\r\na=end-of-candidates\r\n","type":"answer"},"mid":"297e527d-1126-43c1-b6a6-81c708023602#RHIMOV"}}
dart_sdk.js:31626 [Ion::Client] DEBUG: subscribe success => result(mid => 297e527d-1126-43c1-b6a6-81c708023602#RHIMOV) sdp => v=0
o=- 494902244 1585066660 IN IP4 0.0.0.0
s=-
t=0 0
a=fingerprint:sha-256 7D:FF:B1:F1:7A:C4:68:B4:8B:A2:D1:78:84:63:6E:94:BD:02:55:5D:0E:3A:23:1B:BD:C2:E9:8E:4C:F4:66:9F
a=group:BUNDLE 0 1
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=setup:passive
a=mid:0
a=ice-ufrag:CYiCvvHqJuGBDmRx
a=ice-pwd:rlejZfuDTicZvxaDkOyXbttDYdSOfviv
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
a=inactive
a=candidate:foundation 1 udp 2130706431 192.168.0.115 35941 typ host generation 0
a=candidate:foundation 2 udp 2130706431 192.168.0.115 35941 typ host generation 0
a=end-of-candidates
m=video 9 UDP/TLS/RTP/SAVPF 102 96 98
c=IN IP4 0.0.0.0
a=setup:passive
a=mid:1
a=ice-ufrag:CYiCvvHqJuGBDmRx
a=ice-pwd:rlejZfuDTicZvxaDkOyXbttDYdSOfviv
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:102 H264/90000
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 ccm
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 ccm
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:98 VP9/90000
a=ssrc:2297810108 cname:kCvp4xtKMYslpFQXnocqqZDfVJRVY4DYnMRs
a=ssrc:2297810108 msid:kCvp4xtKMYslpFQXnocqqZDfVJRVY4DYnMRs 822f6090-2726-4705-842e-71bd6ce5ffab
a=ssrc:2297810108 mslabel:kCvp4xtKMYslpFQXnocqqZDfVJRVY4DYnMRs
a=ssrc:2297810108 label:822f6090-2726-4705-842e-71bd6ce5ffab
a=msid:kCvp4xtKMYslpFQXnocqqZDfVJRVY4DYnMRs 822f6090-2726-4705-842e-71bd6ce5ffab
a=sendrecv
a=candidate:foundation 1 udp 2130706431 192.168.0.115 35941 typ host generation 0
a=candidate:foundation 2 udp 2130706431 192.168.0.115 35941 typ host generation 0
a=end-of-candidates

dart_sdk.js:31626 onaddstream argument: [object MediaStream]
dart_sdk.js:31626 [Ion::Client] DEBUG: Stream::pc::onaddstream kCvp4xtKMYslpFQXnocqqZDfVJRVY4DYnMRs
dart_sdk.js:31626 You don't have to call RTCVideoRenderer.initialize on Flutter Web
dart_sdk.js:31626 [Ion::Client] DEBUG: create sender => vp8
dart_sdk.js:31626 [Ion::Client] DEBUG: SDP string => v=0
o=- 1608333123905294183 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS 7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:JKnJ
a=ice-pwd:fcqHN60Ko+IcymzhHIEYxvwy
a=ice-options:trickle
a=fingerprint:sha-256 60:EA:1B:E0:25:A2:3D:63:7A:13:C2:5D:FA:29:E8:E7:75:FD:99:D3:54:72:D7:E6:8F:F7:A0:69:5C:56:10:94
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:864969469 cname:56skMVtO7eizH0+W
a=ssrc:864969469 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129
a=ssrc:864969469 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4
a=ssrc:864969469 label:a65b53b2-faa2-4abd-9ef9-7c1bfdbed129
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:JKnJ
a=ice-pwd:fcqHN60Ko+IcymzhHIEYxvwy
a=ice-options:trickle
a=fingerprint:sha-256 60:EA:1B:E0:25:A2:3D:63:7A:13:C2:5D:FA:29:E8:E7:75:FD:99:D3:54:72:D7:E6:8F:F7:A0:69:5C:56:10:94
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:122 rtx/90000
a=fmtp:122 apt=102
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:124 red/90000
a=rtpmap:120 rtx/90000
a=fmtp:120 apt=124
a=rtpmap:123 ulpfec/90000
a=ssrc-group:FID 789757569 3915846988
a=ssrc:789757569 cname:56skMVtO7eizH0+W
a=ssrc:789757569 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3
a=ssrc:789757569 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4
a=ssrc:789757569 label:6dc45377-5464-4c41-8148-9c5b0325adb3
a=ssrc:3915846988 cname:56skMVtO7eizH0+W
a=ssrc:3915846988 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3
a=ssrc:3915846988 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4
a=ssrc:3915846988 label:6dc45377-5464-4c41-8148-9c5b0325adb3

dart_sdk.js:31626 [Ion::Client] DEBUG: Setup audio codec => OPUS, payload => 111
dart_sdk.js:31626 [Ion::Client] DEBUG: Setup video codec => VP8, payload => 96
dart_sdk.js:31626 [Ion::Client] DEBUG: ssrcs => 789757569 3915846988, video 789757569
dart_sdk.js:31626 [Ion::Client] DEBUG: SDP => v=0
o=- 1608333123905294000 2 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS 7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4
a=group:BUNDLE 0 1
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=rtpmap:111 OPUS/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-fb:111 transport-cc
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=setup:actpass
a=mid:0
a=msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129
a=sendonly
a=ice-ufrag:JKnJ
a=ice-pwd:fcqHN60Ko+IcymzhHIEYxvwy
a=fingerprint:sha-256 60:EA:1B:E0:25:A2:3D:63:7A:13:C2:5D:FA:29:E8:E7:75:FD:99:D3:54:72:D7:E6:8F:F7:A0:69:5C:56:10:94
a=ice-options:trickle
a=ssrc:864969469 cname:56skMVtO7eizH0+W
a=ssrc:864969469 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129
a=ssrc:864969469 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4
a=ssrc:864969469 label:a65b53b2-faa2-4abd-9ef9-7c1bfdbed129
a=rtcp-mux
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=rtpmap:96 VP8/90000
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=setup:actpass
a=mid:1
a=msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3
a=sendonly
a=ice-ufrag:JKnJ
a=ice-pwd:fcqHN60Ko+IcymzhHIEYxvwy
a=fingerprint:sha-256 60:EA:1B:E0:25:A2:3D:63:7A:13:C2:5D:FA:29:E8:E7:75:FD:99:D3:54:72:D7:E6:8F:F7:A0:69:5C:56:10:94
a=ice-options:trickle
a=ssrc:789757569 cname:56skMVtO7eizH0+W
a=ssrc:789757569 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3
a=ssrc:789757569 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4
a=ssrc:789757569 label:6dc45377-5464-4c41-8148-9c5b0325adb3
a=rtcp-mux
a=rtcp-rsize

dart_sdk.js:31626 [Ion::Client] DEBUG: Send offer sdp => v=0
o=- 1608333123905294000 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS 7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4
m=audio 54180 UDP/TLS/RTP/SAVPF 111
c=IN IP6 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 54180 typ host generation 0 network-id 5
a=ice-ufrag:JKnJ
a=ice-pwd:fcqHN60Ko+IcymzhHIEYxvwy
a=ice-options:trickle
a=fingerprint:sha-256 60:EA:1B:E0:25:A2:3D:63:7A:13:C2:5D:FA:29:E8:E7:75:FD:99:D3:54:72:D7:E6:8F:F7:A0:69:5C:56:10:94
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendonly
a=msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129
a=rtcp-mux
a=rtpmap:111 OPUS/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=ssrc:864969469 cname:56skMVtO7eizH0+W
a=ssrc:864969469 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129
a=ssrc:864969469 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4
a=ssrc:864969469 label:a65b53b2-faa2-4abd-9ef9-7c1bfdbed129
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:JKnJ
a=ice-pwd:fcqHN60Ko+IcymzhHIEYxvwy
a=ice-options:trickle
a=fingerprint:sha-256 60:EA:1B:E0:25:A2:3D:63:7A:13:C2:5D:FA:29:E8:E7:75:FD:99:D3:54:72:D7:E6:8F:F7:A0:69:5C:56:10:94
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendonly
a=msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=ssrc:789757569 cname:56skMVtO7eizH0+W
a=ssrc:789757569 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3
a=ssrc:789757569 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4
a=ssrc:789757569 label:6dc45377-5464-4c41-8148-9c5b0325adb3

dart_sdk.js:31626 [protoo-client] DEBUG: send message: {"request":true,"id":8431923,"method":"publish","data":{"rid":"room1","jsep":{"sdp":"v=0\r\no=- 1608333123905294000 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS 7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4\r\nm=audio 54180 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP6 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 54180 typ host generation 0 network-id 5\r\na=ice-ufrag:JKnJ\r\na=ice-pwd:fcqHN60Ko+IcymzhHIEYxvwy\r\na=ice-options:trickle\r\na=fingerprint:sha-256 60:EA:1B:E0:25:A2:3D:63:7A:13:C2:5D:FA:29:E8:E7:75:FD:99:D3:54:72:D7:E6:8F:F7:A0:69:5C:56:10:94\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendonly\r\na=msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129\r\na=rtcp-mux\r\na=rtpmap:111 OPUS/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=ssrc:864969469 cname:56skMVtO7eizH0+W\r\na=ssrc:864969469 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129\r\na=ssrc:864969469 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4\r\na=ssrc:864969469 label:a65b53b2-faa2-4abd-9ef9-7c1bfdbed129\r\nm=video 9 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:JKnJ\r\na=ice-pwd:fcqHN60Ko+IcymzhHIEYxvwy\r\na=ice-options:trickle\r\na=fingerprint:sha-256 60:EA:1B:E0:25:A2:3D:63:7A:13:C2:5D:FA:29:E8:E7:75:FD:99:D3:54:72:D7:E6:8F:F7:A0:69:5C:56:10:94\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendonly\r\na=msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=ssrc:789757569 cname:56skMVtO7eizH0+W\r\na=ssrc:789757569 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3\r\na=ssrc:789757569 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4\r\na=ssrc:789757569 label:6dc45377-5464-4c41-8148-9c5b0325adb3\r\n","type":"offer"},"options":{"audio":true,"video":true,"screen":false,"codec":"vp8","bandwidth":"512"}}}
dart_sdk.js:31626 [Logger::HTML::WebSocket] DEBUG: send: {"request":true,"id":8431923,"method":"publish","data":{"rid":"room1","jsep":{"sdp":"v=0\r\no=- 1608333123905294000 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS 7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4\r\nm=audio 54180 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP6 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 54180 typ host generation 0 network-id 5\r\na=ice-ufrag:JKnJ\r\na=ice-pwd:fcqHN60Ko+IcymzhHIEYxvwy\r\na=ice-options:trickle\r\na=fingerprint:sha-256 60:EA:1B:E0:25:A2:3D:63:7A:13:C2:5D:FA:29:E8:E7:75:FD:99:D3:54:72:D7:E6:8F:F7:A0:69:5C:56:10:94\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendonly\r\na=msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129\r\na=rtcp-mux\r\na=rtpmap:111 OPUS/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=ssrc:864969469 cname:56skMVtO7eizH0+W\r\na=ssrc:864969469 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129\r\na=ssrc:864969469 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4\r\na=ssrc:864969469 label:a65b53b2-faa2-4abd-9ef9-7c1bfdbed129\r\nm=video 9 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:JKnJ\r\na=ice-pwd:fcqHN60Ko+IcymzhHIEYxvwy\r\na=ice-options:trickle\r\na=fingerprint:sha-256 60:EA:1B:E0:25:A2:3D:63:7A:13:C2:5D:FA:29:E8:E7:75:FD:99:D3:54:72:D7:E6:8F:F7:A0:69:5C:56:10:94\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendonly\r\na=msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=ssrc:789757569 cname:56skMVtO7eizH0+W\r\na=ssrc:789757569 msid:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3\r\na=ssrc:789757569 mslabel:7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4\r\na=ssrc:789757569 label:6dc45377-5464-4c41-8148-9c5b0325adb3\r\n","type":"offer"},"options":{"audio":true,"video":true,"screen":false,"codec":"vp8","bandwidth":"512"}}}
dart_sdk.js:31626 [protoo-client] DEBUG: Recivied data: {"response":true,"id":8431923,"ok":true,"data":{"jsep":{"sdp":"v=0\r\no=- 536794670 1585066661 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 CC:5C:97:D6:7B:42:EF:A5:0A:F5:F6:58:F3:0D:5B:7C:60:98:FC:B5:AF:C8:C7:2F:48:B8:5E:4A:F4:3B:39:EB\r\na=group:BUNDLE 0 1\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:0\r\na=ice-ufrag:lfKaNrYpffScFLrF\r\na=ice-pwd:mWwDnagsmHxBCQdgnOEDcHAodykbZNYi\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=recvonly\r\na=candidate:foundation 1 udp 2130706431 192.168.0.115 58643 typ host generation 0\r\na=candidate:foundation 2 udp 2130706431 192.168.0.115 58643 typ host generation 0\r\na=end-of-candidates\r\nm=video 9 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:1\r\na=ice-ufrag:lfKaNrYpffScFLrF\r\na=ice-pwd:mWwDnagsmHxBCQdgnOEDcHAodykbZNYi\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb \r\na=rtcp-fb:96 ccm \r\na=rtcp-fb:96 nack \r\na=rtcp-fb:96 nack pli \r\na=recvonly\r\na=candidate:foundation 1 udp 2130706431 192.168.0.115 58643 typ host generation 0\r\na=candidate:foundation 2 udp 2130706431 192.168.0.115 58643 typ host generation 0\r\na=end-of-candidates\r\n","type":"answer"},"mid":"297e527d-1126-43c1-b6a6-81c708023602#MFHYGW","tracks":{"7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3":[{"id":"6dc45377-5464-4c41-8148-9c5b0325adb3","pt":96,"ssrc":789757569,"type":"video"}],"7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129":[{"id":"a65b53b2-faa2-4abd-9ef9-7c1bfdbed129","pt":0,"ssrc":864969469,"type":"audio"}]}}}
dart_sdk.js:31626 [Ion::Client] DEBUG: publish success => {"jsep":{"sdp":"v=0\r\no=- 536794670 1585066661 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 CC:5C:97:D6:7B:42:EF:A5:0A:F5:F6:58:F3:0D:5B:7C:60:98:FC:B5:AF:C8:C7:2F:48:B8:5E:4A:F4:3B:39:EB\r\na=group:BUNDLE 0 1\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:0\r\na=ice-ufrag:lfKaNrYpffScFLrF\r\na=ice-pwd:mWwDnagsmHxBCQdgnOEDcHAodykbZNYi\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=recvonly\r\na=candidate:foundation 1 udp 2130706431 192.168.0.115 58643 typ host generation 0\r\na=candidate:foundation 2 udp 2130706431 192.168.0.115 58643 typ host generation 0\r\na=end-of-candidates\r\nm=video 9 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:1\r\na=ice-ufrag:lfKaNrYpffScFLrF\r\na=ice-pwd:mWwDnagsmHxBCQdgnOEDcHAodykbZNYi\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb \r\na=rtcp-fb:96 ccm \r\na=rtcp-fb:96 nack \r\na=rtcp-fb:96 nack pli \r\na=recvonly\r\na=candidate:foundation 1 udp 2130706431 192.168.0.115 58643 typ host generation 0\r\na=candidate:foundation 2 udp 2130706431 192.168.0.115 58643 typ host generation 0\r\na=end-of-candidates\r\n","type":"answer"},"mid":"297e527d-1126-43c1-b6a6-81c708023602#MFHYGW","tracks":{"7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 6dc45377-5464-4c41-8148-9c5b0325adb3":[{"id":"6dc45377-5464-4c41-8148-9c5b0325adb3","pt":96,"ssrc":789757569,"type":"video"}],"7ipatgkXdnVZgToXCkOPbKvLSLfcgKXdOpz4 a65b53b2-faa2-4abd-9ef9-7c1bfdbed129":[{"id":"a65b53b2-faa2-4abd-9ef9-7c1bfdbed129","pt":0,"ssrc":864969469,"type":"audio"}]}}
dart_sdk.js:31626 You don't have to call RTCVideoRenderer.initialize on Flutter Web
dart_sdk.js:31626 [protoo-client] DEBUG: Recivied data: {}
dart_sdk.js:31626 [protoo-client] DEBUG: Recivied data: {"notification":true,"method":"peer-join","data":{"info":{"name":"wwwww"},"rid":"room1","uid":"1073a415-4b40-4e58-a0cf-cbca4668f1cd"}}
dart_sdk.js:31626 [Ion::Client] DEBUG: Handle notification from server: [method:peer-join, data:{info: {name: wwwww}, rid: room1, uid: 1073a415-4b40-4e58-a0cf-cbca4668f1cd}]
dart_sdk.js:31626 [Ion::Client] DEBUG: peer-join peer rid => room1, uid => 1073a415-4b40-4e58-a0cf-cbca4668f1cd, info => {name: wwwww}
dart_sdk.js:31626 [protoo-client] DEBUG: Closed by server!
dart_sdk.js:31626 [protoo-client] DEBUG: Recivied data: {"notification":true,"method":"stream-add","data":{"info":{"name":"wwwww"},"mid":"1073a415-4b40-4e58-a0cf-cbca4668f1cd#UXAVBF","rid":"room1","uid":"1073a415-4b40-4e58-a0cf-cbca4668f1cd"}}
dart_sdk.js:31626 [Ion::Client] DEBUG: Handle notification from server: [method:stream-add, data:{info: {name: wwwww}, mid: 1073a415-4b40-4e58-a0cf-cbca4668f1cd#UXAVBF, rid: room1, uid: 1073a415-4b40-4e58-a0cf-cbca4668f1cd}]
dart_sdk.js:31626 [Ion::Client] DEBUG: stream-add peer rid => 1073a415-4b40-4e58-a0cf-cbca4668f1cd#UXAVBF, uid => 1073a415-4b40-4e58-a0cf-cbca4668f1cd#UXAVBF, info => {name: wwwww}
dart_sdk.js:31626 [Ion::Client] DEBUG: subscribe rid => room1, mid => 1073a415-4b40-4e58-a0cf-cbca4668f1cd#UXAVBF
dart_sdk.js:31626 [Ion::Client] DEBUG: create receiver => 1073a415-4b40-4e58-a0cf-cbca4668f1cd#UXAVBF
dart_sdk.js:31626 [Ion::Client] DEBUG: SDP string => v=0
o=- 5308524162553205748 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:64Um
a=ice-pwd:YXOCkayDQwjpa3nTeeuqx6t0
a=ice-options:trickle
a=fingerprint:sha-256 97:EE:31:CB:37:4C:66:65:47:4B:6B:59:33:70:08:1C:78:FE:04:D5:5E:E8:E2:81:BD:68:AC:9B:43:61:70:4A
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:- c5f657e7-bd6f-44fe-a9b8-54f91704e7bb
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:1688738374 cname:yJu55S3xEWOkNro3
a=ssrc:1688738374 msid:- c5f657e7-bd6f-44fe-a9b8-54f91704e7bb
a=ssrc:1688738374 mslabel:-
a=ssrc:1688738374 label:c5f657e7-bd6f-44fe-a9b8-54f91704e7bb
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:64Um
a=ice-pwd:YXOCkayDQwjpa3nTeeuqx6t0
a=ice-options:trickle
a=fingerprint:sha-256 97:EE:31:CB:37:4C:66:65:47:4B:6B:59:33:70:08:1C:78:FE:04:D5:5E:E8:E2:81:BD:68:AC:9B:43:61:70:4A
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:122 rtx/90000
a=fmtp:122 apt=102
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:124 red/90000
a=rtpmap:120 rtx/90000
a=fmtp:120 apt=124
a=rtpmap:123 ulpfec/90000
a=ssrc-group:FID 4265990675 385254926
a=ssrc:4265990675 cname:yJu55S3xEWOkNro3
a=ssrc:4265990675 msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a
a=ssrc:4265990675 mslabel:-
a=ssrc:4265990675 label:2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a
a=ssrc:385254926 cname:yJu55S3xEWOkNro3
a=ssrc:385254926 msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a
a=ssrc:385254926 mslabel:-
a=ssrc:385254926 label:2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a

dart_sdk.js:31626 [Ion::Client] DEBUG: Setup audio codec => OPUS, payload => 111
dart_sdk.js:31626 [Ion::Client] DEBUG: Setup video codec => VP8, payload => 96
dart_sdk.js:31626 [Ion::Client] DEBUG: ssrcs => 4265990675 385254926, video 4265990675
dart_sdk.js:31626 [Ion::Client] DEBUG: SDP => v=0
o=- 5308524162553206000 2 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS
a=group:BUNDLE 0 1
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=rtpmap:111 OPUS/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-fb:111 transport-cc
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=setup:actpass
a=mid:0
a=msid:- c5f657e7-bd6f-44fe-a9b8-54f91704e7bb
a=recvonly
a=ice-ufrag:64Um
a=ice-pwd:YXOCkayDQwjpa3nTeeuqx6t0
a=fingerprint:sha-256 97:EE:31:CB:37:4C:66:65:47:4B:6B:59:33:70:08:1C:78:FE:04:D5:5E:E8:E2:81:BD:68:AC:9B:43:61:70:4A
a=ice-options:trickle
a=ssrc:1688738374 cname:yJu55S3xEWOkNro3
a=ssrc:1688738374 msid:- c5f657e7-bd6f-44fe-a9b8-54f91704e7bb
a=ssrc:1688738374 mslabel:-
a=ssrc:1688738374 label:c5f657e7-bd6f-44fe-a9b8-54f91704e7bb
a=rtcp-mux
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=rtpmap:96 VP8/90000
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=setup:actpass
a=mid:1
a=msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a
a=recvonly
a=ice-ufrag:64Um
a=ice-pwd:YXOCkayDQwjpa3nTeeuqx6t0
a=fingerprint:sha-256 97:EE:31:CB:37:4C:66:65:47:4B:6B:59:33:70:08:1C:78:FE:04:D5:5E:E8:E2:81:BD:68:AC:9B:43:61:70:4A
a=ice-options:trickle
a=ssrc:4265990675 cname:yJu55S3xEWOkNro3
a=ssrc:4265990675 msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a
a=ssrc:4265990675 mslabel:-
a=ssrc:4265990675 label:2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a
a=rtcp-mux
a=rtcp-rsize

dart_sdk.js:31626 [Ion::Client] DEBUG: Send offer sdp => v=0
o=- 5308524162553206000 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS
m=audio 54198 UDP/TLS/RTP/SAVPF 111
c=IN IP6 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 54198 typ host generation 0 network-id 5
a=ice-ufrag:64Um
a=ice-pwd:YXOCkayDQwjpa3nTeeuqx6t0
a=ice-options:trickle
a=fingerprint:sha-256 97:EE:31:CB:37:4C:66:65:47:4B:6B:59:33:70:08:1C:78:FE:04:D5:5E:E8:E2:81:BD:68:AC:9B:43:61:70:4A
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=recvonly
a=msid:- c5f657e7-bd6f-44fe-a9b8-54f91704e7bb
a=rtcp-mux
a=rtpmap:111 OPUS/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=ssrc:1688738374 cname:yJu55S3xEWOkNro3
a=ssrc:1688738374 msid:- c5f657e7-bd6f-44fe-a9b8-54f91704e7bb
a=ssrc:1688738374 mslabel:-
a=ssrc:1688738374 label:c5f657e7-bd6f-44fe-a9b8-54f91704e7bb
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:64Um
a=ice-pwd:YXOCkayDQwjpa3nTeeuqx6t0
a=ice-options:trickle
a=fingerprint:sha-256 97:EE:31:CB:37:4C:66:65:47:4B:6B:59:33:70:08:1C:78:FE:04:D5:5E:E8:E2:81:BD:68:AC:9B:43:61:70:4A
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=recvonly
a=msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=ssrc:4265990675 cname:yJu55S3xEWOkNro3
a=ssrc:4265990675 msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a
a=ssrc:4265990675 mslabel:-
a=ssrc:4265990675 label:2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a

dart_sdk.js:31626 [protoo-client] DEBUG: send message: {"request":true,"id":7259049,"method":"subscribe","data":{"rid":"room1","jsep":{"sdp":"v=0\r\no=- 5308524162553206000 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS\r\nm=audio 54198 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP6 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 54198 typ host generation 0 network-id 5\r\na=ice-ufrag:64Um\r\na=ice-pwd:YXOCkayDQwjpa3nTeeuqx6t0\r\na=ice-options:trickle\r\na=fingerprint:sha-256 97:EE:31:CB:37:4C:66:65:47:4B:6B:59:33:70:08:1C:78:FE:04:D5:5E:E8:E2:81:BD:68:AC:9B:43:61:70:4A\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=msid:- c5f657e7-bd6f-44fe-a9b8-54f91704e7bb\r\na=rtcp-mux\r\na=rtpmap:111 OPUS/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=ssrc:1688738374 cname:yJu55S3xEWOkNro3\r\na=ssrc:1688738374 msid:- c5f657e7-bd6f-44fe-a9b8-54f91704e7bb\r\na=ssrc:1688738374 mslabel:-\r\na=ssrc:1688738374 label:c5f657e7-bd6f-44fe-a9b8-54f91704e7bb\r\nm=video 9 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:64Um\r\na=ice-pwd:YXOCkayDQwjpa3nTeeuqx6t0\r\na=ice-options:trickle\r\na=fingerprint:sha-256 97:EE:31:CB:37:4C:66:65:47:4B:6B:59:33:70:08:1C:78:FE:04:D5:5E:E8:E2:81:BD:68:AC:9B:43:61:70:4A\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=ssrc:4265990675 cname:yJu55S3xEWOkNro3\r\na=ssrc:4265990675 msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a\r\na=ssrc:4265990675 mslabel:-\r\na=ssrc:4265990675 label:2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a\r\n","type":"offer"},"mid":"1073a415-4b40-4e58-a0cf-cbca4668f1cd#UXAVBF","options":{"codec":"vp8","bandwidth":"512"}}}
dart_sdk.js:31626 [Logger::HTML::WebSocket] DEBUG: send: {"request":true,"id":7259049,"method":"subscribe","data":{"rid":"room1","jsep":{"sdp":"v=0\r\no=- 5308524162553206000 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS\r\nm=audio 54198 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP6 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:151832020 1 udp 2122262783 2409:8a34:e44:16b0:80d5:4f38:2e6a:5deb 54198 typ host generation 0 network-id 5\r\na=ice-ufrag:64Um\r\na=ice-pwd:YXOCkayDQwjpa3nTeeuqx6t0\r\na=ice-options:trickle\r\na=fingerprint:sha-256 97:EE:31:CB:37:4C:66:65:47:4B:6B:59:33:70:08:1C:78:FE:04:D5:5E:E8:E2:81:BD:68:AC:9B:43:61:70:4A\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=msid:- c5f657e7-bd6f-44fe-a9b8-54f91704e7bb\r\na=rtcp-mux\r\na=rtpmap:111 OPUS/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=ssrc:1688738374 cname:yJu55S3xEWOkNro3\r\na=ssrc:1688738374 msid:- c5f657e7-bd6f-44fe-a9b8-54f91704e7bb\r\na=ssrc:1688738374 mslabel:-\r\na=ssrc:1688738374 label:c5f657e7-bd6f-44fe-a9b8-54f91704e7bb\r\nm=video 9 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:64Um\r\na=ice-pwd:YXOCkayDQwjpa3nTeeuqx6t0\r\na=ice-options:trickle\r\na=fingerprint:sha-256 97:EE:31:CB:37:4C:66:65:47:4B:6B:59:33:70:08:1C:78:FE:04:D5:5E:E8:E2:81:BD:68:AC:9B:43:61:70:4A\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=ssrc:4265990675 cname:yJu55S3xEWOkNro3\r\na=ssrc:4265990675 msid:- 2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a\r\na=ssrc:4265990675 mslabel:-\r\na=ssrc:4265990675 label:2c32e2c0-2e79-4ab7-b42a-06fc6d60dd5a\r\n","type":"offer"},"mid":"1073a415-4b40-4e58-a0cf-cbca4668f1cd#UXAVBF","options":{"codec":"vp8","bandwidth":"512"}}}
dart_sdk.js:31626 [protoo-client] DEBUG: Recivied data: {"response":true,"id":7259049,"ok":true,"data":{"jsep":{"sdp":"v=0\r\no=- 181357306 1585066669 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 57:1D:47:9D:EE:36:92:D5:20:A5:17:CE:FA:7F:44:51:2C:1F:2F:17:44:F8:D0:7D:70:61:2F:07:7F:1B:71:B4\r\na=group:BUNDLE 0 1\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:0\r\na=ice-ufrag:JyJdfooQPcWaELms\r\na=ice-pwd:uaUMDOsZjcUhBTLBDxWRIotWYaZCIwVo\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=inactive\r\na=candidate:foundation 1 udp 2130706431 192.168.0.115 60116 typ host generation 0\r\na=candidate:foundation 2 udp 2130706431 192.168.0.115 60116 typ host generation 0\r\na=end-of-candidates\r\nm=video 9 UDP/TLS/RTP/SAVPF 102 96 98\r\nc=IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:1\r\na=ice-ufrag:JyJdfooQPcWaELms\r\na=ice-pwd:uaUMDOsZjcUhBTLBDxWRIotWYaZCIwVo\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:102 H264/90000\r\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtcp-fb:102 goog-remb \r\na=rtcp-fb:102 ccm \r\na=rtcp-fb:102 nack \r\na=rtcp-fb:102 nack pli \r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb \r\na=rtcp-fb:96 ccm \r\na=rtcp-fb:96 nack \r\na=rtcp-fb:96 nack pli \r\na=rtpmap:98 VP9/90000\r\na=ssrc:3931674307 cname:{a944597c-8b96-4d3e-bf61-06b294680d6f}\r\na=ssrc:3931674307 msid:{a944597c-8b96-4d3e-bf61-06b294680d6f} {49cd52c5-1081-4878-8d4e-67890b86b81b}\r\na=ssrc:3931674307 mslabel:{a944597c-8b96-4d3e-bf61-06b294680d6f}\r\na=ssrc:3931674307 label:{49cd52c5-1081-4878-8d4e-67890b86b81b}\r\na=msid:{a944597c-8b96-4d3e-bf61-06b294680d6f} {49cd52c5-1081-4878-8d4e-67890b86b81b}\r\na=sendrecv\r\na=candidate:foundation 1 udp 2130706431 192.168.0.115 60116 typ host generation 0\r\na=candidate:foundation 2 udp 2130706431 192.168.0.115 60116 typ host generation 0\r\na=end-of-candidates\r\n","type":"answer"},"mid":"297e527d-1126-43c1-b6a6-81c708023602#FFEDEY"}}
dart_sdk.js:31626 [Ion::Client] DEBUG: subscribe success => result(mid => 297e527d-1126-43c1-b6a6-81c708023602#FFEDEY) sdp => v=0
o=- 181357306 1585066669 IN IP4 0.0.0.0
s=-
t=0 0
a=fingerprint:sha-256 57:1D:47:9D:EE:36:92:D5:20:A5:17:CE:FA:7F:44:51:2C:1F:2F:17:44:F8:D0:7D:70:61:2F:07:7F:1B:71:B4
a=group:BUNDLE 0 1
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=setup:passive
a=mid:0
a=ice-ufrag:JyJdfooQPcWaELms
a=ice-pwd:uaUMDOsZjcUhBTLBDxWRIotWYaZCIwVo
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
a=inactive
a=candidate:foundation 1 udp 2130706431 192.168.0.115 60116 typ host generation 0
a=candidate:foundation 2 udp 2130706431 192.168.0.115 60116 typ host generation 0
a=end-of-candidates
m=video 9 UDP/TLS/RTP/SAVPF 102 96 98
c=IN IP4 0.0.0.0
a=setup:passive
a=mid:1
a=ice-ufrag:JyJdfooQPcWaELms
a=ice-pwd:uaUMDOsZjcUhBTLBDxWRIotWYaZCIwVo
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:102 H264/90000
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 ccm
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 ccm
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:98 VP9/90000
a=ssrc:3931674307 cname:{a944597c-8b96-4d3e-bf61-06b294680d6f}
a=ssrc:3931674307 msid:{a944597c-8b96-4d3e-bf61-06b294680d6f} {49cd52c5-1081-4878-8d4e-67890b86b81b}
a=ssrc:3931674307 mslabel:{a944597c-8b96-4d3e-bf61-06b294680d6f}
a=ssrc:3931674307 label:{49cd52c5-1081-4878-8d4e-67890b86b81b}
a=msid:{a944597c-8b96-4d3e-bf61-06b294680d6f} {49cd52c5-1081-4878-8d4e-67890b86b81b}
a=sendrecv
a=candidate:foundation 1 udp 2130706431 192.168.0.115 60116 typ host generation 0
a=candidate:foundation 2 udp 2130706431 192.168.0.115 60116 typ host generation 0
a=end-of-candidates

dart_sdk.js:31626 onaddstream argument: [object MediaStream]
dart_sdk.js:31626 [Ion::Client] DEBUG: Stream::pc::onaddstream {a944597c-8b96-4d3e-bf61-06b294680d6f}
dart_sdk.js:31626 You don't have to call RTCVideoRenderer.initialize on Flutter Web
3dart_sdk.js:31626 [protoo-client] DEBUG: Recivied data: {}`

When both devices are on same wifi does not work sometimes

During a demo 2 devices were on wifi and neither showed up in the list.
Even SELF did not show up.
This was in a corporate network
I assume it was because the router was a symmetric router ?
We were running off the current CloudWebrtc gateway server.
How to mitigate this ?

Durable messaging

I was reading the Roadmap and saw that Centrifugo is deems too complex.
I agree.

But we need to think about the best way to support Subscriptions.
A Subscription needs to map to many users and then to each users in terms of a ACK. So you need a Mailbox per users subscribed to the Topic. At least thats how i think about it.

THen you have th properties for each mailbox and topic of:

  • Presence
  • History
  • ACk ( sync or asny).

docker and docker compose

Its looking awesome..

Would be good to have a docker and docker compose for etcd, rabbit MQ, etc.
Or do you run on k8 or maybe even firecracker ?

Flutter Client

Its good to have a standard Dart client For Flutter, but also i would support a gomobile based one too.

The gomobile client is wrapped by a standard Flutter Plugin, but it allows oyu to have golang for the client and server and that can mean less techncial debt and less bugs. Its quite difficult to get a Pub SUb system to be sturdy over changing network conditions and other aspects i my option

Docker/deploy improvements

I am just dropping a list of ideas/improvements. If some of these don't make sense please push back! There is a big demand for conference software happening. If we can make ion the easiest SFU to deploy (and the most perfomant) this could be really great for the project :)

When these are solved I will post on Reddit/HN/Twitter and we will see a great response.

Use LetsEncrypt

When everything comes up we should make cert generation easier.

Host pre-made images in Dockerhub (done)

Users shouldn't have to build anything locally. We should continue to make local development easy though!

Use SetNAT1To1IPs

Pion supports setting your Public IP in the config. We need to do this because the service is running in a container (and does not know the host IP). We can script this so a user doesn't even have to do anything, we will just autoset this on startup by using a service like 'whatismyip'.

Use SetEphemeralUDPPortRange (done)

Since ion doesn't have access to any of the hosts interfaces it can't get any inbound traffic. We should expose a range of UDP ports, and then use SetEphemeralUDPPortRange to make sure pion/ion only listens on the range that are exposed by the host operating system.

Webview on desktop

Run on desktop using a webview.

Does anyone know if we view has access to the audio and video camera ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.