-->

开关后摄像头的音频/视频不同步(Audio/video out of sync after swit

2019-08-04 07:56发布

我尝试创建应用程序,我可以在录制过程记录从设备不同摄像机的视频。 例如。 用户按下按钮从前方照相机“开始记录”,之后由前向后相机和记录继续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;

在此之后器件的应用改变视频SOURSE和继续写下去,不过......音频/视频不同步......任何人可以hehp我解决这个问题?

谢谢。

Answer 1:

你需要停止录制,开关并再次启动它。 相机开关心不是即时AFAIK

不能录制入N档,后来施蒂希在一起?

尝试使用个人AVMutableComposition轨道,然后设置音频和mutablecomposition一个视频。 (见合并两个M4V电影文件使用AVMutableComposition -影片也不会合并 )



Answer 2:

切换拍照的时候,你需要暂停的委托方法缓冲区写:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

您可以检出的开源项目PBJVision



Answer 3:

我有同样的问题,尝试了很多,如果事情,并与一种简单方便的解决方案,没有任何毛刺的工作上来。

问题是,作为@ daij-djan指出的,的会话切换输入需要一点时间,并增加了一些黑色帧输出,然后继续发送帧,就好像它从来没有停止。 据我所知,这是不可能知道有多少帧的影响。 会话时间码不受此影响延迟,所以我们不能用它忽略了一些视频帧。

相反,在以多路摄像机输入一个会议上,你可以为每个摄像机输入一个会话(+一个,如果你需要它的音频)和一个视频输出。 然后,你只需要切换会话之间的这种输出。

因此,你不会有任何不同步,没有丑陋的黑客攻击的事情。 内存影响在我的测试很有限,我没有发现任何性能影响。 我的理论是,一个会话处于非活动状态,直到它有附加的输出。



文章来源: Audio/video out of sync after switch camera