0
我已成功设置AVAssetWriter以将视频录制并保存到相机胶卷。唯一的问题是录制的视频的第一帧是空白的白框。有没有办法解决这个问题?到底是怎么回事?AVAssetWriter在Swift中录制视频?
我已成功设置AVAssetWriter以将视频录制并保存到相机胶卷。唯一的问题是录制的视频的第一帧是空白的白框。有没有办法解决这个问题?到底是怎么回事?AVAssetWriter在Swift中录制视频?
你对视频帧有任何操纵吗?在我的情况下,我正在调整视频帧的大小,然后再编写它们。在这种情况下,首先写入音频帧,在几帧后写入视频帧。由于这个原因,前几帧在预览中显示为白色。但它在视频播放中几乎不明显。
解决方案:
跳过写音频帧,直到你使用avasssetwriter
推荐代码captureoutput
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection!) {
if CMSampleBufferDataIsReady(sampleBuffer) == false
{
// Handle error
return;
}
startTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer)
if videoWriter.status == AVAssetWriterStatus.Unknown {
videoWriter.startWriting()
videoWriter.startSessionAtSourceTime(startTime)
return
}
if videoWriter.status == AVAssetWriterStatus.Failed {
// Handle error here
return;
}
// Here you collect each frame and process it
if(recordingInProgress){
if let _ = captureOutput as? AVCaptureVideoDataOutput {
if videoWriterInput.isReadyForMoreMediaData{
videoWriterInput.append(sampleBuffer)
video_frames_written = true
}
}
if let _ = captureOutput as? AVCaptureAudioDataOutput {
if audioWriterInput.isReadyForMoreMediaData && video_frames_written{
audioWriterInput.append(sampleBuffer)
}
}
}
}
我想这可能工作写一个视频帧,但似乎即使我只在写入视频帧时写入音频帧,仍然存在一个白色帧,其中既没有视频也没有au dio被记录。还有其他建议吗? –
你能分享录制的文件吗?可能是第一个samplebuffer的日志? – manishg
以下是视频https://drive.google.com/file/d/0B2QAK-lm39WhdVlqa0hSY0tNaGM/view?usp=sharing的示例。录音机的设置方式是每隔一秒录制一个新的片段,但问题不在于此,因为在录制的第一秒内仍然存在空白帧,没有视频或音频。 –