gpt4 book ai didi

ios - AVAssetWriter:开始写入时的瞬间滞后

转载 作者:行者123 更新时间:2023-11-28 07:30:37 37 4
gpt4 key购买 nike

我正在开发一个使用 AVAssetWriter 录制视频的应用程序(源媒体是从 captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) 输出的示例缓冲区。

我注意到第一次实例化我的 AVAssetWriter , 然后调用 startWriting()startSession(atSourceTime: CMTime) , 有大约 30ms 的滞后。这会导致屏幕上的视频预览暂时挂起,这也会导致视频的前几帧无法正常写入。

奇怪的是,如果我重新实例化我的 AVAssetWriter并再次执行所有相同的步骤,从那时起一切正常。这只会在第一次发生。

虽然发布可能太长,但我确定这是发生错误的函数;

func insert(pixel buffer: CVPixelBuffer, with time: CMTime) {

// Check for unknown status
if fileWriter.status == .unknown {
guard startingVideoTime == nil else {
print("We've received an error setting the starting video time.")
return
}
startingVideoTime = time
if fileWriter.startWriting() {
fileWriter.startSession(atSourceTime: startingVideoTime!)
isRecording = true
}
}

// Append buffer
if videoInput.isReadyForMoreMediaData {
append(pixel: buffer, with: time)
isRecording = true
}
}

为了后代,我从我的 captureOutput 调用上述函数,只有当我的 self.isRecording = true ,这是我在用户点击“开始录制”按钮时设置的。

最佳答案

let videoCompressionSettings: [String: Any] = [
AVVideoCodecKey: AVVideoCodecType.h264,
AVVideoWidthKey: NSNumber(value: 1080),
AVVideoHeightKey: NSNumber(value: 1920)
]
let audioCompressionSettings: [String: Any] = [
AVNumberOfChannelsKey: NSNumber(value: 1),
AVEncoderAudioQualityForVBRKey: NSNumber(value: 91),
AVEncoderBitRatePerChannelKey:NSNumber(value: 9600),
AVEncoderBitRateStrategyKey: AVAudioBitRateStrategy_Variable,
AVFormatIDKey: NSNumber(value: 1633772320),
AVSampleRateKey: NSNumber(value: 44100)
]
// My own wrapper for AVAssetWriter
movieWriterManager = MovieWriterManager(videoUrl: recordingVideoURL(), audioUrl: recordingAudioURL(), videoCompressionSettings: videoCompressionSettings, audioCompressionSettings: audioCompressionSettings)
movieWriterManager?.warmup()

您可以尝试通过在 AppDelegate 的 didFinishLaunchingWithOptions 使用默认的 videoCompressionSettings 和 audioCompressionSettings 运行相同的步骤来争取时间。它实际上并没有阻塞 UI 线程,而只是阻塞了 AVCaptureVideoDataOutput 的视频输出连接。

关于ios - AVAssetWriter:开始写入时的瞬间滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54820185/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com