1 min read

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

问题描述

官方的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'