试试看:
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秒的视频,使用一个图像。
发布于 2016-06-29 00:58:23
我知道你的痛苦兄弟,我有一个类似的方法为我工作,使用一个框架与一个图像在指定的时间根据一个音频文件(在CMTime)。试试这个(编辑您的代码):
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);
}https://stackoverflow.com/questions/22671968
复制相似问题