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
如何使用
在 pub.yaml 中添加如下代码:
dependency_overrides:
camera:
git:
url: 'https://github.com/calvingit/flutter-camera.git'
ref: 'master'