跳到主要内容

Flutter 解决iOS录制视频时前几帧黑屏的情况

· 阅读需 2 分钟

问题描述

官方的camera包 在录制视频时,第一次初始化后,前 100ms 左右的视频都是黑屏,第二次使用时没有这样的情况。

Google 一轮后,大部分回答是因为音频录制需要花时间准备,需要在startVideoRecording前调用prepareForVideoRecording操作来初始化 Audio Session,但是尝试过了,没有效果。

解决方案

在 stackoverflow 找到一个暴力的解决方案,直接丢弃这 100ms 的内容。在ios/Classes/CameraPlugin.m文件里修改如下代码即可:

-   _videoTimeOffset = CMTimeMake(0, 1);
- _audioTimeOffset = CMTimeMake(0, 1);
+ _videoTimeOffset = CMTimeMakeWithSeconds(1, 10);
+ _audioTimeOffset = CMTimeMakeWithSeconds(1, 10);

fork 了一份官方的代码,然后创建一个新的flutter-camera

选择比努力重要

· 阅读需 1 分钟

未来整个大的时代形势是什么?

就是降低房地产、金融、教育、互联网等的利润和垄断,以及由此引发的过去长期对我们民生和实体经济的挤压和成本,这些是风险。

投资与看待世界的方式

· 阅读需 1 分钟

晚风说播客的主持人 Jade 认为投资中真正迷人的并不是手机屏幕上的浮赢浮亏,而是探索事物的本质的乐趣,和不断观察自我、修正自我的契机。她把这称作“正念投资”。

Flutter Widget Key 要怎么用

· 阅读需 2 分钟

Key 有两种:GlobalKey,LocalKey。

GlobalKey 是整个 App 唯一的,通常用于全局 widget 的状态, 比如跨 Widget 访问状态。

LocalKey 是本地的,局部的,通常用于同级之间比较,比如列表之间增加、删除、排序等会改变顺序的操作。