본문 바로가기

# 02/Flutter

[Flutter] iOS 카메라 비디오 녹화 시 간헐적으로 블랙 프레임 생기는 현상

반응형

iOS 에서 카메라 플러그인 사용하여 비디오 녹화 시 간헐적으로 첫 프레임이 검은색으로 노출되는 경우가 있다.

 

블랙 프레임의 원인은 무엇입니까?

비디오 버퍼보다 오디오 버퍼가 먼저 도착한 경우 비디오 부분이 비어 있거나 검은색 초기 프레임을 얻게 된다.

 

해결책은 무엇입니까?

비디오 녹화 시 오디오 설정을 해제하면 해결되지만 그럴 수 없으므로 0.05초의 딜레이를 주어 첫 프레임이 버퍼에 저장되지 않도록 한다.

 

 

CFRetain(sampleBuffer);
CMTime currentSampleTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);

if (_videoWriter.status != AVAssetWriterStatusWriting) {
  [_videoWriter startWriting];
  [_videoWriter startSessionAtSourceTime:currentSampleTime];
}

 

CFRetain(sampleBuffer);
CMTime currentSampleTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);

CMTime startingTimeDelay = CMTimeMakeWithSeconds(0.05, 1000000000);
CMTime startingTimeToUse = CMTimeAdd(currentSampleTime, startingTimeDelay);

if (_videoWriter.status != AVAssetWriterStatusWriting) {
  [_videoWriter startWriting];
  [_videoWriter startSessionAtSourceTime:startingTimeToUse];
}

 

카메라 플러그인 코드를 위에서 아래로 수정 필요!

 

다음과 같이 AVAssetWriter.startSession 을 호출할 때 시작 시간에 0.05초를 추가하여 블랙 프레임 생기는 현상을 제거 하였다.

 

 

 


https://stackoverflow.com/questions/44135223/record-video-with-avassetwriter-first-frames-are-black

 

Record video with AVAssetWriter: first frames are black

I am recording video (the user also can switch to audio only) with AVAssetWriter. I start the recording when the app is launched. But the first frames are black (or very dark). This also happens wh...

stackoverflow.com

https://github.com/flutter/flutter/issues/57831

 

when using camera plugin to record video in ios, the first frame may be black · Issue #57831 · flutter/flutter

when using camera plugin to record video in ios, the audio is on,the first frame will be black.but when the audio is false,this time record video,and the first frame be black question will be gone.

github.com

 

반응형