The solution allows anchors to compete with each other and co-anchor with viewers in real time

Overview

live_flutter_plugin

English | 简体中文

The solution allows anchors to compete with each other and co-anchor with viewers in real time, with a global end-to-end latency of below 300 ms on average, and supports 1080p resolution.

live_flutter_plugin pub dev homepage

Features

  • Supports RTMP, HTTP-FLV, TRTC and WebRTC.
  • View capturing, which allows you to capture the video images of the current livestream.
  • Delay adjustment, which allows you to set the minimum time and maximum time for auto adjustment of the player cache.
  • Customized video collection, which allows you to customize your audio and video data sources based on the project requirements.
  • Beauty filters, filters, and stickers. The pusher contains multiple sets of beauty retouch algorithms (natural & smooth) and multiple color space filters (supporting custom filters).
  • QoS traffic throttling technology and uplink network adaptation capability. The pusher can adjust the audio and video data volumes in real time based on the actual network conditions on the host side.

plugin class files

.
├── manager
│   ├── tx_audio_effect_manager.dart  audio effect manager
│   ├── tx_beauty_manager.dart  beauty manager
│   ├── tx_device_manager.dart  device manager
│   └── tx_live_manager.dart  pusher/player create/destroy
├── v2_tx_live_code.dart  Definitions of error codes and warning codes of Tencent Cloud LVB.
├── v2_tx_live_def.dart  Key type definitions for Tencent Cloud LVB.
├── v2_tx_live_player.dart  Tencent Cloud live player-This player pulls audio and video data from the specified livestreaming URL and plays the data after decoding and local rendering.
├── v2_tx_live_player_observer.dart Tencent Cloud live player callback notification.
├── v2_tx_live_premier.dart  V2TXLive High-level interface
├── v2_tx_live_pusher.dart  Tencent Cloud live pusher-The live pusher encodes the local audio and video data and pushes the encoded data to a specified push URL.
├── v2_tx_live_pusher_observer.dart Live pusher callback notification.
└── widget
    └── v2_tx_live_video_widget.dart V2TXLiveVideoWidget

Integrating the SDK

The SDK for Flutter has been published on Pub. You can have the SDK downloaded and updated automatically by configuring pubspec.yaml.

1. Add the following dependency to pubspec.yaml of your project.

dependencies:
  live_flutter_plugin: latest version number

2. Grant camera and mic permissions to enable the audio and video call features.

iOS

1. Add requests for camera and mic permissions in Info.plist:

<key>NSCameraUsageDescription</key>
<string>Video calls are possible only with camera permission.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Audio calls are possible only with mic permission.</string>

2. Add the field io.flutter.embedded_views_preview and set the value to Yes.

Android

1. Open /android/app/src/main/AndroidManifest.xml.

2. Add xmlns:tools="http://schemas.android.com/tools" to “manifest”.

3. Add tools:replace="android:label" to “application”.

Note: Without the above steps, the “Android Manifest merge failed” error will occur and the compilation will fail.

Quick Start

1. Setup License

import 'package:live_flutter_plugin/v2_tx_live_premier.dart';

 /// License Management View (https://console.cloud.tencent.com/live/license)
setupLicense() {
  // License URL of your application
  var LICENSEURL = "";
  // License key of your application
  var LICENSEURLKEY = "";
  V2TXLivePremier.setLicence(LICENSEURL, LICENSEURLKEY);
}

2. Setup V2TXLivePusher

note: Please use a real device, Simulator are not supported.

2.1 init V2TXLivePusher

import 'package:live_flutter_plugin/v2_tx_live_pusher.dart';

/// V2TXLivePusher Initialization
initPusher() {
  _livePusher = V2TXLivePusher(V2TXLiveMode.v2TXLiveModeRTC);
  /// setup Pusher listener
  _livePusher.addListener(onPusherObserver);
}

/// pusher observer
onPusherObserver(V2TXLivePusherListenerType type, param) {
  debugPrint("==pusher listener type= ${type.toString()}");
  debugPrint("==pusher listener param= $param");
}

2.2 Setup Video RenderView

import 'package:live_flutter_plugin/widget/v2_tx_live_video_widget.dart';

