无法使用AVAssetWriter编写视频

时间:2019-06-17 15:27:18

标签: ios macos avcapturesession avassetwriter avassetwriterinput

我正在使用AVAssetWriter将屏幕重新编码保存为mp4(使用H.264视频和aac音频编码)。一切都按预期完成,但有些用户抱怨0KB视频大小问题,即没有数据写入输出文件。 通过反复尝试,我能够重现此问题。它是在几次成功写入之后发生的(有时在2以后,有时在5以后,在某些机器上从来没有发生)。我比较了成功流程和失败流程,并查看了日志。我唯一发现的就是这个

  

CMIO_Unit_Converter_Audio.cpp:588:RebuildAudioConverter AudioConverterSetProperty()失败(1886547824)

哪里

  

kAudioFormatUnsupportedPropertyError = 1886547824

这会导致我在出现故障的情况下检查音频格式,但是AVAssetWriter的音频格式非常好。 我正在将音频编写器输入设置为 AVAssetWriter输入

[<AVAssetWriterInput: 0x600002047950, mediaType = vide, outputSettings = {
    AVVideoCodecKey = avc1;
    AVVideoHeightKey = 840;
    AVVideoWidthKey = 1360;
}>, <AVAssetWriterInput: 0x60000205e740, mediaType = soun, outputSettings = {
    AVFormatIDKey = 1633772320;
    AVNumberOfChannelsKey = 2;
    AVSampleRateKey = 44100;
}>]

我为视频和音频创建AVAssetWriterInput的代码如下 音频AVAssetWriterInput

settings = [
    AVFormatIDKey : kAudioFormatMPEG4AAC,
    AVNumberOfChannelsKey : ch,
    AVSampleRateKey : rate,
]
audioInput = AVAssetWriterInput(mediaType: .audio, outputSettings: settings)

视频AVAssetWriterInput

var settings: [String : Any] = [
    AVVideoWidthKey  : cx,
    AVVideoHeightKey : cy,
    AVVideoCodecKey  : AVVideoCodecType.h264,
]
videoInput = AVAssetWriterInput(mediaType: .video, outputSettings: settings)

我注意到在启动AVCaptureSession之后和AVCaptureVideoDataOutputSampleBufferDelegate的{​​{1}}之前,日志中出现错误。我也记录了AVCaptureSession的输入和输出。

AVCaptureSession输入

captureOutput

AVCaptureSession输出

[<AVCaptureScreenInput: 0x6000022e18e0>, <AVCaptureDeviceInput: 0x6000022e0a00 [Built-in Microphone]>]

但是我在这里没有发现任何问题。我已经尝试了好几天,但未能做到。我不知道是什么触发了它,即使正确设置了所有内容,它也无法写入任何输出。仅当我编写视频时,视频+音频才会发生这种情况。

0 个答案:

没有答案