THETA X 概念 7

在 startCapture 命令运行后,相机的状态为“进行中”,直到用户运行 stopCapture 命令。

gif

概念

当用户启动视频时,process id 会从 commands/execute 中解析出来。该 id 会被传入应用程序的状态,并作为 commands/status 的参数。commands/status 会输出视频命令的状态:inProgress(进行中)或 done(完成)。

chart

进行中

当相机正在拍摄视频时,进程的状态是 inProgress。stopCapture 命令运行后,相机将视频拼接在一起。即使停止了视频,进程仍然是 inProgress。一旦视频完成拼接,进程就是 done。虽然视频可能只有三秒钟,但拼接过程可能需要五秒钟才能完成。

API 功能

步骤

  • 使用 commands/execute 开始捕捉。
  • 从响应中解析出 id

    var convertResponse = jsonDecode(response.bodyString);
    var id = convertResponse['id'];
  • 将进程 id 传入应用程序状态,也传入 commands/status。通过特定的 id,commands/status 应该能够发出视频进程的状态。
  • commands/status 在一个 while 循环中添加到 commands/execute,直到视频进程的状态变为 done。每次调用之间的延迟可以防止应用程序崩溃。
  1. 相机完成处理后,将状态显示在屏幕上。
Text('State: ${state.cameraStatus}')

响应窗口

stopCapture 命令会输出最后一个视频的文件 url。这个文件 url 会被传入应用程序的状态,并显示为一张图片。

  state.fileUrl.isNotEmpty && state.cameraStatus == 'done'
    ? SizedBox(
        width: 300,
        child: Image.network(
            '${state.fileUrl}?type=thumb',))
        

GitHub

查看 Github