流式传输时 Flutter camera 0.8.1 闪烁

Posted

技术标签:

【中文标题】流式传输时 Flutter camera 0.8.1 闪烁【英文标题】:Flutter camera 0.8.1 flash on while streaming 【发布时间】:2021-08-07 20:53:33 【问题描述】:

有没有办法让相机 0.8.1 从我的相机流式传输以处理帧并在流式传输时保持闪光灯开启?在windows上工作并在android上运行

相机 0.8.1 的示例并没有真正让我知道如何设置 flashmode 状态。但我仍然是一个新手,所以很可能会错过它。谢谢你。 得到这个错误 ══╡小部件库捕获的例外╞═════════════════════════════════════════ ══════════════════ 以下 NoSuchMethodError 被抛出附加到渲染树: 在 null 上调用了方法“setFlashMode”。 接收方:空 尝试调用:setFlashMode(Instance of 'FlashMode')

当异常被抛出时,这是堆栈: #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5) #1 _CameraAppState.initState (package:cameratest/main.dart:26:13) #2 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4632:57) #3 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4469:5) #4 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3541:14) #5 Element.updateChild (package:flutter/src/widgets/framework.dart:3306:18) #6 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1182:16) #7 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1153:5) #8 RenderObjectToWidgetAdapter.attachToRenderTree。 (包:flutter/src/widgets/binding.dart:1095:18) #9 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2647:19) #10 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1094:13) #11 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:934:7) #12 WidgetsBinding.scheduleAttachRootWidget。 (包:flutter/src/widgets/binding.dart:915:7) (从 _RawReceivePortImpl 类、_Timer 类、dart:async 和 dart:async-patch 中省略了 11 帧) 我现在的代码是用于预览,并希望在应用启动时启动闪光灯。

    import 'dart:async';
    import 'dart:io';

    import 'package:flutter/material.dart';
    import 'package:camera/camera.dart';

    List<CameraDescription> cameras;

    Future<void> main() async 
      WidgetsFlutterBinding.ensureInitialized();

      cameras = await availableCameras();
         _cameraController.setFlashMode(FlashMode.always);

      runApp(CameraApp());
    

    class CameraApp extends StatefulWidget 
      @override
      _CameraAppState createState() => _CameraAppState();
    

    class _CameraAppState extends State<CameraApp> 
     CameraController controller;
 
      @override
      void initState() 

        super.initState();
        controller = CameraController(cameras[0],                         ResolutionPreset.max);

        controller.initialize().then((_) 

          if (!mounted) 
            return;
          
          setState(()  
    );

        );
      

      @override
      void dispose() 
        controller?.dispose();
        super.dispose();
      

      @override
      Widget build(BuildContext context) 
        if (!controller.value.isInitialized) 

          return Container();
        
        return MaterialApp(
          home: CameraPreview(controller),
        );
      
    

【问题讨论】:

【参考方案1】:

您可以使用相机控制器设置闪光模式 像这样使用它

CameraController  _cameraController;
List<CameraDescription> cameras=await availableCameras();
controller = CameraController(cameras[0], ResolutionPreset.max);
_cameraController.setFlashMode(FlashMode.always);
     _cameraController.setFlashMode(FlashMode.always);

并将控制器分配给相机预览

CameraPreview(_cameraController)

【讨论】:

它是因为。你可能没有初始化控制器你初始化控制器了吗? 仍然抛出错误。所以代码正在编辑中。谢谢 _cameraController 没有在任何地方声明。请你解释一下为什么使用 _cameraController 而不是控制器?但还没来得及。【参考方案2】:

要在流式传输时保持闪光灯打开,我能做到的唯一方法是使用 controller.setFlashMode(FlashMode.torch);

【讨论】:

以上是关于流式传输时 Flutter camera 0.8.1 闪烁的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:将两个 Streams 流式传输到一个屏幕中?

Flutter Web 录制音频以流式传输

如何通过 PHP api 在 Flutter 中流式传输 MySQL 数据库记录?

Flutter Firebase:我想使用 Stream 提供程序在应用程序中流式传输登录用户的详细信息

通过 RTMP 流式传输 android 相机

是否可以在颤动中流式传输无尽的音频?