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

相关内容

热门资讯

实操分享!小程序游戏赴沪期(辅... 实操分享!小程序游戏赴沪期(辅助挂)hh poker辅助有用吗(一直有挂)是一款可以让一直输的玩家,...
揭秘几款!微乐河南麻将辅助io... 揭秘几款!微乐河南麻将辅助ios(辅助挂)wepoker有没有机器人(其实有挂);微乐河南麻将辅助i...
教程辅助!德扑之星私人局辅助(... 教程辅助!德扑之星私人局辅助(辅助挂)wepoker养号规律(真是有挂)是一款可以让一直输的玩家,快...
技巧知识分享!广东闲来辅助神器... 您好,广东闲来辅助神器免费版这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多...
记者揭秘!小闲川南手游辅助器(... 记者揭秘!小闲川南手游辅助器(辅助挂)hhpoker哪个俱乐部靠谱(确实是有挂);大家肯定在之前小闲...
玩家交流!小程序牵手跑得有辅助... 《玩家交流!小程序牵手跑得有辅助器(辅助挂)竞技联盟辅助插件(本来存在有挂)》 小程序牵手跑得有辅助...
玩家必看分享!传送屋挂件(辅助... 玩家必看分享!传送屋挂件(辅助挂)wepoker透视版下载(好像有挂);是一款可以让一直输的玩家,快...
一起来探讨!威信茶馆透视挂(辅... 一起来探讨!威信茶馆透视挂(辅助挂)竞技联盟辅助插件(素来有挂);一、威信茶馆透视挂AI软件牌型概率...
必看攻略!微乐小程序辅助收费(... 必看攻略!微乐小程序辅助收费(辅助挂)pokemmo手机版脚本(本来有挂);1、微乐小程序辅助收费a...
一分钟了解!川娱竞技辅助插件(... 一分钟了解!川娱竞技辅助插件(辅助挂)hhpoker有后台操作吗(本然是真的有挂);川娱竞技辅助插件...