首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAssetWriter -呈现单个图像10秒

AVAssetWriter -呈现单个图像10秒
EN

Stack Overflow用户
提问于 2014-03-26 20:08:43
回答 1查看 307关注 0票数 0

试试看:

代码语言:javascript
复制
int frameCount = 30*10;
    for(int i = 0; i<frameCount; i++)
    {
        while (!append_ok && j < 30)
        {
            if (self.adaptor.assetWriterInput.readyForMoreMediaData)
            {

                CMTime frameTime = CMTimeMake(i,(int32_t) 10);

                NSLog(@"frameTime %f", CMTimeGetSeconds(frameTime));

                append_ok = [self.adaptor appendPixelBuffer:buffer withPresentationTime:frameTime];
                if(!append_ok){
                    NSError *error = self.assetWriter.error;
                    if(error!=nil) {
                        NSLog(@"Unresolved error %@,%@.", error, [error userInfo]);
                    }
                }

                [NSThread sleepForTimeInterval:0.05];
            }
            else
            {
                printf("adaptor not ready %d", j);
                [NSThread sleepForTimeInterval:0.1];
            }
            j++;
        }
        if (!append_ok)
        {
            printf("error appending image times %d\n", j);
        }
        CVBufferRelease(buffer);
    }

但我知道这个错误:

MyApp(11658,0x3a98218c) malloc:*对象0x1782c690错误:双空闲

我只想创建一个10秒的视频,使用一个图像。

EN

回答 1

Stack Overflow用户

发布于 2016-06-29 00:58:23

我知道你的痛苦兄弟,我有一个类似的方法为我工作,使用一个框架与一个图像在指定的时间根据一个音频文件(在CMTime)。试试这个(编辑您的代码):

代码语言:javascript
复制
int frameCount = 1;
for(int i = 0; i<frameCount; i++)
{
    while (!append_ok && j < 30)
    {
        if (self.adaptor.assetWriterInput.readyForMoreMediaData)
        {

            CMTime frameTime = CMTimeMake(10, 1); //10 seconds

            NSLog(@"frameTime %f", CMTimeGetSeconds(frameTime));

            append_ok = [self.adaptor appendPixelBuffer:buffer withPresentationTime:frameTime];
            if(!append_ok){
                NSError *error = self.assetWriter.error;
                if(error!=nil) {
                    NSLog(@"Unresolved error %@,%@.", error, [error userInfo]);
                }
            }

            [NSThread sleepForTimeInterval:0.05];
        }
        else
        {
            printf("adaptor not ready %d", j);
            [NSThread sleepForTimeInterval:0.1];
        }
        j++;
    }
    if (!append_ok)
    {
        printf("error appending image times %d\n", j);
    }
    CVBufferRelease(buffer);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22671968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档