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的可用性,以确保不会在未准备好时提供更多的数据。

相关内容

热门资讯

第八分钟了解!牌乐门黑科技!真... 第八分钟了解!牌乐门黑科技!真是真的是有辅助攻略(有挂工具)-哔哩哔哩进入游戏-大厅左侧-新手福利-...
第四分钟了解!心悦app辅助工... 第四分钟了解!心悦app辅助工具!果然存在有辅助app(有挂方法)-哔哩哔哩一、心悦app辅助工具可...
第六分钟了解!亲友联盟能开挂不... 第六分钟了解!亲友联盟能开挂不!其实一直都是有辅助工具(竟然有挂)-哔哩哔哩1、操作简单,无需亲友联...
第1分钟了解!一起宁德麻将辅助... 第1分钟了解!一起宁德麻将辅助!一直一直总是有辅助软件(有挂方法)-哔哩哔哩所有人都在同一条线上,像...
第6分钟了解!广东雀神智能插件... 第6分钟了解!广东雀神智能插件安装价格!一直真的有辅助神器(有挂解密)-哔哩哔哩1、首先打开广东雀神...
一分钟了解!哈糖大菠萝可以开挂... 一分钟了解!哈糖大菠萝可以开挂吗!总是一直总是有辅助工具(真是有挂)-哔哩哔哩1、游戏颠覆性的策略玩...
第二分钟了解!兴动游戏辅助器!... 第二分钟了解!兴动游戏辅助器!一直是有辅助app(真是有挂)-哔哩哔哩1、游戏颠覆性的策略玩法,独创...
8分钟了解!川娱竞技血战辅助!... 8分钟了解!川娱竞技血战辅助!真是真的是有辅助工具(有挂助手)-哔哩哔哩1、实时川娱竞技血战辅助透视...
第九分钟了解!三哥玩透视辅助!... 第九分钟了解!三哥玩透视辅助!好像一直都是有辅助工具(竟然有挂)-哔哩哔哩亲,关键说明,三哥玩透视辅...
第八分钟了解!九九山城辅助!确... 第八分钟了解!九九山城辅助!确实存在有辅助教程(有挂详情)-哔哩哔哩1、进入游戏-大厅左侧-新手福利...