6

我制作了一个录制视频应用程序,但第一帧总是黑色的。

我用:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection 

和assetWriter 写入样本缓冲区。

我发现第一个样本缓冲区是 mediaType:'soun',是不是有问题。

我应该怎么做

4

2 回答 2

18

我有同样的问题。而且我认为第一个样本缓冲区是“声音”应该是问题所在。我试图做的是忽略第一个样本缓冲区,如果它是健全的。等到第一个“视频”样本缓冲区进入,然后执行 AVAssetWriter startWriting 事情。我通过这样做解决了我的问题。

于 2015-01-25T16:45:12.080 回答
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
    }
    
于 2020-08-31T19:08:25.437 回答