我制作了一个录制视频应用,但第一帧始终是黑色。
我用:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
和assetWriter编写样本缓冲区。
我发现第一个样本缓冲区是mediaType:'soun',这是问题所在。
我该怎么做
答案 0 :(得分:12)
我遇到了同样的问题。我认为第一个样本缓冲区是"声音"应该是问题所在。我试图做的是忽略第一个样本缓冲区,如果它的声音。等到第一个"视频"样本缓冲区进来然后执行AVAssetWriter startWriting事情。我这样解决了我的问题。
答案 1 :(得分:0)
感谢@ethanchli的回复,它对我有所帮助,所以我决定添加一些细节。
首先,如果不使用AVCaptureAudioDataOutputSampleBufferDelegate扩展,请尝试将其卸载,因为它与AVCaptureVideoDataOutputSampleBufferDelegate扩展运行相同的功能。
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection){}
或者如果您需要audioSamleBoofer:)
尝试一下-检查仅在视频连接中存在的方向支持。
if connection.isVideoOrientationSupported {
// Work with video samle boofer
} else {
// Work with audio sample boofer audio
}