JiangJuHong / FlutterQiniucloudLivePlugin

Flutter 七牛云直播云 推流/播放 SDK集成
Apache License 2.0
61 stars 22 forks source link

尝试运行 example 没有正常工作 #5

Closed GuoDapeng closed 4 years ago

GuoDapeng commented 4 years ago

感谢您的付出,我这里遇到了一些问题,我正在尝试自己解决。但是我不懂原生开发,如果方便,希望能提供一些帮助。

android 端能安装到真机,但是点击推流会会卡住:

Launching lib/main.dart on SEA AL10 in debug mode...
Running Gradle task 'assembleDebug'...
注: /Users/felix/.pub-cache/hosted/pub.flutter-io.cn/permission_handler-4.3.0/android/src/main/java/com/baseflow/permissionhandler/PermissionHandlerPlugin.java使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk...
Waiting for SEA AL10 to report its views...
Debug service listening on ws://127.0.0.1:62813/82nm5b1rY-A=/ws
Syncing files to device SEA AL10...
I/AwareBitmapCacher(32613): init lrucache size: 2097152 pid=32613
W/_plugin_example(32613): type=1400 audit(0.0:5937576): avc: granted { write } for pid=32613 name="files" dev="sdcardfs" ino=430733 scontext=u:r:untrusted_app_27:s0:c62,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
W/_plugin_example(32613): type=1400 audit(0.0:5937577): avc: granted { add_name } for pid=32613 name="report.db-journal" scontext=u:r:untrusted_app_27:s0:c62,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
W/_plugin_example(32613): type=1400 audit(0.0:5937578): avc: granted { create } for pid=32613 name="report.db-journal" scontext=u:r:untrusted_app_27:s0:c62,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0:c62,c257,c512,c768 tclass=file
W/_plugin_example(32613): type=1400 audit(0.0:5937579): avc: granted { read write open } for pid=32613 path="/storage/emulated/0/Android/data/top.huic.flutter_qiniucloud_live_plugin_example/files/report.db-journal" dev="sdcardfs" ino=584205 scontext=u:r:untrusted_app_27:s0:c62,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file
W/_plugin_example(32613): type=1400 audit(0.0:5937580): avc: granted { read } for pid=32613 name="files" dev="sdcardfs" ino=430733 scontext=u:r:untrusted_app_27:s0:c62,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
W/_plugin_example(32613): type=1400 audit(0.0:5937590): avc: granted { write } for pid=32613 name="files" dev="sdcardfs" ino=430733 scontext=u:r:untrusted_app_27:s0:c62,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
W/_plugin_example(32613): type=1400 audit(0.0:5937591): avc: granted { add_name } for pid=32613 name="reportnew.db" scontext=u:r:untrusted_app_27:s0:c62,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
W/_plugin_example(32613): type=1400 audit(0.0:5937592): avc: granted { create } for pid=32613 name="reportnew.db" scontext=u:r:untrusted_app_27:s0:c62,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0:c62,c257,c512,c768 tclass=file
W/_plugin_example(32613): type=1400 audit(0.0:5937593): avc: granted { read write open } for pid=32613 path="/storage/emulated/0/Android/data/top.huic.flutter_qiniucloud_live_plugin_example/files/reportnew.db" dev="sdcardfs" ino=543202 scontext=u:r:untrusted_app_27:s0:c62,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file
W/_plugin_example(32613): type=1400 audit(0.0:5937594): avc: granted { write } for pid=32613 name="files" dev="sdcardfs" ino=430733 scontext=u:r:untrusted_app_27:s0:c62,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
I/YOUMEIM (32613): 2020/05/14 10:57:43.400 threadid:527733079376  INFO: Enter[YouMeDataChannel.cpp#ReportProc:102]
I/YOUMEIM (32613): 2020/05/14 10:57:43.410 threadid:527733079376  INFO: IPV4[SyncTCP.cpp#Connect:131]
D/YOUMEIM (32613): 2020/05/14 10:57:43.411 threadid:527733079376  DEBUG: connected  IPV4: -1[SyncTCP.cpp#Connect:138]
I/YOUMEIM (32613): 2020/05/14 10:57:43.485 threadid:527733079376  INFO: IPV4[SyncTCP.cpp#Connect:131]
D/YOUMEIM (32613): 2020/05/14 10:57:43.485 threadid:527733079376  DEBUG: connected  IPV4: -1[SyncTCP.cpp#Connect:138]
I/YOUMEIM (32613): 2020/05/14 10:57:43.562 threadid:527733079376  INFO: IPV4[SyncTCP.cpp#Connect:131]
D/YOUMEIM (32613): 2020/05/14 10:57:43.562 threadid:527733079376  DEBUG: connected  IPV4: -1[SyncTCP.cpp#Connect:138]
I/YOUMEIM (32613): 2020/05/14 10:57:43.640 threadid:527733079376  INFO: IPV4[SyncTCP.cpp#Connect:131]
D/YOUMEIM (32613): 2020/05/14 10:57:43.640 threadid:527733079376  DEBUG: connected  IPV4: -1[SyncTCP.cpp#Connect:138]
I/YOUMEIM (32613): 2020/05/14 10:57:43.708 threadid:527733079376  INFO: IPV4[SyncTCP.cpp#Connect:131]
D/YOUMEIM (32613): 2020/05/14 10:57:43.709 threadid:527733079376  DEBUG: connected  IPV4: -1[SyncTCP.cpp#Connect:138]
W/Settings(32613): Setting device_provisioned has moved from android.provider.Settings.Secure to android.provider.Settings.Global.
V/HiTouch_HiTouchSensor(32613): User setup is finished.
V/AudioManager(32613): querySoundEffectsEnabled...
D/ZrHung.AppEyeUiProbe(32613): not watching, wait.

应该是这里附近卡住的

D/ZrHung.AppEyeUiProbe(32613): restart watching
W/PlatformViewsController(32613): Creating a virtual display of size: [1080, 2340] may result in problems(https://github.com/flutter/flutter/issues/2897).It is larger than the device screen size: [1080, 2259].
I/PLDroidMediaStreaming(32613): Pili-Interface:MediaStreamingManager:created, AVCodecType = SW_VIDEO_WITH_SW_AUDIO_CODEC
I/PLDroidMediaStreaming(32613): Pili-System:MediaStreamingManager:{"device_model":"HUAWEISEA-AL10","os_version":"os version:10, Android SDK_INT:29, SoC Hardware:kirin980","sdk_version":"librtmp-1.1.0;PLDroidCameraStreaming-2.3.0.5","app_name":"top.huic.flutter_qiniucloud_live_plugin_example","app_version":"1.0","gl_version":3}
I/PLDroidRTCStreaming(32613): RTC-Interface:RTCMediaStreaming:create RTCMediaStreamingManager encodingType = SW_VIDEO_WITH_SW_AUDIO_CODEC
I/PLDroidMediaStreaming(32613): Pili-Interface:MediaStreamingManager:setStreamingSessionListener true
I/PLDroidMediaStreaming(32613): Pili-Interface:MediaStreamingManager:setStreamStatusCallback true
W/Gralloc3(32613): allocator 3.x is not supported
I/PLDroidRTCStreaming(32613): RTC-Interface:RTCMediaStreaming:setConferenceOptions
I/PLDroidRTCStreaming(32613): RTC-Session:MeetingSession:setConferenceOptions +
I/PLDroidRTCStreaming(32613): RTC-Session:MeetingSession:setConferenceOptions -
I/PLDroidRTCStreaming(32613): RTC-Interface:RTCMediaStreaming:prepare
I/PLDroidMediaStreaming(32613): Pili-Interface:MediaStreamingManager:setStreamingStateListener true
I/PLDroidMediaStreaming(32613): Pili-Interface:MediaStreamingManager:setStreamingPreviewCallback true
W/PLDroidMediaStreaming(32613): Pili-Capture:CameraManager:mCamera is null in preparePreviewCallback
I/PLDroidMediaStreaming(32613): Pili-Interface:MediaStreamingManager:setAudioSourceCallback true
E/MethodChannel#flutter/platform_views(32613): Failed to handle method call
E/MethodChannel#flutter/platform_views(32613): java.lang.IllegalArgumentException: Only support 16:9/4:3 ratio!
E/MethodChannel#flutter/platform_views(32613):  at com.qiniu.pili.droid.streaming.StreamingProfile.getVideoEncodingSize(StreamingProfile.java:1282)
E/MethodChannel#flutter/platform_views(32613):  at com.qiniu.pili.droid.rtcstreaming.RTCMediaStreamingManager.prepare(RTCMediaStreamingManager.java:375)
E/MethodChannel#flutter/platform_views(32613):  at top.huic.flutter_qiniucloud_live_plugin.view.QiniucloudPushPlatformView.init(QiniucloudPushPlatformView.java:294)
E/MethodChannel#flutter/platform_views(32613):  at top.huic.flutter_qiniucloud_live_plugin.view.QiniucloudPushPlatformView.create(QiniucloudPushPlatformView.java:215)
E/MethodChannel#flutter/platform_views(32613):  at io.flutter.plugin.platform.SingleViewPresentation.onCreate(SingleViewPresentation.java:186)
E/MethodChannel#flutter/platform_views(32613):  at android.app.Dialog.dispatchOnCreate(Dialog.java:579)
E/MethodChannel#flutter/platform_views(32613):  at android.app.Dialog.show(Dialog.java:397)
E/MethodChannel#flutter/platform_views(32613):  at android.app.Presentation.show(Presentation.java:250)
E/MethodChannel#flutter/platform_views(32613):  at io.flutter.plugin.platform.VirtualDisplayController.<init>(VirtualDisplayController.java:95)
E/MethodChannel#flutter/platform_views(32613):  at io.flutter.plugin.platform.VirtualDisplayController.create(VirtualDisplayController.java:48)
E/MethodChannel#flutter/platform_views(32613):  at io.flutter.plugin.platform.PlatformViewsController$1.createPlatformView(PlatformViewsController.java:112)
E/MethodChannel#flutter/platform_views(32613):  at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.create(PlatformViewsChannel.java:95)
E/MethodChannel#flutter/platform_views(32613):  at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.onMethodCall(PlatformViewsChannel.java:59)
E/MethodChannel#flutter/platform_views(32613):  at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:226)
E/MethodChannel#flutter/platform_views(32613):  at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#flutter/platform_views(32613):  at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:643)
E/MethodChannel#flutter/platform_views(32613):  at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#flutter/platform_views(32613):  at android.os.MessageQueue.next(MessageQueue.java:363)
E/MethodChannel#flutter/platform_views(32613):  at android.os.Looper.loop(Looper.java:173)
E/MethodChannel#flutter/platform_views(32613):  at android.app.ActivityThread.main(ActivityThread.java:8169)
E/MethodChannel#flutter/platform_views(32613):  at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#flutter/platform_views(32613):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
E/MethodChannel#flutter/platform_views(32613):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
E/_plugin_exampl(32613): No package ID ff found for ID 0xffffffff.
E/Resource(32613): printErrorResource, maybe not a error because module has entative access to resource called by =android.content.res.HwResourcesImpl.printErrorResource:2634 android.content.res.ResourcesImpl.getResourceEntryName:377 android.content.res.Resources.getResourceEntryName:2229 com.youme.voiceengine.video.SurfaceViewRenderer.getResourceName:276 com.youme.voiceengine.video.SurfaceViewRenderer.<init>:54 com.qiniu.pili.droid.rtcstreaming.RTCSurfaceView.<init>:15 
I/ResourcesImplEx(32613): The apk asset path = ApkAssets{path=/system/framework/framework-res.apk}
I/ResourcesImplEx(32613): The apk asset path = ApkAssets{path=/system/framework/framework-res-hwext.apk}
I/ResourcesImplEx(32613): The apk asset path = ApkAssets{path=/hw_product/overlay/frameworkResOverlay.apk}
I/ResourcesImplEx(32613): The apk asset path = ApkAssets{path=/data/app/top.huic.flutter_qiniucloud_live_plugin_example-HTvf_xECvJncA39Z4qooRg==/base.apk}
D/EglRenderer(32613): Initializing EglRenderer
D/EglBase14(32613): SDK version: 29. isEGL14Supported: true
D/OpenGLRenderer(32613): disableOutlineDraw is true
I/HiTouch_HiTouchSensor(32613): HiTouch restricted: Sub windows restricted.
D/HiTouch_PressGestureDetector(32613): onAttached, package=top.huic.flutter_qiniucloud_live_plugin_example, windowType=2030, mHiTouchRestricted=true
D/mali_winsys(32613): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
I/EglRenderer(32613): setLayoutAspectRatio: 1.0
I/SurfaceViewRenderer(32613): SurfaceViewRender:com.qiniu.pili.droid.rtcstreaming.RTCSurfaceView{22c09ef V.E...... ......ID 0,0-300,300}view width:300 height:300
I/SurfaceViewRenderer(32613): surfaceCreated
I/SurfaceViewRenderer(32613): surfaceChanged: format: 4 size: 300x300
D/mali_winsys(32613): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/NetworkSecurityConfig(32613): No Network Security Config specified, using platform default

截屏2020-05-14 上午11 00 11

Only support 16:9/4:3 ratio!

iOS 无法安装到真机,编译出错了。 我做了一些尝试 1、修改了 Signing & Capabilities 的 Team,修改成我自己的信息 2、修改了 Podfile 文件,platform :ios, '13.0' 3、尝试 pod install,得到下面的日志。

Analyzing dependencies
[!] Unable to find a specification for `PLPlayerKit` depended upon by `flutter_qiniucloud_live_plugin`

You have either:
 * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
 * mistyped the name or version.
 * not added the source repo that hosts the Podspec to your Podfile.

4、我知道已经出现错误了,但是还是尝试了 build 得到下面日志。

Launching lib/main.dart on 郭大鹏的iPhone in debug mode...
Warning: Missing build name (CFBundleShortVersionString).
Warning: Missing build number (CFBundleVersion).
Action Required: You must set a build name and number in the pubspec.yaml file version field before submitting to the App Store.
Automatically signing iOS for device deployment using specified development team in Xcode project: BBAXGSNKQ3
Running pod install...                                              1.1s
CocoaPods' output:
↳
      Preparing

    Analyzing dependencies

    Inspecting targets to integrate
      Using `ARCHS` setting to build architectures of target `Pods-Runner`: (``)

    Fetching external sources
    -> Fetching podspec for `Flutter` from `Flutter`
    -> Fetching podspec for `flutter_qiniucloud_live_plugin` from `.symlinks/plugins/flutter_qiniucloud_live_plugin/ios`
    -> Fetching podspec for `permission_handler` from `.symlinks/plugins/permission_handler/ios`

    Resolving dependencies of `Podfile`
      CDN: trunk Relative path: CocoaPods-version.yml exists! Returning local because checking is only perfomed in repo update
    [!] Unable to find a specification for `PLPlayerKit` depended upon by `flutter_qiniucloud_live_plugin`

    You have either:
     * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
     * mistyped the name or version.
     * not added the source repo that hosts the Podspec to your Podfile.

    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/resolver.rb:389:in `find_cached_set'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/resolver.rb:360:in `specifications_for_dependency'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/resolver.rb:165:in `search_for'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/resolver.rb:274:in `block in sort_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/resolver.rb:267:in `each'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/resolver.rb:267:in `sort_by'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/resolver.rb:267:in `sort_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.6.6/lib/molinillo/delegates/specification_provider.rb:53:in `block in sort_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.6.6/lib/molinillo/delegates/specification_provider.rb:70:in `with_no_such_dependency_error_handling'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.6.6/lib/molinillo/delegates/specification_provider.rb:52:in `sort_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:754:in `push_state_for_requirements'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:746:in `require_nested_dependencies_for'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:729:in `activate_new_spec'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:686:in `attempt_to_activate'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:254:in `process_topmost_state'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:182:in `resolve'
    /Library/Ruby/Gems/2.6.0/gems/molinillo-0.6.6/lib/molinillo/resolver.rb:43:in `resolve'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/resolver.rb:94:in `resolve'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer.rb:1065:in `block in resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/user_interface.rb:64:in `section'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer.rb:1063:in `resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer.rb:124:in `analyze'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:410:in `analyze'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:235:in `block in resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/user_interface.rb:64:in `section'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:234:in `resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:156:in `install!'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/command/install.rb:52:in `run'
    /Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/command.rb:52:in `run'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/bin/pod:55:in `<top (required)>'
    /usr/local/bin/pod:23:in `load'
    /usr/local/bin/pod:23:in `<main>'

Error: CocoaPods's specs repository is too out-of-date to satisfy dependencies.
To update the CocoaPods specs, run:
  pod repo update

Exception: Error running pod install

最后,我没能成功在 iOS 和 android 让它正常工作。

非常感谢您的付出,我在一个月前就开始尝试自己实现 flutter 直播插件了,因为不懂原生开发,flutter 也刚学不久,我很期待这个插件。谢谢。

JiangJuHong commented 4 years ago

请重新生成签名并替换项目中的签名

JiangJuHong commented 4 years ago

需要更改的地方: push.dart 242-245 行,306行 player.dart 197 行

GuoDapeng commented 4 years ago

原来GitHub是及时消息???谢谢您的回复

JiangJuHong commented 4 years ago

我会继续关注这个问题,直到你解决了它

GuoDapeng commented 4 years ago

对不起,我在一开始的测试,修改了推流和拉流地址,不过我在反复尝试,最后一次重新 clone 项目的时候,忘记修改了。

请不要再我的问题上占用您太多时间,也许这是我本地环境的问题。

android 端的进展

我发现在 flutter 工程运行和在 android 运行,控制台的行为会有一点差异。直接在 flutter 工程运行的时候回,会因为错误卡住,直接打开 android 工程的时候,不会卡在那里。

05/14 13:03:59: Launching 'app' on HUAWEI SEA-AL10.
$ adb shell am start -n "top.huic.flutter_qiniucloud_live_plugin_example/top.huic.flutter_qiniucloud_live_plugin_example.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Waiting for application to come online: top.huic.flutter_qiniucloud_live_plugin_example.test | top.huic.flutter_qiniucloud_live_plugin_example
Waiting for application to come online: top.huic.flutter_qiniucloud_live_plugin_example.test | top.huic.flutter_qiniucloud_live_plugin_example
Waiting for application to come online: top.huic.flutter_qiniucloud_live_plugin_example.test | top.huic.flutter_qiniucloud_live_plugin_example
Connecting to top.huic.flutter_qiniucloud_live_plugin_example
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
I/_plugin_exampl: Late-enabling -Xcheck:jni
E/_plugin_exampl: Unknown bits set in runtime_flags: 0x8000
I/_plugin_exampl: Reinit property: dalvik.vm.checkjni= false
W/re-initialized>: type=1400 audit(0.0:5980452): avc: denied { read } for pid=18576 name="u:object_r:mmi_prop:s0" dev="tmpfs" ino=16470 scontext=u:r:untrusted_app_27:s0:c63,c257,c512,c768 tcontext=u:object_r:mmi_prop:s0 tclass=file permissive=0
E/libc: Access denied finding property "runtime.mmitest.isrunning"
D/ActivityThread: Attach thread to application
W/ActivityThread: Application top.huic.flutter_qiniucloud_live_plugin_example is waiting for the debugger on port 8100...
I/System.out: Sending WAIT chunk
I/System.out: Debugger has connected
    waiting for debugger to settle...
Connected to the target VM, address: 'localhost:8601', transport: 'socket'
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: debugger has settled (1368)
I/_plugin_exampl: QarthPatchMonintor::Init
    QarthPatchMonintor::StartWatch
    QarthPatchMonintor::WatchPackage: /data/hotpatch/fwkhotpatch/
    QarthPatchMonintor::CheckAndWatchPatch: /data/hotpatch/fwkhotpatch/top.huic.flutter_qiniucloud_live_plugin_example
    QarthPatchMonintor::CheckAndWatchPatch: /data/hotpatch/fwkhotpatch/all
    QarthPatchMonintor::Run
I/_plugin_exampl: QarthPatchMonintor::Reading
    QarthPatchMonintor::CheckNotifyEvent
    QarthPatchMonintor::CheckNotifyEvent before read
I/HwApiCacheMangerEx: apicache path=/storage/emulated/0 state=mounted key=top.huic.flutter_qiniucloud_live_plugin_example#10319#256
I/HwApiCacheMangerEx: apicache path=/storage/emulated/0 state=mounted key=top.huic.flutter_qiniucloud_live_plugin_example#10319#0
I/AwareBitmapCacher: init processName:top.huic.flutter_qiniucloud_live_plugin_example pid=18576 uid=10319
I/ResourceExtractor: Found extracted resources res_timestamp-1-1589431959582
I/ResourceExtractor: Resource version mismatch res_timestamp-1-1589432650566
E/AwareLog: AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@dc90411
E/AwareLog: AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@3fa1976
I/ResourceExtractor: Extracted baseline resource assets/flutter_assets/kernel_blob.bin
I/ResourceExtractor: Extracted baseline resource assets/flutter_assets/vm_snapshot_data
I/ResourceExtractor: Extracted baseline resource assets/flutter_assets/isolate_snapshot_data
W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@3f2449
D/OpenGLRenderer: disableOutlineDraw is true
V/ActivityThread: callActivityOnCreate
I/iGraphics: [0020080c] pn: top.huic.flutter_qiniucloud_live_plugin_example, p: 18576
    [0030080c] no spt app: top.huic.flutter_qiniucloud_live_plugin_example
I/PLDroidMediaStreaming: Pili-Interface:StreamingEnv:init
I/PLDroidMediaStreaming: GlUtil:GL info, version:3, supports rg ext:true
I/PLDroidMediaStreaming: Pili-Interface:StreamingEnv:init success !
I/PLDroidRTCStreaming: RTC-Interface:RTCMediaStreaming:init
I/PLDroidMediaStreaming: Pili-Interface:StreamingEnv:init
W/PLDroidMediaStreaming: Pili-Interface:StreamingEnv:ignore since had been initialized!
I/PLDroidRTCStreaming: RTC-Session:MeetingSession:init SDK Version: 2.0.3
I/YOUME: 调用init 函数 开始,目录:
I/flutter: Observatory listening on http://127.0.0.1:36535/-NTZPUw4YCQ=/
I/YOUME: 调用init 函数 开始,目录:/data/user/0/top.huic.flutter_qiniucloud_live_plugin_example/app_libs
I/YOUME: 没有当前版本的更新,忽略已经下载的so 应用versioncode: 1可以更新的版本:
I/YOUME: thread:530262695632 2020-05-14 13:04:15.351 INFO     >>> JNI init VideoCallback set begin [JNI_OnLoad#com_youme_voiceengine_NativeEngine.cpp:466]
    thread:530262695632 2020-05-14 13:04:15.351 INFO     >>> JNI init VideoCallback set success [JNI_OnLoad#com_youme_voiceengine_NativeEngine.cpp:483]
I/YOUME: thread:530262695632 2020-05-14 13:04:15.352 INFO     >>> JNI init AudioCallback set success [JNI_OnLoad#com_youme_voiceengine_NativeEngine.cpp:494]
    thread:530262695632 2020-05-14 13:04:15.352 INFO     >>> JNI init CameraMgr set beigin [JNI_OnLoad#com_youme_voiceengine_NativeEngine.cpp:531]
I/YOUME: thread:530262695632 2020-05-14 13:04:15.353 INFO     >>> JNI init CameraMgr set success [JNI_OnLoad#com_youme_voiceengine_NativeEngine.cpp:552]
I/HwPartBaseTelephonyFactory: add HwPartBaseTelephonyFactoryImpl to memory.
W/System.err: java.lang.SecurityException: getUniqueDeviceId: The user 10319 does not meet the requirements to access device identifiers.
        at android.os.Parcel.createException(Parcel.java:2071)
W/System.err:     at android.os.Parcel.readException(Parcel.java:2039)
        at android.os.Parcel.readException(Parcel.java:1987)
        at com.android.internal.telephony.IHwTelephony$Stub$Proxy.getUniqueDeviceId(IHwTelephony.java:3062)
        at android.telephony.HwTelephonyManagerInner.getUniqueDeviceId(HwTelephonyManagerInner.java:1189)
        at android.telephony.HwInnerTelephonyManagerImpl.getUniqueDeviceId(HwInnerTelephonyManagerImpl.java:377)
        at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:1653)
        at com.youme.voiceengine.AppPara.initPara(AppPara.java:50)
W/System.err:     at com.youme.voiceengine.mgr.YouMeManager.Init(YouMeManager.java:112)
        at com.qiniu.pili.droid.rtcstreaming.a.a.a(MeetingSession.java:167)
        at com.qiniu.pili.droid.rtcstreaming.RTCMediaStreamingManager.init(RTCMediaStreamingManager.java:129)
        at com.qiniu.pili.droid.rtcstreaming.RTCMediaStreamingManager.init(RTCMediaStreamingManager.java:98)
        at com.qiniu.pili.droid.rtcstreaming.RTCMediaStreamingManager.init(RTCMediaStreamingManager.java:86)
        at top.huic.flutter_qiniucloud_live_plugin.FlutterQiniucloudLivePlugin.<init>(FlutterQiniucloudLivePlugin.java:44)
W/System.err:     at top.huic.flutter_qiniucloud_live_plugin.FlutterQiniucloudLivePlugin.onAttachedToEngine(FlutterQiniucloudLivePlugin.java:55)
        at io.flutter.embedding.engine.FlutterEnginePluginRegistry.add(FlutterEnginePluginRegistry.java:133)
        at io.flutter.plugins.GeneratedPluginRegistrant.registerWith(GeneratedPluginRegistrant.java:19)
        at top.huic.flutter_qiniucloud_live_plugin_example.MainActivity.configureFlutterEngine(MainActivity.java:11)
        at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onAttach(FlutterActivityAndFragmentDelegate.java:178)
        at io.flutter.embedding.android.FlutterActivity.onCreate(FlutterActivity.java:409)
        at android.app.Activity.performCreate(Activity.java:8086)
W/System.err:     at android.app.Activity.performCreate(Activity.java:8074)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3746)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3952)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
W/System.err:     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8169)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
E/AppPara: context is not activity,can not set setScreenOrientation
I/YOUME: thread:530262695632 2020-05-14 13:04:15.365 INFO     1  [onNetWorkChanged#NgnNetworkService.cpp:164]
V/AudioManager: isSpeakerphoneOn: true
I/YOUME: thread:530262695632 2020-05-14 13:04:15.367 INFO     1  [onNetWorkChanged#NgnNetworkService.cpp:164]
I/YOUME: 调用init 函数 结束
I/PLDroidRTCStreaming: RTC-Session:MeetingSession:init success !
W/_plugin_exampl: Accessing hidden method Landroid/view/accessibility/AccessibilityNodeInfo;->getSourceNodeId()J (greylist, reflection, allowed)
    Accessing hidden method Landroid/view/accessibility/AccessibilityRecord;->getSourceNodeId()J (greylist, reflection, allowed)
    Accessing hidden field Landroid/view/accessibility/AccessibilityNodeInfo;->mChildNodeIds:Landroid/util/LongArray; (greylist, reflection, allowed)
W/_plugin_exampl: Accessing hidden method Landroid/util/LongArray;->get(I)J (greylist, reflection, allowed)
V/HwWidgetFactory: : successes to get AllImpl object and return....
D/ActivityThread: add activity client record, r= ActivityRecord{d07e0b0 token=android.os.BinderProxy@3f2449 {top.huic.flutter_qiniucloud_live_plugin_example/top.huic.flutter_qiniucloud_live_plugin_example.MainActivity}} token= android.os.BinderProxy@3f2449
I/AudioMgr: onReceive action: android.net.conn.CONNECTIVITY_CHANGE  state: -1
D/OpenGLRenderer: disableOutlineDraw is true
D/HiTouch_PressGestureDetector: onAttached, package=top.huic.flutter_qiniucloud_live_plugin_example, windowType=1, mHiTouchRestricted=false
E/libc: Access denied finding property "net.dns1"
    Access denied finding property "net.dns2"
    Access denied finding property "net.dns3"
E/libc: Access denied finding property "net.dns4"
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
W/Gralloc3: mapper 3.x is not supported
E/: APS:IFLoad:importExternalFunctions, search function createNewHwApsUtils failed, dlsym err:undefined symbol: createNewHwApsUtils
D/: APS:importExternalFunctions OK
I/HwViewRootImpl: removeInvalidNode jank list is null
I/AwareBitmapCacher: init lrucache size: 2097152 pid=18576

W/_plugin_example: type=1400 audit(0.0:5980603): avc: granted { write } for pid=18576 name="files" dev="sdcardfs" ino=85604 scontext=u:r:untrusted_app_27:s0:c63,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    type=1400 audit(0.0:5980604): avc: granted { add_name } for pid=18576 name="report.db-journal" scontext=u:r:untrusted_app_27:s0:c63,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    type=1400 audit(0.0:5980605): avc: granted { create } for pid=18576 name="report.db-journal" scontext=u:r:untrusted_app_27:s0:c63,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0:c63,c257,c512,c768 tclass=file
W/_plugin_example: type=1400 audit(0.0:5980606): avc: granted { read write open } for pid=18576 path="/storage/emulated/0/Android/data/top.huic.flutter_qiniucloud_live_plugin_example/files/report.db-journal" dev="sdcardfs" ino=393988 scontext=u:r:untrusted_app_27:s0:c63,c257,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file
I/YOUMEIM: 2020/05/14 13:04:25.618 threadid:527738858832  INFO: Enter[YouMeDataChannel.cpp#ReportProc:102]
I/YOUMEIM: 2020/05/14 13:04:25.635 threadid:527738858832  INFO: IPV4[SyncTCP.cpp#Connect:131]
D/YOUMEIM: 2020/05/14 13:04:25.636 threadid:527738858832  DEBUG: connected  IPV4: -1[SyncTCP.cpp#Connect:138]
I/YOUMEIM: 2020/05/14 13:04:25.711 threadid:527738858832  INFO: IPV4[SyncTCP.cpp#Connect:131]
D/YOUMEIM: 2020/05/14 13:04:25.712 threadid:527738858832  DEBUG: connected  IPV4: -1[SyncTCP.cpp#Connect:138]
I/YOUMEIM: 2020/05/14 13:04:25.784 threadid:527738858832  INFO: IPV4[SyncTCP.cpp#Connect:131]
D/YOUMEIM: 2020/05/14 13:04:25.785 threadid:527738858832  DEBUG: connected  IPV4: -1[SyncTCP.cpp#Connect:138]
I/YOUMEIM: 2020/05/14 13:04:25.871 threadid:527738858832  INFO: IPV4[SyncTCP.cpp#Connect:131]
D/YOUMEIM: 2020/05/14 13:04:25.872 threadid:527738858832  DEBUG: connected  IPV4: -1[SyncTCP.cpp#Connect:138]
I/YOUMEIM: 2020/05/14 13:04:25.957 threadid:527738858832  INFO: IPV4[SyncTCP.cpp#Connect:131]
D/YOUMEIM: 2020/05/14 13:04:25.958 threadid:527738858832  DEBUG: connected  IPV4: -1[SyncTCP.cpp#Connect:138]
W/Settings: Setting device_provisioned has moved from android.provider.Settings.Secure to android.provider.Settings.Global.
V/HiTouch_HiTouchSensor: User setup is finished.
V/AudioManager: querySoundEffectsEnabled...
W/PlatformViewsController: Creating a virtual display of size: [1080, 2340] may result in problems(https://github.com/flutter/flutter/issues/2897).It is larger than the device screen size: [1080, 2259].
W/Gralloc3: allocator 3.x is not supported
I/PLDroidMediaStreaming: Pili-Interface:MediaStreamingManager:created, AVCodecType = SW_VIDEO_WITH_SW_AUDIO_CODEC
I/PLDroidMediaStreaming: Pili-System:MediaStreamingManager:{"device_model":"HUAWEISEA-AL10","os_version":"os version:10, Android SDK_INT:29, SoC Hardware:kirin980","sdk_version":"librtmp-1.1.0;PLDroidCameraStreaming-2.3.0.5","app_name":"top.huic.flutter_qiniucloud_live_plugin_example","app_version":"1.0","gl_version":3}
I/PLDroidRTCStreaming: RTC-Interface:RTCMediaStreaming:create RTCMediaStreamingManager encodingType = SW_VIDEO_WITH_SW_AUDIO_CODEC
I/PLDroidMediaStreaming: Pili-Interface:MediaStreamingManager:setStreamingSessionListener true
    Pili-Interface:MediaStreamingManager:setStreamStatusCallback true
I/PLDroidRTCStreaming: RTC-Interface:RTCMediaStreaming:setConferenceOptions
    RTC-Session:MeetingSession:setConferenceOptions +
    RTC-Session:MeetingSession:setConferenceOptions -
I/PLDroidRTCStreaming: RTC-Interface:RTCMediaStreaming:prepare
I/PLDroidMediaStreaming: Pili-Interface:MediaStreamingManager:setStreamingStateListener true
    Pili-Interface:MediaStreamingManager:setStreamingPreviewCallback true
W/PLDroidMediaStreaming: Pili-Capture:CameraManager:mCamera is null in preparePreviewCallback
I/PLDroidMediaStreaming: Pili-Interface:MediaStreamingManager:setAudioSourceCallback true
E/MethodChannel#flutter/platform_views: Failed to handle method call
    java.lang.IllegalArgumentException: Only support 16:9/4:3 ratio!
        at com.qiniu.pili.droid.streaming.StreamingProfile.getVideoEncodingSize(StreamingProfile.java:1282)
        at com.qiniu.pili.droid.rtcstreaming.RTCMediaStreamingManager.prepare(RTCMediaStreamingManager.java:375)
        at top.huic.flutter_qiniucloud_live_plugin.view.QiniucloudPushPlatformView.init(QiniucloudPushPlatformView.java:294)
        at top.huic.flutter_qiniucloud_live_plugin.view.QiniucloudPushPlatformView.create(QiniucloudPushPlatformView.java:215)
        at io.flutter.plugin.platform.SingleViewPresentation.onCreate(SingleViewPresentation.java:186)
        at android.app.Dialog.dispatchOnCreate(Dialog.java:579)
        at android.app.Dialog.show(Dialog.java:397)
        at android.app.Presentation.show(Presentation.java:250)
        at io.flutter.plugin.platform.VirtualDisplayController.<init>(VirtualDisplayController.java:95)
        at io.flutter.plugin.platform.VirtualDisplayController.create(VirtualDisplayController.java:48)
        at io.flutter.plugin.platform.PlatformViewsController$1.createPlatformView(PlatformViewsController.java:112)
        at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.create(PlatformViewsChannel.java:95)
        at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.onMethodCall(PlatformViewsChannel.java:59)
        at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:226)
        at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
        at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:643)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:363)
        at android.os.Looper.loop(Looper.java:173)
        at android.app.ActivityThread.main(ActivityThread.java:8169)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: PlatformException(error, Only support 16:9/4:3 ratio!, null)
    #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
    #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:18)
    <asynchronous suspension>
    #2      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:329:12)
    #3      AndroidViewController._create (package:flutter/src/services/platform_views.dart:633:54)
    #4      AndroidViewController.setSize (package:flutter/src/services/platform_views.dart:550:14)
    #5      RenderAndroidView._sizePlatformView (package:flutter/src/rendering/platform_view.dart:176:29)
    #6      RenderAndroidView.performResize (package:flutter/src/rendering/platform_view.dart:157:5)
    #7      RenderObject.layout (package:flutter/src/rendering/object.dart:1746:9)
    #8      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #9      RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #10     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:556:15)
    #11     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #12     RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:268:13)
    #13     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #14     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:556:15)
    #15     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #16     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:11)
    #17     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:480:7)
    #18     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7)
    #19     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:399:14)
    #20     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #21     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #22     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #23     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #24     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1267:11)
    #25     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #26     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #27     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #28     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #29     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #30     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #31     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #32     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #33     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #34     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #35     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #36     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #37     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #38     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #39     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #40     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3215:14)
    #41     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #42     _RenderTheatre.performLayout (package:flutter/src/widgets/overlay.dart:700:15)
    #43     RenderObject._layoutWithoutResize (pack
E/_plugin_exampl: No package ID ff found for ID 0xffffffff.
E/Resource: printErrorResource, maybe not a error because module has entative access to resource called by =android.content.res.HwResourcesImpl.printErrorResource:2634 android.content.res.ResourcesImpl.getResourceEntryName:377 android.content.res.Resources.getResourceEntryName:2229 com.youme.voiceengine.video.SurfaceViewRenderer.getResourceName:276 com.youme.voiceengine.video.SurfaceViewRenderer.<init>:54 com.qiniu.pili.droid.rtcstreaming.RTCSurfaceView.<init>:15 
I/ResourcesImplEx: The apk asset path = ApkAssets{path=/system/framework/framework-res.apk}
    The apk asset path = ApkAssets{path=/system/framework/framework-res-hwext.apk}
    The apk asset path = ApkAssets{path=/hw_product/overlay/frameworkResOverlay.apk}
    The apk asset path = ApkAssets{path=/data/app/top.huic.flutter_qiniucloud_live_plugin_example--l2hytvDpAgQt_cX0qYVyw==/base.apk}
D/EglRenderer: Initializing EglRenderer
D/EglBase14: SDK version: 29. isEGL14Supported: true
D/OpenGLRenderer: disableOutlineDraw is true
I/HiTouch_HiTouchSensor: HiTouch restricted: Sub windows restricted.
D/HiTouch_PressGestureDetector: onAttached, package=top.huic.flutter_qiniucloud_live_plugin_example, windowType=2030, mHiTouchRestricted=true
E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The method 'addRemoteWindow' was called on null.
    Receiver: null
    Tried calling: addRemoteWindow(id: 1)
    #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
    #1      PushPageState.onPlayerViewCreated (package:flutter_qiniucloud_live_plugin_example/page/push.dart:269:16)
    #2      QiniucloudConnectPlayerViewState._onPlatformViewCreated (package:flutter_qiniucloud_live_plugin/view/qiniucloud_connected_player_view.dart:44:27)
    #3      AndroidViewController._create (package:flutter/src/services/platform_views.dart:636:15)
    <asynchronous suspension>
    #4      AndroidViewController.setSize (package:flutter/src/services/platform_views.dart:550:14)
    #5      RenderAndroidView._sizePlatformView (package:flutter/src/rendering/platform_view.dart:176:29)
    #6      RenderAndroidView.performResize (package:flutter/src/rendering/platform_view.dart:157:5)
    #7      RenderObject.layout (package:flutter/src/rendering/object.dart:1746:9)
    #8      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #9      RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #10     RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:268:13)
    #11     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #12     RenderStack.layoutPositionedChild (package:flutter/src/rendering/stack.dart:487:11)
    #13     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:583:30)
    #14     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #15     RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:268:13)
    #16     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #17     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:556:15)
    #18     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #19     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:11)
    #20     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:480:7)
    #21     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7)
    #22     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:399:14)
    #23     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #24     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #25     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #26     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #27     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1267:11)
    #28     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #29     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #30     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #31     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #32     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #33     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #34     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #35     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #36     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #37     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #38     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #39     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #40     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
    #41     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:13)
    #42     Ren
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
I/EglRenderer: setLayoutAspectRatio: 1.0
I/SurfaceViewRenderer: SurfaceViewRender:com.qiniu.pili.droid.rtcstreaming.RTCSurfaceView{a221fc9 V.E...... ......ID 0,0-300,300}view width:300 height:300
I/SurfaceViewRenderer: surfaceCreated
    surfaceChanged: format: 4 size: 300x300
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
I/flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
    The following NoSuchMethodError was thrown during paint():
    The getter 'width' was called on null.
    Receiver: null
    Tried calling: width
    Widget creation tracking is currently disabled. Enabling it enables improved error messages. It can
    be enabled by passing `--track-widget-creation` to `flutter run` or `flutter test`.
    When the exception was thrown, this was the stack:
    #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
    #1      RenderAndroidView.paint (package:flutter/src/rendering/platform_view.dart:194:46)
    #2      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #3      PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:135:11)
    #4      PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:95:5)
    #5      PaintingContext._compositeChild (package:flutter/src/rendering/object.dart:201:7)
    #6      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:182:7)
    #7      RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #8      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #9      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #10     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #11     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #12     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #13     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2515:15)
    #14     RenderStack.paintStack (package:flutter/src/rendering/stack.dart:602:5)
    #15     RenderStack.paint (package:flutter/src/rendering/stack.dart:610:7)
    #16     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #17     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #18     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #19     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #20     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #21     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2515:15)
    #22     RenderStack.paintStack (package:flutter/src/rendering/stack.dart:602:5)
    #23     RenderStack.paint (package:flutter/src/rendering/stack.dart:610:7)
    #24     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #25     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #26     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2515:15)
    #27     RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:404:5)
    #28     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #29     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #30     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #31     _RenderInkFeatures.paint (package:flutter/src/material/material.dart:531:11)
    #32     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #33     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #34     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #35     PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:391:12)
    #36     RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1819:15)
    #37     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #38     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #39     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #40     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #41     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #42     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #43     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #44     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:135:11)
    #45     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:95:5)
    #46     PaintingContext._compositeChild (package:flutter/src/rendering/object.dart:201:7)
    #47     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:182:7)
    #48     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #49     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #50     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #51     RenderAnimatedOpacityMixin.paint (package:flutter/src/rendering/proxy_box.dart:914:17)
    #52     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #53     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #54     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #55     RenderFractionalTranslation.paint (package:flutter/src/rendering/proxy_box.dart:2533:13)
    #56     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #57     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #58     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #59     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #60     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:135:11)
    #61     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:95:5)
    #62     PaintingContext._compositeChild (package:flutter/src/rendering/object.dart:201:7)
    #63     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:182:7)
    #64     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #65     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #66     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
I/flutter: #67     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #68     RenderOffstage.paint (package:flutter/src/rendering/proxy_box.dart:3230:11)
    #69     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #70     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #71     _RenderTheatre.paintStack (package:flutter/src/widgets/overlay.dart:737:15)
    #72     _RenderTheatre.paint (package:flutter/src/widgets/overlay.dart:747:7)
    #73     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #74     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #75     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #76     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #77     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #78     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #79     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #80     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #81     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #82     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #83     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #84     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #85     RenderCustomPaint.paint (package:flutter/src/rendering/custom_paint.dart:575:11)
    #86     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #87     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #88     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #89     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #90     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #91     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:131:15)
    #92     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #93     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13)
    #94     RenderView.paint (package:flutter/src/rendering/view.dart:213:15)
    #95     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7)
    #96     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:135:11)
    #97     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:95:5)
    #98     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:980:29)
    #99     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:404:19)
    #100    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:865:13)
    #101    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:284:5)
    #102    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1074:15)
    #103    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1013:9)
    #104    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:929:5)
    #108    _invoke (dart:ui/hooks.dart:277:10)
    #109    _drawFrame (dart:ui/hooks.dart:235:3)
    (elided 3 frames from dart:async)
    The following RenderObject was being processed when the exception was fired: RenderAndroidView#13b72:
      needs compositing
      creator: _AndroidPlatformView ← Semantics ← _FocusMarker ← Focus ← AndroidView ←
        QiniucloudConnectPlayerView ← ConstrainedBox ← Container ← Positioned ← Stack ← ConstrainedBox ←
        Container ← ⋯
      parentData: <none> (can use size)
      constraints: BoxConstraints(w=100.0, h=100.0)
      layer: OffsetLayer#4f0a0 DETACHED
      semantic boundary
      size: Size(100.0, 100.0)
    This RenderObject has no descendants.
    ════════════════════════════════════════════════════════════════════════════════════════════════════
W/HiTouch_PressGestureDetector: Touch pointer move a lot. The moving distance of X is:7.0, limit is:60The moving distance of Y is:82.0, limit is:60

我在这里点击了 开始预览 的按钮

E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The method 'resume' was called on null.
    Receiver: null
    Tried calling: resume()
    #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
    #1      PushPageState.onResume (package:flutter_qiniucloud_live_plugin_example/page/push.dart:122:36)
    #2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:933:19)
    #3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1020:38)
    #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
    #5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:522:11)
    #6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:282:5)
    #7      BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:254:7)
    #8      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
    #9      GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:222:20)
    #10     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
    #11     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
    #12     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
    #13     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
    #14     _rootRunUnary (dart:async/zone.dart:1206:13)
    #15     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
    #16     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
    #17     _invoke1 (dart:ui/hooks.dart:291:10)
    #18     _dispatchPointerDataPacket (dart:ui/hooks.dart:200:5)
V/AudioManager: querySoundEffectsEnabled...

iOS 端的进展

我修改了 Podfile 文件 的 platform :ios, '13.0',删除了 source 'https://github.com/CocoaPods/Specs.git'

之后运行 pod install

现在能在真机测试了,不过在点击开始推流后他闪退了

2020-05-14 12:56:24.446555+0800 Runner[1314:653036] Metal GPU Frame Capture Enabled
2020-05-14 12:56:24.446655+0800 Runner[1314:653036] Metal API Validation Enabled
2020-05-14 12:56:24.619188+0800 Runner[1314:653269] flutter: Observatory listening on http://127.0.0.1:65416/SOH3hd5nSX0=/

在这里,我点击了 开始推流,这里程序应该闪退了

2020-05-14 12:56:55.542431+0800 Runner[1314:653036] streaming version:git-2018-10-08-0e977cd1
2020-05-14 12:56:55:542 Runner[1314:653036] [W] Pili-Streaming init:steaming version:git-2018-10-08-0e977cd1 -[PLStreamingSession initWithVideoStreamingConfiguration:audioStreamingConfiguration:stream:dns:] PLStreamingSession.m:416
2020-05-14 12:56:55:542 Runner[1314:653036] [W] Pili-Streaming init:device info:iPhone12,8:iOS 13.4.1 -[PLStreamingSession initWithVideoStreamingConfiguration:audioStreamingConfiguration:stream:dns:] PLStreamingSession.m:417
2020-05-14 12:56:55.548300+0800 Runner[1314:653036] [] nehelper sent invalid result code [1] for Wi-Fi information request
Could not cast value of type 'NSNull' (0x1e1d56990) to 'NSNumber' (0x1e1d60568).
2020-05-14 12:56:55.563902+0800 Runner[1314:653036] Could not cast value of type 'NSNull' (0x1e1d56990) to 'NSNumber' (0x1e1d60568).
(lldb) 

截屏2020-05-14 下午1 01 10

iOS 和 android 端仍然没有正常工作,不过我觉得我有了一些方向,感谢您的启发,我觉得有一点思路了。

GuoDapeng commented 4 years ago

请重新生成签名并替换项目中的签名

其实我没理解这个说的是什么。是 iOS 端 apple 的证书吗?

JiangJuHong commented 4 years ago

七牛云的

JiangJuHong commented 4 years ago

错误信息提示没有找到 resume 方法,但是我检查了代码,它在Android和IOS都是具备的

JiangJuHong commented 4 years ago

或许你可以先使用Android尝试,在Android能够跑通后再进行IOS尝试

GuoDapeng commented 4 years ago

我感觉我是不是搞错方向了。 RTCMediaStreamingManager 我看了一下,是 Android 连麦 SDK。

我之前研究的单人直播给大家,貌似不是一样的?

不过我定位到出错的位置了

FlutterQiniucloudLivePlugin/android/src/main/java/top/huic/flutter_qiniucloud_live_plugin/view/QiniucloudPushPlatformView.java

        manager.prepare(cameraStreamingSetting, microphoneStreamingSetting, watermarkSetting, streamingProfile);

改成这样。

        manager.prepare(cameraStreamingSetting, microphoneStreamingSetting);
E/top.huic.flutter_qiniucloud_live_plugin.view.QiniucloudPushPlatformView: streamingProfileStr: {"publishUrl":"rtmp://pili-publish.guodapeng.icu/live-player/FlutterQiniucloudLivePlugin","videoQuality":22,"audioQuality":20,"quicEnable":true}
    watermarkSetting: null

截屏2020-05-14 下午10 20 46

WechatIMG2

看着右上角的小黑框,感觉不是我想要的那种一个人播,一堆人看的那种。不过我感觉我可以照着这个插件把 PLDroidCameraStreaming 的 flutter 插件写出来。

JiangJuHong commented 4 years ago

感谢。 你现在用的连麦,是主播和主播连麦,观众观看。 如果你只想主播推流,观众播放,那就不使用连麦即可。连麦类似推流上面的扩展功能

JiangJuHong commented 4 years ago

因为有连麦功能,所以那个小黑框默认显示,你可以根据实际使用场景来决定是否显示

GuoDapeng commented 4 years ago

哦这样呀,那我想看一下官方文档去,我感觉我就要搞定了。

GuoDapeng commented 4 years ago

android 成功了。拉流得到了推流的视频了。

这个错误提示很重要

Only support 16:9/4:3 ratio!

然后设置一下直播的尺寸就可以直播了

FlutterQiniucloudLivePlugin/android/src/main/java/top/huic/flutter_qiniucloud_live_plugin/view/QiniucloudPushPlatformView.java

// 预览设置
cameraStreamingSetting.setCameraPrvSizeRatio(CameraStreamingSetting.PREVIEW_SIZE_RATIO.RATIO_16_9);

示例上的 开始推流 按钮,我修改了一下,还没来得及研究 状态相关的逻辑。

明天搞一下 iOS。不用理我,等我都搞定了,我会都整理好放在这里 ^_^

GuoDapeng commented 4 years ago

我已经成功的推流拉流了。不过感觉画面非常不清晰。看样子还有很多工作要做。

最后感谢作者对这个问题的跟踪。