Как создать несколько файлов mp4 одновременно с AVAssetWriter

Я пытаюсь сохранить четыре видеопотока с помощью AVAssetWriter на iPhone как.mp4. С тремя потоками все работает нормально, но 4-й файл mp4 всегда пуст.

Вот часть моего кода:

-(void)writeImagesToMovie:(CVPixelBufferRef) buffer :(int) cameraID
{
    AVAssetWriterInput* writerInput;
    AVAssetWriterInputPixelBufferAdaptor *adaptor;
    int* frameNumber;

    switch (cameraID) {
        case 1:
            writerInput = writerInput1;
            adaptor = adaptor1;
            frameNumber =&frameNumber1;
            break;

        case 2:
            writerInput = writerInput2;
            adaptor = adaptor2;
            frameNumber =&frameNumber2;
            break;

        case 3:
            writerInput = writerInput3;
            adaptor = adaptor3;
            frameNumber =&frameNumber3;
            break;

        default:
            writerInput = writerInput4;
            adaptor = adaptor4;
            frameNumber =&frameNumber4;       
            break;
    }

    if(writerInput.readyForMoreMediaData){    
        CMTime frameTime = CMTimeMake(1, 30);//150, 600
        // CMTime = Value and Timescale.
        // Timescale = the number of tics per second you want
        // Value is the number of tics
        // For us - each frame we add will be 1/4th of a second
        // Apple recommend 600 tics per second for video because it is a
        // multiple of the standard video rates 24, 30, 60 fps etc.

        CMTime lastTime=CMTimeMake((int64_t)*frameNumber, 30);
        CMTime presentTime=CMTimeAdd(lastTime, frameTime);

        if (*frameNumber == 0) {presentTime = CMTimeMake(0, 30);}//600
        // This ensures the first frame starts at 0.

        // Give the Image to the AVAssetWriter to add to your video
        [adaptor appendPixelBuffer:buffer withPresentationTime:presentTime];

        *frameNumber=*frameNumber+1;
    }
}

Я вызываю этот метод в цикле и даю в каждом прогоне изображение, которое должно быть записано в один из четырех файлов mp4. Последний с именем AVAssetWriterInput получает изображение, но файл остается пустым. Если я изменяю порядок вызовов, всегда последний вызываемый AVAssetWriterInput оставляет пустой файл.

Есть какие-нибудь идеи?

0 ответов

Другие вопросы по тегам