AVAssetWriterInput-CapturedAudio缺少足够的视频帧。
创始人
2024-11-12 20:30:19
0

在输入视频帧之前,为AVAssetWriterInput添加一个空的CMSampleBuffer,以确保捕获的音频数据和视频帧都能与完整的持续时间对应。

示例代码:

//定义一些变量 AVAssetWriterInput *videoInput; AVAssetWriterInput *audioInput; AVAssetWriter *writer; CMTime videoTime; CMSampleBufferRef emptySampleBuffer; CMTime audioStartTime; CMTime videoStartTime;

//初始化AVAssetWriter和输入流 //...

//为videoInput设置一个初始时间戳 videoStartTime = CMTimeMake(0, videoTrack.naturalTimeScale); [videoInput setMediaTimeScale:videoTrack.naturalTimeScale]; [videoInput setMediaTimeRange:CMTimeRangeMake(kCMTimeZero, videoDuration)]; [writer startWriting]; [writer startSessionAtSourceTime:videoStartTime];

//添加一个空的CMSampleBuffer //该样本缓冲区保证视频帧和音频数据都能与持续时间相对应 emptySampleBuffer = [self createEmptySampleBufferForAudioTrack:audioTrack atTime:audioStartTime]; if ([audioInput isReadyForMoreMediaData]) { [audioInput appendSampleBuffer:emptySampleBuffer]; }

//添加视频帧和音频数据 //...

//创建一个空的CMSampleBuffer

  • (CMSampleBufferRef)createEmptySampleBufferForAudioTrack:(AVAssetTrack *)audioTrack atTime:(CMTime)time { CMSampleBufferRef sampleBuffer = NULL; CMBlockBufferRef blockBuffer = NULL;

    OSStatus status = CMBlockBufferCreateEmpty(kCFAllocatorDefault, 0, kCMBlockBufferAssureMemoryNowFlag, &blockBuffer); if (status != noErr) { NSLog(@"Error creating empty CMSampleBuffer for audio: %d", status); return NULL; }

    AudioStreamBasicDescription audioFormat = *(audioTrack.formatDescriptions[0]); CMSampleTimingInfo timingInfo = {.duration = kCMTimeInvalid, .presentationTimeStamp = time, .decodeTimeStamp = kCMTimeInvalid};

    CMSampleBufferCreate(kCFAllocatorDefault, blockBuffer, true, NULL, NULL, audioTrack.formatDescriptionsCount, 1, &timingInfo, 0, NULL, &sampleBuffer); CFRelease(blockBuffer);

    return sampleBuffer; }

相关内容

热门资讯

技术分享!大头大菠萝辅助!都是... 技术分享!大头大菠萝辅助!都是是真的有辅助技巧(有挂总结)1、起透看视 大头大菠萝辅助辅助软件价格2...
围绕透视问题!菠萝辅助破解版!... 围绕透视问题!菠萝辅助破解版!一贯真的是有辅助攻略(有挂分享)围绕透视问题!菠萝辅助破解版!一贯真的...
玩家必看攻略!胡乐辅助脚本!确... 玩家必看攻略!胡乐辅助脚本!确实真的有辅助软件(有挂分析)1、实时胡乐辅助脚本透视辅助更新:用户可以...
一分钟了解!微信欢乐卡五星辅助... 一分钟了解!微信欢乐卡五星辅助!一直真的是有辅助软件(有挂讲解)1、这是跨平台的微信欢乐卡五星辅助轻...
据相关数据显示!微信小程序雀神... 据相关数据显示!微信小程序雀神广东辅助器!果然真的有辅助工具(有挂规律)1、用户打开应用后不用登录就...
一分钟揭秘!随意玩辅助器透视挂... 一分钟揭秘!随意玩辅助器透视挂!竟然真的有辅助神器(有挂透视)1、操作简单,无需随意玩辅助器透视挂手...
昨日!神途辅助脚本!果然存在有... 昨日!神途辅助脚本!果然存在有辅助方法(有挂规律)神途辅助脚本破解侠是真的助透视。每个模型中均包含「...
重大通报!小唐家乐园辅助器!本... 重大通报!小唐家乐园辅助器!本来是真的有辅助器(确实有挂)1)小唐家乐园辅助器辅助插件:进一步探索小...
一分钟了解!四川游戏辅助器!确... 一分钟了解!四川游戏辅助器!确实真的是有辅助方法(有挂教程)1、下载好四川游戏辅助器正确养号方法之后...
一分钟秒懂!随意玩正版房卡有开... 一分钟秒懂!随意玩正版房卡有开挂!总是存在有辅助器(有挂规律)1、随意玩正版房卡有开挂脚本辅助下载、...