ビデオカラーアプリケーション用のAVFoundationでビデオをエンコードしようとしています(hereをご覧ください)。私の問題の解決に役立つ場合、エクスポートコーデックはH264またはProResまたはHEVC(ユーザーの選択に応じて)になります。 Make movie file with picture Array and song file, using AVAssetAVFoundationビデオのエクスポート - 理由なしでエラーが発生しました[Objective-C]
そしてgithubのからこのコード::私は答えに基づいて私のコードを書かれている
ここhttps://github.com/caferrara/img-to-video/blob/master/img-to-video/ViewController.m#L29
は、一部の外国の変数と関数呼び出しがあります(私が持っているものだが、私はそれはかなりだと思います明確なものを)起こっている:
NSURL * outURL = [NSURL fileURLWithPath:[NSString stringWithFormat: @"%s", path]];
NSLog(outURL.absoluteString);
NSError * error = nil;
AVAssetWriter * videoWriter = [[AVAssetWriter alloc] initWithURL: outURL
fileType:AVFileTypeQuickTimeMovie
error:&error];
NSDictionary * videoSettings = [NSDictionary dictionaryWithObjectsAndKeys:
encoder->codec, AVVideoCodecKey,
[NSNumber numberWithInt:encoder->width], AVVideoWidthKey,
[NSNumber numberWithInt:encoder->height], AVVideoHeightKey,
nil ];
AVAssetWriterInput * videoWriterInput = [AVAssetWriterInput
assetWriterInputWithMediaType:AVMediaTypeVideo
outputSettings:videoSettings];
AVAssetWriterInputPixelBufferAdaptor * adaptor = [AVAssetWriterInputPixelBufferAdaptor
assetWriterInputPixelBufferAdaptorWithAssetWriterInput:videoWriterInput
sourcePixelBufferAttributes:nil];
videoWriterInput.expectsMediaDataInRealTime = YES;
[videoWriter addInput:videoWriterInput];
//Start a session:
[videoWriter startWriting];
NSLog(@"Write Started");
[videoWriter startSessionAtSourceTime:kCMTimeZero];
//Video encoding
CVPixelBufferRef buffer = NULL;
setMlvAlwaysUseAmaze(App->videoMLV);
for(uint64_t f = 0; f < getMlvFrames(App->videoMLV); ++f)
{
getMlvProcessedFrame16(App->videoMLV, f, encoder->data);
CVReturn success = CVPixelBufferCreateWithBytes(kCFAllocatorDefault,
encoder->width,
encoder->height,
kCVPixelFormatType_48RGB,
encoder->data,
sizeof(uint16_t) * encoder->width * 3,
NULL,
NULL,
NULL,
&buffer);
if (success != kCVReturnSuccess || buffer == NULL) NSLog(@"Failed to create pixel buffer.");
NSDictionary * colour_attachment = @{(id)kCVImageBufferICCProfileKey : (id)encoder->colour_profile_data};
CVBufferSetAttachments(buffer, (CFDictionaryRef)colour_attachment, kCVAttachmentMode_ShouldPropagate);
BOOL append_ok = NO;
int j = 0;
while (!append_ok && j < 30) {
if (adaptor.assetWriterInput.readyForMoreMediaData) {
//print out status:
NSLog(@"Processing video frame (%d, attempt %d)", (int)f, j);
CMTime frameTime = CMTimeMake(f * 5000.0, (int32_t)(encoder->fps * 1000.0));
append_ok = [adaptor appendPixelBuffer:buffer withPresentationTime:frameTime];
if(!append_ok){
NSError *error = videoWriter.error;
if(error!=nil) {
NSLog(@"Unresolved error %@,%@.", error, [error userInfo]);
}
}
while(!adaptor.assetWriterInput.readyForMoreMediaData) [NSThread sleepForTimeInterval:0.0001];
}
else {
printf("adaptor not ready %d, %d\n", (int)f, j);
while(!adaptor.assetWriterInput.readyForMoreMediaData) [NSThread sleepForTimeInterval:0.0001];
}
j++;
}
if (!append_ok) {
printf("error appending image %d times %d\n, with error.", (int)f, j);
}
}
[videoWriterInput markAsFinished];
[videoWriter finishWriting];
[videoWriterInput release];
[videoWriter release];
NSLog(@"Write Ended");
しかし、私はそれを実行しようとするたびに、それは次のようなエラーが出力されます。
2017-11-15 20:54:40.532 MLV App[21801:3488295] Unresolved error Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSLocalizedFailureReason=An unknown error occurred (-12905), NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x7fd446adeb70 {Error Domain=NSOSStatusErrorDomain Code=-12905 "(null)"}},{
NSLocalizedDescription = "The operation could not be completed";
NSLocalizedFailureReason = "An unknown error occurred (-12905)";
NSUnderlyingError = "Error Domain=NSOSStatusErrorDomain Code=-12905 \"(null)\""; }.
私はインターネット上でこのエラーコードの意味を見てきましたが、それはまったく役に立たないものでした。
AVFoundationの使用方法に大きな問題がありますか? 私は8ビットRGBフレームへの切り替えも試みましたが、問題を修正しませんでした。
は推測:多分 'AVFoundation'はRGBをやったときにRGBAが好き、または多分ピクセルバッファ属性は 'kCVPixelBufferPixelFormatTypeKey'を指定する必要があります。実行可能なスニペットがここで多く役立ちます。 –
https://osstatus.com/search/results?platform=all&framework=all&search=-12905 – seth