8

録画中にデバイスのさまざまなカメラからビデオを録画できるアプリケーションを作成しようとしています。例えば。ユーザーは前面カメラからボタン「録画開始」を押し、5 秒後にユーザーは「カメラの切り替え」ボタンを押し、アプリケーションはビデオソースを前面カメラから背面カメラに変更し、録画を続行します。カメラの切り替えには、次のコードを使用します。

NSError *error;
AVCaptureDeviceInput *newVideoInput;
AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position];

if (currentCameraPosition == AVCaptureDevicePositionBack)
{
    currentCameraPosition = AVCaptureDevicePositionFront;
}
else
{
    currentCameraPosition = AVCaptureDevicePositionBack;
}

AVCaptureDevice *backFacingCamera = nil;
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices) 
{
    if ([device position] == currentCameraPosition)
    {
        backFacingCamera = device;
    }
}
newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error];

if (newVideoInput != nil)
{
    [_captureSession beginConfiguration];

    [_captureSession removeInput:videoInput];
    if ([_captureSession canAddInput:newVideoInput])
    {
        [_captureSession addInput:newVideoInput];
        videoInput = newVideoInput;
    }
    else
    {
        [_captureSession addInput:videoInput];
    }
    //captureSession.sessionPreset = oriPreset;
    [_captureSession commitConfiguration];
}

_inputCamera = backFacingCamera;

このアプリケーションの後、ビデオソースを変更して書き込みを続けますが... オーディオ/ビデオが同期していません... 誰でもこの問題を解決できますか?

ありがとうございました。

4

3 に答える 3

1

記録を停止し、切り替えて、再度開始する必要があります。カメラの切り替えはインスタントではありません

n 個のファイルに録音して、後でそれらをつなぎ合わせることができませんか?

個々の AVMutableComposition トラックを使用してから、オーディオ用の可変コンポジションとビデオ用の可変コンポジションを設定してみてください。(「AVMutableComposition を使用して 2 つの m4v ムービー ファイルを結合する - ビデオが結合されない」を参照)

于 2012-12-19T11:17:37.627 に答える