AVAssetWriterInputReadyForMoreMediaData总为false。
创始人
2024-11-12 20:30:21
0

问题出现的原因可能是写入速度过慢,导致下一个可用的缓冲区未能及时提供给AVAssetWriterInput。可以通过以下代码解决:

//初始化AVAssetWriterInput对象和output设置
let videoOutputSettings: Dictionary = [
    AVVideoCodecKey: AVVideoCodecType.h264,
    AVVideoWidthKey: frameSize.width,
    AVVideoHeightKey: frameSize.height
]

videoWriterInput = AVAssetWriterInput(mediaType: AVMediaType.video, outputSettings: videoOutputSettings)
let videoInputQueue = DispatchQueue(label: "video input queue")
videoWriterInput!.expectsMediaDataInRealTime = true

//将AVAssetWriterInput与AVAssetWriter绑定
let videoOutput = AVAssetWriterInputPixelBufferAdaptor(assetWriterInput: videoWriterInput!, sourcePixelBufferAttributes: nil)
videoWriter?.add(videoWriterInput!)

//在capture输出数据中调用下面的方法来写入视频数据到AVAssetWriterInput中
func writeVideo(buffer: CVPixelBuffer, time: CMTime) -> Void {
    if (videoWriterInput!.isReadyForMoreMediaData) {
        videoInputQueue.sync {
            if let adpator = videoOutput {
                adpator.append(buffer, withPresentationTime: time)
            }
        }
    }
}

在以上代码中,我们使用videoInputQueue来确保append()请求按照顺序调用,并且我们检查了AVAssetWriterInput的可用性,以确保不会在未准备好时提供更多的数据。

相关内容

热门资讯

详情透视!wepoker的辅助... 详情透视!wepoker的辅助器,微乐小程序辅助器脚本,方式教程(有挂猫腻)-哔哩哔哩1、首先打开w...
详细透视!fishpoker透... 详细透视!fishpoker透视底牌!本来有辅助工具(确实有挂)-哔哩哔哩1、fishpoker透视...
专业透视!竞技联盟破解版最新版... 专业透视!竞技联盟破解版最新版,微信小程序微乐挂如何获取,法门教程(竟然有挂)-哔哩哔哩1、起透看视...
分享透视!约局吧能不能开挂!切... 分享透视!约局吧能不能开挂!切实真的有辅助攻略(确实有挂)-哔哩哔哩1、超多福利:超高返利,海量正版...
分享透视!hhpoker是正规... 分享透视!hhpoker是正规的吗,微乐自建房辅助神器怎么安装,资料教程(的确有挂)-哔哩哔哩1、下...
教你透视!pokemmo内置修... 教你透视!pokemmo内置修改器!一贯是有辅助脚本(发现有挂)-哔哩哔哩1、pokemmo内置修改...
揭幕透视!哈糖大菠萝免费辅助器... 揭幕透视!哈糖大菠萝免费辅助器,微乐小程序卡五星脚本,积累教程(有挂解惑)-哔哩哔哩1、完成哈糖大菠...
详细透视!xpoker辅助助手... 详细透视!xpoker辅助助手!本来一直总是有辅助教程(有挂细节)-哔哩哔哩1、点击下载安装,xpo...
关于透视!约局吧怎么看有没有挂... 关于透视!约局吧怎么看有没有挂,微信小程序游戏充值破解,方式教程(有挂秘诀)-哔哩哔哩在进入约局吧怎...
详情透视!红龙poker作必弊... 详情透视!红龙poker作必弊指令!原来是真的有辅助教程(有人有挂)-哔哩哔哩1.红龙poker作必...