// viewId: view ID generated by `V2TXLiveVideoWidget`
Widget renderView() {
  return V2TXLiveVideoWidget(
    onViewCreated: (viewId) async {
      _livePusher.setRenderViewID(_renderViewId);
    },
  );
}

2.3 Start Push

startPush() async {
  // open camera
  await _livePusher.startCamera(true);
  // open microphone
  await _livePusher.startMicrophone();
  // generate RTMP/TRTC url
  var url = "";
  // start push
  await _livePusher.startPush(url);
}

2.4 Stop Push

stopPush() async {
  // close camera
  await _livePusher.stopCamera();
  // close microphone
  await _livePusher.stopMicrophone();
  // stop push
  await _livePusher.stopPush();
}

3. Setup V2TXLivePlayer

note: Please use other devices to test。

3.1 Init V2TXLivePlayer

import 'package:live_flutter_plugin/v2_tx_live_player.dart';

initPlayer() {
   /// Create V2TXLivePlayer
  _livePlayer = V2TXLivePlayer();
  _livePlayer.addListener(onPlayerObserver);
}

/// Player observer
onPlayerObserver(V2TXLivePlayerListenerType type, param) {
  debugPrint("==player listener type= ${type.toString()}");
  debugPrint("==player listener param= $param");
}

3.2 Setup Video RenderView

import 'package:live_flutter_plugin/widget/v2_tx_live_video_widget.dart';

// viewId: view ID generated by `V2TXLiveVideoWidget`
Widget renderView() {
  return V2TXLiveVideoWidget(
    onViewCreated: (viewId) async {
      // set video renderView
      _livePlayer.setRenderViewID(_renderViewId);
    },
  );
}

3.3 Start Play

startPlay() async {
  // generate RTMP/TRTC/Led url
  var url = ""
  // start play
  await _livePlayer?.startPlay(url);
}

3.4 Stop Play

/// stop play
stopPlay() {
  _livePlayer.stopPlay();
}

Common problem

How do I view logs?

live_flutter_plugin logs are compressed and encrypted by default with the XLOG extension. You can set setLogCompressEnabled to specify whether to encrypt logs. If a log filename contains C (compressed), the log is compressed and encrypted; if it contains R (raw), the log is in plaintext.

  • iOS:Documents/log of the application sandbox
  • Android
    • 6.7 or below: /sdcard/log/tencent/liteav
    • 6.8 or above: /sdcard/Android/data/package name/files/log/tencent/liteav/

IOS cannot display video (Android is good)

Please confirm io.flutter.embedded_views_preview is YES in your info.plist

Android Manifest merge failed

Please Open '/example/android/app/src/main/AndroidManifest.xml' file。

1.Add xmlns:tools="http://schemas.android.com/tools" to manifest

2.Add tools:replace="android:label" to application

Comments
  • ios模拟器上运行一直报错Framework not found TXFFmpeg

    ios模拟器上运行一直报错Framework not found TXFFmpeg

    之前是好的,不知道是啥原因,今天突然不行了,找了好多办法,一直不行。升级了版本也是一样 Xcode's output: ↳ Writing result bundle at path: /var/folders/1g/fvwnmlyd3vdgbc4wdn261wnc0000gn/T/flutter_tools.IM32cA/flutter_ios_build_temp_dirS8atXd/temporary_xcresult_bundle

    warning: [CP] TXSoundTouch.xcframework: Unable to find matching slice in 'ios-x86_64-simulator ios-arm64_armv7' for the current build architectures (arm64 x86_64 i386) and platform
    (-iphonesimulator).
    warning: [CP] TXFFmpeg.xcframework: Unable to find matching slice in 'ios-x86_64-simulator ios-arm64_armv7' for the current build architectures (arm64 x86_64 i386) and platform (-iphonesimulator).
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/V2TXLivePusherPlugin.swift:770:17: warning: parameters of 'onError(_:message:extraInfo:)' have different
    optionality than expected by protocol 'V2TXLivePusherObserver'
        public func onError(_ code: V2TXLiveCode, message msg: String!, extraInfo: [AnyHashable : Any]!) {
                    ^                                                ~                                ~
    
    TXLiteAVSDK_Professional.V2TXLivePusherObserver:2:19: note: requirement 'onError(_:message:extraInfo:)' declared here
        optional func onError(_ code: V2TXLiveCode, message msg: String, extraInfo: [AnyHashable : Any])
                      ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/V2TXLivePusherPlugin.swift:775:17: warning: parameters of 'onWarning(_:message:extraInfo:)' have different
    optionality than expected by protocol 'V2TXLivePusherObserver'
        public func onWarning(_ code: V2TXLiveCode, message msg: String!, extraInfo: [AnyHashable : Any]!) {
                    ^                                                  ~                                ~
    
    TXLiteAVSDK_Professional.V2TXLivePusherObserver:3:19: note: requirement 'onWarning(_:message:extraInfo:)' declared here
        optional func onWarning(_ code: V2TXLiveCode, message msg: String, extraInfo: [AnyHashable : Any])
                      ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/V2TXLivePusherPlugin.swift:795:17: warning: parameters of 'onPushStatusUpdate(_:message:extraInfo:)' have
    different optionality than expected by protocol 'V2TXLivePusherObserver'
        public func onPushStatusUpdate(_ status: V2TXLivePushStatus, message msg: String!, extraInfo: [AnyHashable : Any]!) {
                    ^                                                                   ~                                ~
    
    TXLiteAVSDK_Professional.V2TXLivePusherObserver:7:19: note: requirement 'onPushStatusUpdate(_:message:extraInfo:)' declared here
        optional func onPushStatusUpdate(_ status: V2TXLivePushStatus, message msg: String, extraInfo: [AnyHashable : Any])
                      ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/V2TXLivePusherPlugin.swift:800:17: warning: parameter of 'onStatisticsUpdate' has different optionality
    than expected by protocol 'V2TXLivePusherObserver'
        public func onStatisticsUpdate(_ statistics: V2TXLivePusherStatistics!) {
                    ^                                                        ~
    
    TXLiteAVSDK_Professional.V2TXLivePusherObserver:8:19: note: requirement 'onStatisticsUpdate' declared here
        optional func onStatisticsUpdate(_ statistics: V2TXLivePusherStatistics)
                      ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/V2TXLivePusherPlugin.swift:813:17: warning: parameter of 'onSnapshotComplete' has different optionality
    than expected by protocol 'V2TXLivePusherObserver'
        public func onSnapshotComplete(_ image: UIImage!) {
                    ^                                  ~
    
    TXLiteAVSDK_Professional.V2TXLivePusherObserver:10:19: note: requirement 'onSnapshotComplete' declared here
        optional func onSnapshotComplete(_ image: UIImage)
                      ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/View/V2LiveRenderView.swift:57:9: warning: default will never be executed
            default:
            ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/TXDeviceManagerPlugin.swift:98:34: warning: 'setSystemVolumeType' is deprecated: use
    TRTCCloud#startLocalAudio:quality instead
            let code = deviceManager.setSystemVolumeType(type)
                                     ^
    <module-includes>:1:9: note: in file included from <module-includes>:1:
    #import "Headers/TXLiteAVSDK.h"
            ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/TXDeviceManagerPlugin.swift:98:34: warning: 'setSystemVolumeType' is deprecated: use
    TRTCCloud#startLocalAudio:quality instead
            let code = deviceManager.setSystemVolumeType(type)
                                     ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/V2TXLivePusherPlugin.swift:770:17: warning: parameters of 'onError(_:message:extraInfo:)' have different
    optionality than expected by protocol 'V2TXLivePusherObserver'
        public func onError(_ code: V2TXLiveCode, message msg: String!, extraInfo: [AnyHashable : Any]!) {
                    ^                                                ~                                ~
    
    TXLiteAVSDK_Professional.V2TXLivePusherObserver:2:19: note: requirement 'onError(_:message:extraInfo:)' declared here
        optional func onError(_ code: V2TXLiveCode, message msg: String, extraInfo: [AnyHashable : Any])
                      ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/V2TXLivePusherPlugin.swift:775:17: warning: parameters of 'onWarning(_:message:extraInfo:)' have different
    optionality than expected by protocol 'V2TXLivePusherObserver'
        public func onWarning(_ code: V2TXLiveCode, message msg: String!, extraInfo: [AnyHashable : Any]!) {
                    ^                                                  ~                                ~
    
    TXLiteAVSDK_Professional.V2TXLivePusherObserver:3:19: note: requirement 'onWarning(_:message:extraInfo:)' declared here
        optional func onWarning(_ code: V2TXLiveCode, message msg: String, extraInfo: [AnyHashable : Any])
                      ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/V2TXLivePusherPlugin.swift:795:17: warning: parameters of 'onPushStatusUpdate(_:message:extraInfo:)' have
    different optionality than expected by protocol 'V2TXLivePusherObserver'
        public func onPushStatusUpdate(_ status: V2TXLivePushStatus, message msg: String!, extraInfo: [AnyHashable : Any]!) {
                    ^                                                                   ~                                ~
    
    TXLiteAVSDK_Professional.V2TXLivePusherObserver:7:19: note: requirement 'onPushStatusUpdate(_:message:extraInfo:)' declared here
        optional func onPushStatusUpdate(_ status: V2TXLivePushStatus, message msg: String, extraInfo: [AnyHashable : Any])
                      ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/V2TXLivePusherPlugin.swift:800:17: warning: parameter of 'onStatisticsUpdate' has different optionality
    than expected by protocol 'V2TXLivePusherObserver'
        public func onStatisticsUpdate(_ statistics: V2TXLivePusherStatistics!) {
                    ^                                                        ~
    
    TXLiteAVSDK_Professional.V2TXLivePusherObserver:8:19: note: requirement 'onStatisticsUpdate' declared here
        optional func onStatisticsUpdate(_ statistics: V2TXLivePusherStatistics)
                      ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/Plugin/V2TXLivePusherPlugin.swift:813:17: warning: parameter of 'onSnapshotComplete' has different optionality
    than expected by protocol 'V2TXLivePusherObserver'
        public func onSnapshotComplete(_ image: UIImage!) {
                    ^                                  ~
    
    TXLiteAVSDK_Professional.V2TXLivePusherObserver:10:19: note: requirement 'onSnapshotComplete' declared here
        optional func onSnapshotComplete(_ image: UIImage)
                      ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/live_flutter_plugin-1.0.7/ios/Classes/View/V2LiveRenderView.swift:57:9: warning: default will never be executed
            default:
            ^
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/connectivity_plus-2.3.5/ios/Classes/ReachabilityConnectivityProvider.swift:23:5: warning: result of call to 'ensureReachability()' is unused
        ensureReachability()
        ^                 ~~
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/connectivity_plus-2.3.5/ios/Classes/PathMonitorConnectivityProvider.swift:31:5: warning: result of call to 'ensurePathMonitor()' is unused
        ensurePathMonitor()
        ^                ~~
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/connectivity_plus-2.3.5/ios/Classes/PathMonitorConnectivityProvider.swift:35:5: warning: result of call to 'ensurePathMonitor()' is unused
        ensurePathMonitor()
        ^                ~~
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/connectivity_plus-2.3.5/ios/Classes/ReachabilityConnectivityProvider.swift:23:5: warning: result of call to 'ensureReachability()' is unused
        ensureReachability()
        ^                 ~~
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/connectivity_plus-2.3.5/ios/Classes/PathMonitorConnectivityProvider.swift:31:5: warning: result of call to 'ensurePathMonitor()' is unused
        ensurePathMonitor()
        ^                ~~
    /Users/end/.pub-cache/hosted/pub.flutter-io.cn/connectivity_plus-2.3.5/ios/Classes/PathMonitorConnectivityProvider.swift:35:5: warning: result of call to 'ensurePathMonitor()' is unused
        ensurePathMonitor()
        ^                ~~
    ld: framework not found TXFFmpeg
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    note: Using new build system
    note: Planning
    note: Build preparation complete
    note: Building targets in parallel
    
    Result bundle written to path:
    	/var/folders/1g/fvwnmlyd3vdgbc4wdn261wnc0000gn/T/flutter_tools.IM32cA/flutter_ios_build_temp_dirS8atXd/temporary_xcresult_bundle
    

    Error (Xcode): Framework not found TXFFmpeg

    Could not build the application for the simulator. Error launching application on iPod touch (7th generation).

    opened by Tianyazz 4
  • 连麦mixStreams空指针

    连麦mixStreams空指针

    安卓端,连麦setMixTranscodingConfig,config通过693行函数getMixTranscodingConfigByMap转换,mixStreams读取在726行,未考虑空的情况,导致设置后在安卓端直播SDK中,V2TXLivePusherJni类的403行设置的时候,在423行直接读取var5.size()空指针,CRASH

    opened by ymback 2
  • ios cocoapods 找不到 TXCustomBeautyProcesserPlugin插件

    ios cocoapods 找不到 TXCustomBeautyProcesserPlugin插件

    pubspec.yaml 直接导入 live_flutter_plugin: 1.0.11 报 [!] Unable to find a specification for TXCustomBeautyProcesserPlugin depended upon by live_flutter_plugin

    opened by xienas 1
  • 不要使用latest.release,请使用指定的版本号

    不要使用latest.release,请使用指定的版本号

    api 'com.tencent.liteav:LiteAVSDK_Live:latest.release' 这么弄,现在下到最新版本9.9.0.11820 com.tencent.rtmp.TXLog没了 com.tencent.liteav.audio.TXAudioEffectManager.TXVoiceReverbType.TXLiveVoiceReverbType_11,com.tencent.liteav.audio.TXAudioEffectManager.TXVoiceReverbType.TXLiveVoiceReverbType_12也没了 做SDK的话,不要这么弄,请考虑未来维护滞后的问题,应当指定版本号 现在这个latest.release=>9.9.0.11820,实际可用的应该是9.5.11582,项目组互相沟通好谢谢

    opened by ymback 0
  • 安卓模拟器无法运行

    安卓模拟器无法运行

    Log: ` W/SoLoader( 4432): load library txsoundtouch from system path W/SoLoader( 4432): load library : java.lang.UnsatisfiedLinkError: dlopen failed: library "libtxsoundtouch.so" not found W/SoLoader( 4432): load library txsoundtouch false W/SoLoader( 4432): load library txffmpeg from system path W/SoLoader( 4432): load library : java.lang.UnsatisfiedLinkError: dlopen failed: library "libtxffmpeg.so" not found W/SoLoader( 4432): load library txffmpeg false W/SoLoader( 4432): load library livesdk from system path W/SoLoader( 4432): load library : java.lang.UnsatisfiedLinkError: dlopen failed: library "liblivesdk.so" not found W/SoLoader( 4432): load library livesdk false W/SoLoader( 4432): load library liteavsdk from system path W/SoLoader( 4432): load library : java.lang.UnsatisfiedLinkError: dlopen failed: library "libliteavsdk.so" not found W/SoLoader( 4432): load library liteavsdk false E/chtv.rmzskanka( 4432): No implementation found for void com.tencent.liteav.base.Log.nativeWriteLogToNative(int, java.lang.String, java.lang.String) (tried Java_com_tencent_liteav_base_Log_nativeWriteLogToNative and Java_com_tencent_liteav_base_Log_nativeWriteLogToNative__ILjava_lang_String_2Ljava_lang_String_2) E/AndroidRuntime( 4432): FATAL EXCEPTION: main E/AndroidRuntime( 4432): Process: com.touchtv.rmzskankan, PID: 4432 E/AndroidRuntime( 4432): java.lang.UnsatisfiedLinkError: No implementation found for void com.tencent.liteav.base.Log.nativeWriteLogToNative(int, java.lang.String, java.lang.String) (tried Java_com_tencent_liteav_base_Log_nativeWriteLogToNative and Java_com_tencent_liteav_base_Log_nativeWriteLogToNative__ILjava_lang_String_2Ljava_lang_String_2) E/AndroidRuntime( 4432): at com.tencent.liteav.base.Log.nativeWriteLogToNative(Native Method) E/AndroidRuntime( 4432): at com.tencent.liteav.base.Log.i(SourceFile:177) E/AndroidRuntime( 4432): at com.tencent.liteav.basic.log.TXCLog.i(SourceFile:36) E/AndroidRuntime( 4432): at com.tencent.live.utils.Logger.info(Logger.java:12) E/AndroidRuntime( 4432): at com.tencent.live.plugin.V2TXLivePremierPlugin.onMethodCall(V2TXLivePremierPlugin.java:45) E/AndroidRuntime( 4432): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:262) E/AndroidRuntime( 4432): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295) E/AndroidRuntime( 4432): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319) E/AndroidRuntime( 4432): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12) E/AndroidRuntime( 4432): at android.os.Handler.handleCallback(Handler.java:938) E/AndroidRuntime( 4432): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime( 4432): at android.os.Looper.loop(Looper.java:223) E/AndroidRuntime( 4432): at android.app.ActivityThread.main(ActivityThread.java:7656) E/AndroidRuntime( 4432): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime( 4432): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) E/AndroidRuntime( 4432): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

    I/Process ( 4432): Sending signal. PID: 4432 SIG: 9

    Lost connection to device.` Exited

    opened by kira2015 1
  • Flutter 直接集成Android无法运行,可能是机器Flutter环境是FVM管理导致

    Flutter 直接集成Android无法运行,可能是机器Flutter环境是FVM管理导致

    提示无法找到: /Users/mac/fvm/versions/2.10.4/bin/cache/artifacts/engine/android-arm/flutter.jar.

    image

    插件的android/build.gradle里的 compileOnly files("$flutterRoot/bin/cache/artifacts/engine/android-arm/flutter.jar")
    似乎没有什么必要,我本地试了可以删除且删除之后可以正常运行

    opened by Mauiie 1
  • 调动 V2TXLivePlayer 的 destroy() 方法会导致 app闪退

    调动 V2TXLivePlayer 的 destroy() 方法会导致 app闪退

    E/AndroidRuntime( 8987): java.lang.NullPointerException: Attempt to invoke virtual method 'void io.flutter.plugin.common.MethodChannel.invokeMethod(java.lang.String, java.lang.Object)' on a null object reference E/AndroidRuntime( 8987): at com.tencent.live.plugin.V2TXLivePlayerPlugin$V2TXLivePlayerObserverImpl.invokeListener(V2TXLivePlayerPlugin.java:520) E/AndroidRuntime( 8987): at com.tencent.live.plugin.V2TXLivePlayerPlugin$V2TXLivePlayerObserverImpl.onStatisticsUpdate(V2TXLivePlayerPlugin.java:466) E/AndroidRuntime( 8987): at com.tencent.live2.leb.b$17.run(TXLEBPlayerImpl.java:536) E/AndroidRuntime( 8987): at android.os.Handler.handleCallback(Handler.java:900) E/AndroidRuntime( 8987): at android.os.Handler.dispatchMessage(Handler.java:103) E/AndroidRuntime( 8987): at android.os.Looper.loop(Looper.java:219) E/AndroidRuntime( 8987): at android.app.ActivityThread.main(ActivityThread.java:8668) E/AndroidRuntime( 8987): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime( 8987): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) E/AndroidRuntime( 8987): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)

    opened by weishirongzhen 2
  • android 中多次调用setRenderViewID 会导致  MissingPluginException:No implementation found for method setRenderView

    android 中多次调用setRenderViewID 会导致 MissingPluginException:No implementation found for method setRenderView

    pageview中使用 V2TXLiveVideoWidget

     V2TXLiveVideoWidget(
                      onViewCreated: (viewId) async {
    
    
                       final code = await vpLiveController.controller.setRenderViewID(viewId);
                      },
                    ),
    

    连续滚动后会出现 MissingPluginException(No implementation found for method setRenderView on channel player_1c64bf80-ac18-11ec-b836-d3630a6fdec1

    opened by weishirongzhen 1
Releases(v1.0.2)
Owner
LiteAVSDK
high-quality interactive audio/video services, eg: rtc、live etc
LiteAVSDK
A Funtioning basic Clock UI APP with extra functionalities such as displaying thecurrent time location being used and checking time for other timezones simultaneosly.

clock_UI A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

Anjola Favour Ayomikun 0 Dec 28, 2021
Codeflow 19 Sep 29, 2022
Created application for team to help each other with providing food they want

Food wishes app When you login or create your account, you can write what do you wish right now as a separate card, using "Edit" button. If you no lon

Pavlo Osadchuk 0 Nov 29, 2021
Z time ago - A simple Flutter z time ago package used to change date to time ago for english, arabic and kurdish languages

This package is used to get time duration from now and given time for kurdish, a

Zakarya Muhammad 2 May 19, 2022
App-flutter-real-estate - Real Estate App Built With Flutter

Real Estate App - Flutter Preview video: https://youtu.be/11u0KeymAAs My Twitter

Sangvaleap Vanny 136 Dec 7, 2022
The prime objective of this app is to store the real time information of the user using firebase cloud firestore and also can delete, remove and update the customer information

crud_firestore A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started i

Muhammad Zakariya 0 Mar 15, 2022
Real-time object detection in Flutter using camera and tflite plugin

For details: https://medium.com/@shaqian629/real-time-object-detection-in-flutter-b31c7ff9ef96 flutter_realtime_detection Real-time object detection i

Post_Swift 6 Oct 12, 2022
Keyviz is a free and open-source tool to visualize your keystrokes ⌨️ in real-time.

Keyviz Keyviz is a free and open-source software to visualize your ⌨️ keystrokes in realtime! Let your audience know what handy shortcuts/keys you're

Rahul Mula 1.9k Jan 2, 2023
Socket library for creating real-time multiplayer games. Based on TCP, with the ability to send messages over UDP (planned).

Game socket The library was published in early access and is not stable, as it is being developed in parallel with other solutions. English is not a n

Stanislav 10 Aug 10, 2022
Bitcoin Ticker App which will fetch you the real time Bitcoin exchange values written in Dart & Flutter

About This project is written completely in Dart & Flutter. The app will basically provide you the real time value of three major cryptocurrencies nam

null 0 Dec 21, 2021
Access links between your devices in real time!

Lineker Description Lineker allows you to manage links between your desktop and smartphone in real time, saving and deleting at any time. Create filte

Blackoutseeker 2 Aug 5, 2022
Flutter App - Add Firebase Crud Operation can Create Delete Update Read real time data

Firebase-Crud-Operation In This Flutter App I Will Add Firebase Crud Operation like you can Create Delete Update Read real time data. Sample Images Re

Justin Roy 5 Nov 7, 2022
A string generator that helps to implement real-time editing of an ordered sequence.

About A string generator that helps to implement real-time editing of an ordered sequence. It makes reordering, sorting, and interleaving transactions

Minsik Kim 3 May 15, 2022
Social app has a real time connection with firebase , contains posts, chats, stories, friends

##SocialKom (Social App) #####First Notice this: you need to link the app with fire base by: 1- adding google-services.json for android 2- adding goog

Mina  Faried 24 Oct 8, 2022
Tinder-like class that allows dogs to pair with other dogs as play buddies and have fun(:

Paw-Tindr Tinder-like class that allows dogs to pair with other dogs as play buddies and have fun(: Setting Up Firebase Follow steps mentioned (here)[

null 3 Dec 15, 2022
Simple project that consumes the World Time APi and displays the time for the chosen location.

World Time App Simple project that consumes the World Time APi and displays the time for the chosen location. Web Api WorldTime Technologies Flutter A

Mario Vieria 1 Jan 20, 2022
World Time App - World time application made using flutter

World Time App Flutter Application to view time in different parts of world. This was my first app built while learning flutter App Screenshots Loadin

Akash Rajpurohit 0 Jan 17, 2020
A Flutter widget to set time with spinner instead of material time picker

flutter_time_picker_spinner Time Picker widget with spinner instead of a material time picker. 12H format 24H format 24H format with second Custom sty

Bobby Stenly Irawan 34 Aug 8, 2022
Time Table application specifically aimed towards students. Share Time-Tables. Suggest Updates.

Time-Table-App Time Table application specifically aimed towards students. Tech stack Project is created by: Flutter: 2.8.1 Dart: 2.15.1 Planned Featu

PEC ACM CSS 8 Oct 7, 2022